在ggplot boxplot中的填充组中显示单独的平均值

diz*_*irl 7 plot r ggplot2 boxplot

我有一个使用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)
Run Code Online (Sandbox Code Playgroud)

有没有办法显示每个类别2的均值,而无需手动计算和绘制点数?调整位置闪避并没有多大帮助,因为它只是一个计算平均值.是否可以在mean()函数内创建条件?

对于任何感兴趣的人,这里是数据:

感谢对此的任何启示.

Her*_*oka 14

Ggplot需要有关于分组的明确信息.您可以通过aes(group=....)在所需图层中使用a 或将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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述