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