2

我正在尝试按小时(整数)绘制班次数据,按每天工作的 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 小时变量。

我将如何完成此订购?

4

2 回答 2

2

不确定我是否完全理解,但如果你在 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()

在此处输入图像描述

于 2017-12-22T17:54:04.043 回答
1
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()

你只需要反转水平。

在此处输入图像描述

于 2017-12-22T17:54:48.400 回答