那是你要找的吗?
library(ggplot2)
x <- factor(rep(1:10, 100))
y <- rnorm(1000)
df <- data.frame(x=x, y=y)
ggplot(df, aes(x=x, y=y)) +
geom_boxplot() +
stat_summary(fun=mean, geom="line", aes(group=1)) +
stat_summary(fun=mean, geom="point")
更新:
关于设置 group=1 的一些说明:我认为我在 Hadley Wickham 的书“ ggplot2:用于数据分析的优雅图形”中找到了解释。在第 51 页,他写道:
不同层上的不同组。
有时我们想根据不同的聚合级别绘制摘要。不同的层可能具有不同的组美学,因此一些显示单个级别的数据,而另一些显示更大组的摘要。
在上一个示例的基础上,假设我们要根据所有男孩的年龄和身高向刚刚创建的绘图添加一条平滑线。如果我们对平滑线使用相同的分组,我们会得到图 4.4 中的第一个图。
p + geom_smooth(aes(group = Subject), method="lm", se = F)
这不是我们想要的;我们无意中为每个男孩添加了一条平滑线。这个新层需要一个不同的组美学,group = 1,这样新的线将基于所有数据,如图中的第二个图所示。修改后的图层如下所示:
p + geom_smooth(aes(group = 1), method="lm", size = 2, se = F)
[...] 在平滑层中使用 aes(group = 1) 适合所有男孩的最佳拟合单线。”