由于您已经复制了数据,并且您想要绘制均值/CL,您可能最好使用stat_summary(...),它是为(您猜对了)汇总数据而设计的。基本上,它将一个函数应用于每个 x 值的所有 y 值(例如,mean(...) 函数),然后使用您指定的任何几何图形绘制结果。这是一个例子:
# sample data - should be provided in question
set.seed(1) # for reproducible example
time <- 1:25
df <- data.frame(time,
pop=rnorm(100*length(time), mean=10*time/(25+time)))
library(ggplot2)
ggplot(df, aes(x=time, y=pop))+
stat_summary(geom="ribbon", fun.data=mean_cl_normal, width=0.1, conf.int=0.95, fill="lightblue")+
stat_summary(geom="line", fun.y=mean, linetype="dashed")+
stat_summary(geom="point", fun.y=mean, color="red")
所以这里我们有 3 层:使用mean(...) 函数汇总 y 值的层,使用 geom="line" 绘制的层,使用相同方式总结但使用 geom="point" 绘制的层,以及使用 geom="point" 绘制的层使用geom="ribbon" 这个geom 需要ymin 和ymax 美学,所以我们使用内置的ggplot 函数mean_cl_normal 来生成那些基于错误是正态分布的假设,因此,方法遵循a t-分布。键入 ?hmisc 以获取有关对置信限有用的各种函数的文档。图层按代码顺序渲染,所以,既然要着色,我们需要先放错误功能区。
最后,当然可以自己总结数据,使用dplyr或类似的东西,但我真的不明白这样做的意义。
更新(基于最近的评论):
看起来ggplot2 (2.0.0) 的最新版本以不同的方式指定fun.data 的参数。这适用于新版本:
ggplot(df, aes(x=time, y=pop))+
stat_summary(geom="ribbon", fun.data=mean_cl_normal,
fun.args=list(conf.int=0.95), fill="lightblue")+
stat_summary(geom="line", fun.y=mean, linetype="dashed")+
stat_summary(geom="point", fun.y=mean, color="red")
我认为width=... 参数的问题有点微妙:实际上不需要它(在原始答案中,我使用了错误栏,当我将其更改为功能区时忘记删除此参数)。旧版本的 ggplot2 忽略了无关的参数(因此没有错误)。显然,新版本更加严格。可能这样更好。