r - 使用ggplot2绘制每个x值的数据集的平均值和sd

标签 r ggplot2

我有一个看起来像这样的数据集:

a <- data.frame(x=rep(c(1,2,3,5,7,10,15,20), 5),
                y=rnorm(40, sd=2) + rep(c(4,3.5,3,2.5,2,1.5,1,0.5), 5))
ggplot(a, aes(x=x,y=y)) + geom_point() +geom_smooth()

我想要与该图相同的输出,但是我只想取每组x值的均值/sd值之间的线段,而不是平滑的曲线。该图应与上面的图相似,但呈锯齿状,而不是弯曲的。

我试过了,但是即使x值不是唯一的,它也失败了:
ggplot(a, aes(x=x,y=y)) + geom_point() +stat_smooth(aes(group=x, y=y, x=x))
geom_smooth: Only one unique x value each group.Maybe you want aes(group = 1)?

最佳答案

您可以尝试按照网站上Hadley Wickham的建议为ggplot2:http://had.co.nz/ggplot2/stat_summary.html编写摘要功能。将他的建议应用于您的代码:

p <- qplot(x, y, data=a)

stat_sum_df <- function(fun, geom="crossbar", ...) { 
 stat_summary(fun.data=fun, colour="blue", geom=geom, width=0.2, ...) 
} 

p + stat_sum_df("mean_cl_normal", geom = "smooth") 

结果如下图所示:

关于r - 使用ggplot2绘制每个x值的数据集的平均值和sd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12033319/

相关文章:

r - 结合使用 ggplot 和 ggmap 制作的 choropleth

r - ggplot 图例顺序不匹配

r - 如何使用 data.table 按日期(月、年、日)和子组汇总结果

r - 访问一个月的第一个工作日

r - 仅适用于数据集列的特定数字的科学记数法

r - 如何在 ggplot2 中制作多重条形图?

r - 具有独立轴 R 的背靠背条形图

r - 下载文件时出现权限被拒绝错误

r - 在一个 ggplot() 中生成多个 ggplot 图形

r - ggplot2 分类 x 轴的不同刻面宽度