连接意味着在带有线的箱线图上(ggplot2)

nix*_*box 20 r ggplot2 boxplot

我有一个显示多个盒子的箱线图.我想连接每个盒子的平均值和一条线.箱形图默认不显示均值,而中间线仅表示中位数.我试过了

ggplot(data, aes(x=xData, y=yData, group=g)) 
    + geom_boxplot() 
    + stat_summary(fun.y=mean, geom="line")
Run Code Online (Sandbox Code Playgroud)

这不起作用.

有趣的是,干嘛

stat_summary(fun.y=mean, geom="point") 
Run Code Online (Sandbox Code Playgroud)

绘制每个框中的中间点.为什么"排队"不起作用?

这样的东西,但使用ggplot2,http://www.aliquote.org/articles/tech/RMB/c4_sols/plot45.png

Ber*_*iss 31

那是你在找什么?

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.y=mean, geom="line", aes(group=1))  + 
stat_summary(fun.y=mean, geom="point")
Run Code Online (Sandbox Code Playgroud)

更新:

关于设置组的一些澄清= 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)符合所有男孩的最佳拟合线."

  • 是的!谢谢,但是群组= 1是什么意思? (3认同)