我不知道如何定义平均值的下限和上限,以here或here所示的方式在ggplot中绘制平均值。
我的数据框如下:
> data
scenario decade FutureRangeSize.FullDisp
38 rcp85 2060 85847
1 rcp45 2020 376997
75 rcp85 2100 6328
42 rcp45 2060 68878
54 rcp85 2060 44859
37 rcp45 2060 70499
13 rcp85 2020 192015
80 rcp85 2060 1571
48 rcp45 2100 61264
26 rcp85 2020 123585
49 rcp85 2100 72115
58 rcp85 2060 32498
52 rcp45 2060 52573
19 rcp85 2020 139007
61 rcp85 2060 17571
36 rcp45 2100 85076
27 rcp45 2060 234809
84 rcp85 2100 123
44 rcp85 2020 52735
71 rcp45 2100 8967
因此,有两个场景(rcp45,rcp85)和几十年,范围从2020年到2100年。我想分别为每个场景每个十年做一个平均值,并在一个图中将下限和上限绘制为阴影区域。
任何人都可以提供一个有效的示例来做到这一点吗?
答案 0 :(得分:1)
您可以从简单的tidyverse
library(tidyverse)
d %>%
group_by(scenario, decade) %>%
summarise_at(vars(FutureRangeSize.FullDisp), funs(Mean=mean, Sd=sd)) %>%
mutate(Sd=ifelse(is.na(Sd),0,Sd)) %>%
ggplot(aes(x=decade, y=Mean, color=scenario, fill=scenario)) +
geom_point() +
geom_ribbon(aes(ymin = Mean - Sd, ymax= Mean + Sd), alpha=0.2)
或者尝试按照here所述的stat_summary
方法
ggplot(d, aes(x=decade,y=FutureRangeSize.FullDisp, color=scenario)) +
geom_point() +
stat_summary(fun.data = 'mean_sdl', geom = 'smooth', alpha=0.2)