突出显示时间序列中的绘图区域

Highlight plot area in time series

我绘制了我的 xts 时间序列如下:

library(xts)
data(sample_matrix)
prices <- as.xts(sample_matrix)[,"Close"]
pw_returns <- diff(log(prices))
plot(pw_returns, main="", col="darkblue", lwd=1)

我想突出显示波动率集群,如下图所示:

有人知道如何在 R 中做到这一点吗?

您可以使用 addPolygon() 执行此操作。这将有助于创建一个包含阴影区域上下边界的中间对象。

nr <- nrow(pw_returns)
shade <- cbind(upper = rep(1, nr), lower = rep(-1, nr))
shade <- xts(shade, index(pw_returns))

现在我们可以为我们想要的任何时期绘制和添加阴影区域。确保设置 on = -1 以绘制阴影区域 主图之后。

# main plot
plot(pw_returns, main = "", col = "darkblue", lwd = 1)
# add shaded region to February, 2007
addPolygon(shade["2007-02"], col = "lightpink", on = -1)