【问题标题】:Displaying separate means within fill groups in ggplot boxplot在ggplot boxplot的填充组中显示单独的平均值
【发布时间】:2016-07-06 02:49:43
【问题描述】:

我有一个使用 3 个类别的数据的分组箱线图。一个类别设置为箱线图的 x 轴,另一个设置为填充,最后一个设置为分面类别。我想显示每个填充组的均值,但使用 stat_summary 只会给我 x 轴类别的均值,而不会分离填充的均值:

这是当前代码:

demoplot<-ggplot(demo,aes(x=variable,y=value))
demoplot+geom_boxplot(aes(fill=category2),position=position_dodge(.9))+
stat_summary(fun.y=mean, colour="black", geom="point", shape=18, size=4,) +
facet_wrap(~category1)

有没有什么方法可以显示每个类别的平均值,而无需手动计算和绘制点?调整位置闪避并没有真正帮助,因为它只是一个计算平均值。是否建议在 mean() 函数中创建条件?

For anyone interested, here's the data:

感谢您对此的任何启发。

【问题讨论】:

标签: r plot ggplot2 boxplot


【解决方案1】:

ggplot 需要在这里有关于分组的明确信息。您可以通过在所需层中使用aes(group=....) 或将fill=... 移动到对ggplot 的主调用来做到这一点。如果没有对图层进行显式分组,ggplot 将按 x 轴上的因子进行分组。下面是一些带有假数据的示例代码:

library(ggplot2)
set.seed(123)

nobs <- 1000
dat <- data.frame(var1=sample(LETTERS[1:3],nobs, T),
                  var2=sample(LETTERS[1:2],nobs,T),
                  var3=sample(LETTERS[1:3],nobs,T),
                  y=rnorm(nobs))

p1 <- ggplot(dat, aes(x=var1, y=y)) +
  geom_boxplot(aes(fill=var2), position=position_dodge(.9)) +
  facet_wrap(~var3) +
  stat_summary(fun.y=mean, geom="point", aes(group=var2), position=position_dodge(.9), 
               color="black", size=4)

【讨论】:

  • 太棒了,@Heroka!所以关键是添加aes(group=category2)并匹配position_dodge的宽度。谢谢,这工作得很好! :)
猜你喜欢
  • 2018-05-12
  • 1970-01-01
  • 2012-08-31
  • 2020-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多