微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ggplot2 将滚动平均值的标准偏差添加到散点图

如何解决ggplot2 将滚动平均值的标准偏差添加到散点图

我正在努力将滚动平均值的标准偏差映射到散点图上。 R 非常新,使用 ggplot2 并成功绘制了原始数据和移动平均线,但很难增加标准偏差。有什么建议吗?谢谢

    Mar<- ggplot(NG_data2,mapping = aes(x = Varve,y = aragonite))+
      geom_line(size = 1,colour = "black")+
      geom_ma(mapping = NULL,data = NG_data2,position = "identity",show.legend = NA,inherit.aes = TRUE,ma_fun = SMA,n = 30,wilder = FALSE,ratio = NULL,v = 1,wts = 3,colour = "red")

解决方法

我不知道目前是否有可能从 tidyquant 获得标准偏差,但应该可以通过其他方式计算这些,并将它们输入 ggplot。例如,可以使用 slider 包和 dplyr 像这样计算滚动平均值和标准差:

library(dplyr); library(slider); library(lubridate)

#storms is a dataset that comes with dplyr. Here I grab a piece from one storm:
storms[storms$name == "Frederic",1:10] %>%

  # here I use lubridate::ymd to create timestamps combining a few columns; 
  #  won't be needed if your data already has a date column
  mutate(time = ymd_h(paste(year,month,day,hour))) %>%

  # here's the guts: slider::slide_inded_dbl takes a variable,an indexing
  #  column (time here),a function (mean or sd),and an index window
  mutate(ma = slide_index_dbl(wind,time,mean,.before = days(2)),sd = slide_index_dbl(wind,sd,.before = days(2))) %>%

  ggplot(aes(x = time,y = wind)) +
  geom_line() +
  geom_line(aes(y = ma),lty = "dotted") +
  geom_ribbon(aes(ymin = ma - sd,ymax = ma + sd),alpha = 0.1)

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。