R [ggplot2]:在时间序列上绘制布尔变量的状态

时间:2017-07-19 00:56:50

标签: r ggplot2

我有一个数据框,包含日期字段(POSIXct),连续数字字段和布尔字段。

我已将连续变量绘制在日期字段上作为时间序列。

现在,我想绘制布尔变量的状态,以便布尔变量为TRUE的区间将由半透明矩形突出显示。有没有合理的方法在ggplot2中执行此操作?

请参阅下面的链接图片,例如我想要的情节。

https://i.stack.imgur.com/Lfic5.png

1 个答案:

答案 0 :(得分:1)

最简单的方法是geom_tile带有height = Inf参数。如果您希望矩形在x值上开始和停止,而不是以它们为中心,则可以使用类似geom_tile(aes(x+0.5, y, ...))的内容。当然,图例和标签可以根据自己的喜好进行修改。

df <- data.frame(y = cumsum(rnorm(30)),
                 x = 1:30,
                 bool = sample(c(T, F), 30, replace = T))

  ggplot(df, aes(x, y)) + 
  geom_line() + 
  geom_tile(aes(width = 1, height = Inf, fill = bool), alpha = 0.5) +
  scale_fill_manual(values = c(NA, "blue")) +
  theme_minimal()

enter image description here