使用 ggplot2 从 Zoo 时间序列绘制多边形

Drawing polygons from a Zoo time series using ggplot2

我有一个带有置信带的降雨预测的动物园时间序列,我想使用 ggplot2

绘制它们
my.zoo.ts = zoo(matrix(c(0.000000, 5.569306, 7.302467, 0.000000, 0.000000, 5.964339, 8.000200, 
                     0.000000, 0.000000, 5.174273, 6.604734, 0.000000, 0.000000, 5.705250,
                     7.542581, 0.000000, 0.000000, 5.433362, 7.062354, 0.000000),nrow=4),
            c("2012-07-05 19:00:00 BST", "2012-07-05 19:30:00 BST", 
              "2012-07-05 20:00:00 BST", "2012-07-05 20:30:00 BST"))

colnames(my.zoo.ts) = c("pred","CI95up","CI95low","CI50up","CI50low")

我使用基本的 plot 函数和 polygon 制作了下面的图

但我完全切换到 ggplot2 并想制作类似的东西。我尝试了以下

autoplot(my.zoo.ts, facet = NULL)

这给出了

但我不知道如何从这里开始,因为我是 ggplot2 的新手。任何帮助表示赞赏。谢谢

首先,我将其设为标准数据框,使用 dplyr:

library(dplyr)
z <- my.zoo.ts %>% as.data.frame %>%
                   add_rownames("date")

现在我们可以绘图了,使用 geom_ribbon:

ggplot(z, aes(x=date, y=pred, group = 1)) +
    geom_line() +
    geom_ribbon(aes(ymax = CI50up, ymin = CI50low), fill = 1, alpha = 0.2) +
    geom_ribbon(aes(ymax = CI95up, ymin = CI95low), fill = 2, alpha = 0.2)

您可以使用填充来改变颜色,使用 alpha 来改变透明度。