簡體   English   中英

連續y軸值的ggplot更改順序

[英]ggplot change order of continuous y axis values

我試圖按小時(整數)繪制按天(整數)繪制的移位數據,按3個工作日(8-16、16-24、24-8)分別按天作為x軸。 我的小時數是24小時格式,我不想按數字順序(0-24)而是按班次順序(8-16、16-24、24-8)來繪制它們。

這是創建數據並繪制圖的代碼。 我想將0-8塊放在16-24塊之上。

set.seed(123)
Hour = sample(0:24, 500, replace=T)
Day = sample(0:1, 500, replace=T)

dat <- as.tibble(cbind(Hour, Day)) %>%
        mutate(Day = factor(ifelse(Day == 0, "Mon", "Tues")),
               Shift = cut(Hour, 3, labels = c("0-8", "8-16", "16-24")),
               Exposure = factor(sample(0:1, 500, replace=T)))

ggplot(dat, aes(x = Day, y = Hour)) +
        geom_jitter(aes(color = Exposure, shape = Exposure)) + 
        geom_hline(yintercept = 8) + 
        geom_hline(yintercept = 16) + 
        theme_classic()

當前情節

在此處輸入圖片說明

這是一個有趣的問題,我嘗試按照我想要的順序重新編碼一個新的小時變量,但是我不確定如何繪制它以顯示標准的24小時變量。

我將如何完成此訂購?

不知道我是否完全理解,但是如果您在Shift列中對表進行分面,它應該做您想要的。 首先,必須將Shift列分解為指定的順序:


dat$Shift <- factor(dat$Shift, levels = c("0-8", "16-24", "8-16"))

ggplot(dat, aes(x = Day, y = Hour)) +
  geom_jitter(aes(color = Exposure, shape = Exposure)) + 
  facet_grid(Shift ~ ., scales = "free") +
  theme_classic()

在此處輸入圖片說明

set.seed(123)
Hour = sample(0:24, 500, replace=T)
Day = sample(0:1, 500, replace=T)

dat <- as.tibble(cbind(Hour, Day)) %>%
  mutate(Day = factor(ifelse(Day == 0, "Mon", "Tues")),
         Shift = cut(Hour, 3, labels = c("0-8", "8-16", "16-24")),
         Exposure = factor(sample(0:1, 500, replace=T)))

dat$Shift <- factor(dat$Shift, levels=rev(levels(dat$Shift)))

ggplot(dat, aes(x = Day, y = Shift)) +
  geom_jitter(aes(color = Exposure, shape = Exposure)) + 
  geom_hline(yintercept = 8) + 
  geom_hline(yintercept = 16) + 
  theme_classic()

您只需要反轉級別。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM