基于ggplot R,根据年份更改面板背景颜色

5

我正在为2013年、2014年和2015年三个不同的年份绘制时间序列。

require(quantmod)
require(ggplot2)
getSymbols("AAPL", from='2013-01-1')
aapl.df = data.frame(date=time(AAPL), coredata(AAPL.Close))
ggplot(data=aapl.df, aes(x=date, y=AAPL.Close, group=1))+geom_line()

我该如何使用ggplot绘制收盘价图表,使得每年在图表上都有不同的背景颜色块?


分离背景颜色有什么原因吗?为什么不直接对线图进行颜色编码呢? - Bahae Omid
我也可以使用 p + geom_vline(xintercept=as.numeric(c(df$date[50],df$date[75],df$date[100])) 在我想要的位置放置垂直线,但我想找出另一种选项。 - Rhodo
1个回答

5
我们可以使用 geom_rect 来分隔背景。
ggplot()+
  geom_rect(aes(xmin = as.Date("2015-01-01"),
            xmax = as.Date("2015-12-31"),
                ymin = -Inf, ymax = Inf, fill = '2015'), alpha = .2)+
  geom_rect(aes(xmin = as.Date("2014-01-01"),
            xmax = as.Date("2014-12-31"),
                ymin = -Inf, ymax = Inf, fill = '2014'), alpha = .2)+
  geom_rect(aes(xmin = as.Date("2013-01-01"),
            xmax = as.Date("2013-12-31"),
                ymin = -Inf, ymax = Inf,fill = '2013'), alpha = .2)+
  geom_line(data=subset(aapl.df, date < '2016-01-01'),
            aes(x=date, y=AAPL.Close, group=1))+
  scale_fill_brewer(palette = 'Dark2', name = 'Year')+
  theme_bw()

enter image description here

这个解决方案中使用了几篇文章的内容:geom_rect和alpha以及使用geom_rect添加经济衰退期

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接