我有一个“时间序列”,对同一个人定期采取不同的措施。 我想在同一张图表上用图形表示这些时间序列中的2个(没问题),并添加一个取决于第三个因素的背景。
这是我所做的事情的可复制示例:
df <- data.frame(
x = seq(1, 20),
y = sample(c(1:10), 20, replace = TRUE),
z = sample(c(1:10), 20, replace = TRUE),
w = sample(c("yes", "no"), 20, replace = TRUE)
)
ggplot(df) +
geom_line(aes(x = x, y = y), color = 'darkorange') +
geom_line(aes(x = x, y = z), color = 'royalblue') +
geom_raster(aes(x = x, y = 5, fill = w, alpha = w)) +
scale_alpha_ordinal(range = c(0, 0.8)) +
scale_fill_manual(values = c("gray32", "gray32"))
除了我希望栅格覆盖整个y轴窗口之外,这几乎给了我想要的一切。
有什么主意吗?
谢谢!
答案 0 :(得分:0)
我认为在这里使用geom_rect最简单:
ggplot(df) +
geom_line(aes(x = x, y = y), color = 'darkorange') +
geom_line(aes(x = x, y = z), color = 'royalblue') +
geom_rect(aes(xmin = x - 0.5, xmax = x + 0.5,
ymin = -Inf, ymax = Inf, fill = w, alpha = w)) +
scale_alpha_ordinal(range = c(0, 0.8)) +
scale_fill_manual(values = c("gray32", "gray32"))
使用geom_tile
和geom_raster
也是可能的,但是如果我不喜欢coord_cartesian
,就无法获得覆盖整个垂直空间的范围。