如何将 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 创建
我正在绘制 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 创建