如何将 geom_rect 添加到 geom_line 图

How to add geom_rect to geom_line plot

我正在绘制 returns 的时间序列,并且想使用 NBER 衰退约会来遮蔽衰退,就像 FRED 图一样。

衰退变量在同一数据框中,是一个 1、0 变量:1 = 衰退,0 = 扩张。

我们的想法是使用 geom_rect 和 alpha = (Recession == 1) 来遮蔽 Recession == 1 的区域。

gg_plot 的代码如下。感谢您的帮助!

ERVALUEplot <- ggplot(data = Alldata)+
  geom_line(aes(x = Date, y = ERVALUE), color = 'red')+ 
  geom_rect(aes(x = Date, alpha = (Alldata$Recession ==1)), color = 'grey')

我认为使用 geom_tile() 而不是 geom_rect() 可能会稍微简化您的案例。输出是相同的,但参数化更容易。

我假设您的数据具有大致如下的结构:

library(ggplot2)
set.seed(2)

Alldata <- data.frame(
  Date = Sys.Date() + 1:10,
  ERVALUE = cumsum(rnorm(10)),
  Recession = sample(c(0, 1), 10, replace = TRUE)
)

利用这些数据,我们可以在任何地方制作灰色矩形 recession == 1,如下所示。在这里,我将其映射到一个比例尺以自动生成图例。

ggplot(Alldata, aes(Date)) +
  geom_tile(aes(alpha = Recession, y = 1), 
            fill = "grey", height = Inf) +
  geom_line(aes(y = ERVALUE), colour = "red") +
  scale_alpha_continuous(range = c(0, 1), breaks = c(0, 1))

reprex package (v1.0.0)

于 2021-08-25 创建