以前有一些关于如何使用geom_rect()在ggplot2中制作阴影区域的帖子,但它们都没有帮助以编程方式跨构面创建这些阴影区域。对于希望在面板数据中绘制特定单位时段的人来说,对我的问题的一个很好的答案将是非常强大和有用的。
我能找到的最近的ggplot2示例就是这里,它显示了经济时间序列图中经济衰退的阴影区域,但是我无法使用facet_wrap使这个策略有效。
我想制作完全these种阴影区域,但只要一个单位的虚拟对象等于0(或1),就可以在整个构面上进行编程。
下面是使用facet_wrap()在ggplot2中绘制的面板数据的可重现示例。单位坚固,时间是一年。数据有一个名为“dummy”的虚拟变量。 我的问题是:如何为一个国家的“虚拟”等于0的单位特定时期创建阴影区域。暗示,这意味着当国家的虚拟等于1时显示无阴影区域。 /强>
非常感谢任何帮助
require(plm)
data("Grunfeld", package="plm")
set.seed(888)
Grunfeld$dummy<-rbinom(200,1,prob=.3)
require(reshape2)
dfm <- melt(Grunfeld, id.vars=c("firm","year"))
require(ggplot2)
ggplot(dfm) +
geom_line(aes(x=year, y=value, linetype=variable, colour=variable)) +
theme_bw() +
facet_wrap( ~ firm)
答案 0 :(得分:2)
您可以使用geom_rect()
和未融合的Grunfeld
数据框执行此操作。将ymax
设置为Inf
和ymin
设置为-Inf
会使阴影区域从上到下延伸。您还需要定义xmin
和xmax
,这很容易,因为每年都有一行。
ggplot(dfm) +
geom_rect(data = subset(Grunfeld, dummy == 0),
aes(ymin = -Inf, ymax = Inf, xmin = year-0.5, xmax = year+0.5),
alpha = 0.2)+
geom_line(aes(x=year, y=value, linetype=variable, colour=variable)) +
theme_bw() +
facet_wrap( ~ firm)