如何使用geom_smooth在geom_line上添加与均值的偏差?

时间:2017-08-01 09:23:50

标签: r ggplot2 time-series

是否可以在geom_line上添加一个带平均距离绝对值的平滑带?

我有一个像这样的矩阵:

                   mean       Date            abs(mean-observed_value)
1                  0.2955319   2015-08-04        1.167321e-02
2                  0.2802859   2015-08-12        7.537708e-03
3                  0.2671653   2015-08-20        2.074987e-03
4                  0.2552016   2015-08-28        4.883826e-03
5                  0.2554279   2015-09-05        4.419968e-03

在abs(mean-observed_value)列上有许多时间序列,每个时间序列有54个观察值,日期和平均值就像这些组一样,每54行重复一次。我正在绘制所有时间序列(使用正确的value,如下所示:

p<-ggplot() +
  geom_line(data = y_m, aes(x = Date, y = value, group = variable), color="steelblue", size =0.1) 
p + geom_line(data =y_mean, aes(x = Date, y = as.numeric(df.ts_mean)), color=1, size =2) + ylab("EVI")

enter image description here

但现在有了偏差,我想把它们描绘成一个平滑的乐队。像这样的东西: enter image description here

我会很感激任何可能的解决方案!非常感谢!

1 个答案:

答案 0 :(得分:1)

您可以使用geom_ribbon包中的ggplot2(),其中您可以设置yminymax值(在您的情况下,它将是 abs 列),这是一个示例代码:

library(ggplot2)
huron <- data.frame(year = 1875:1972, level = as.vector(LakeHuron))
h <- ggplot(huron, aes(year))
h + geom_ribbon(aes(ymin = level - 1, ymax = level + 1), fill = "grey70") + 
  geom_line(aes(y = level))

请将未来的样本后数据作为dput()输出,使用起来要容易得多,而不是复制每个值!