plot()中的动态背景基于x轴值?

时间:2013-12-27 04:24:10

标签: r plot

我正在寻求实现EXACTLY this,但使用plot()而不是ggplot2。在博客上甚至有人说他们用情节做了这个回复,但他们代码的链接已经死了。我真的试图做同样的事情。我已经使用quantmod的getSymbols()从FRED下载了数据,并且我将数据放在df中,我正在用plot()绘制。 x轴是日期,我想根据一组特定的日期更改背景颜色。任何想法或提示如何用情节做到这一点?

谢谢!

2 个答案:

答案 0 :(得分:1)

基于这个问题:R: change background color of plot for specific area only (based on x-values)

## plotting area with no axes
plot(unrate.df, type = "n")
lim <- par("usr")
## adding one rectangle
for (i in 1:nrow(recessions.trim)) {
     rect(recessions.trim[i, 1], lim[3], 
          recessions.trim[i, 2], lim[4], border = "pink", col = "pink")
}
## adding the data
lines(unrate.df)
box()

enter image description here

答案 1 :(得分:1)

您可以使用:

plot(unrate.df, type="n")
makeRectangles(recessions.trim, col="pink", alpha=0.5)
lines(unrate.df)
grid()

其中函数makeRectangles定义为:

makeRectangles = function(x, col, alpha=1, border=NA, ...) {

  col = col2rgb(col=col, alpha=FALSE)
  col = rgb(red=col[1], green=col[2], blue=col[3], 
              alpha=floor(255*alpha) , maxColorValue=255)
  rect(x[,1], par("usr")[3], x[,2], par("usr")[4], col=col, border=border, ...)

  return(invisible())
}

theplot