平均和绘制值时如何定义上下限?

时间:2018-08-28 14:02:44

标签: r ggplot2 plot

我不知道如何定义平均值的下限和上限,以herehere所示的方式在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年。我想分别为每个场景每个十年做一个平均值,并在一个图中将下限和上限绘制为阴影区域。

任何人都可以提供一个有效的示例来做到这一点吗?

1 个答案:

答案 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)

enter image description here

或者尝试按照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)