动态更改ggplot2的背景颜色

时间:2018-03-21 14:27:59

标签: r ggplot2

在R中,假设我有一个与数据长度相同的逻辑向量。我想根据逻辑向量更改ggplot的背景颜色。

在下面的示例中,background_change是逻辑向量。

library(ggplot2)
background_change <- economics$unemploy < 7777
ggplot(economics, aes(date, psavert)) + geom_line()

请注意,这与在stackoverflow上发布的other问题不同,后者会手动更改后台。这对我的申请来说很乏味。

2 个答案:

答案 0 :(得分:4)

不是一个完美的解决方案,但适用于给定的示例。

为每个值生成geom_rect,其颜色由unemploy < 7777定义,坐标xxminxmax(start = end)。

thresholdUnemploy <- 7777
library(ggplot2)
ggplot(economics, aes(date, psavert)) + 
    geom_rect(aes(xmin = date, xmax = date,
                  ymin = -Inf, ymax = Inf,
                  color = unemploy < thresholdUnemploy),
              size = 0.7,
              show.legend = FALSE) +
    geom_line()

enter image description here

为什么这不完美取决于您可能需要调整geom_rect大小的x轴点的密度。

答案 1 :(得分:0)

此答案略有不同,不需要手动调整size参数。这可以通过在xmax参数上添加1个月来实现。

ggplot(economics, aes(date, psavert)) + 
   geom_rect(aes(xmin = date, xmax = date+months(1), 
                 ymin = -Inf, ymax = Inf, 
                 fill = unemploy < 7777), 
                 show.legend = FALSE) +
   geom_line()

enter image description here