【问题标题】:How to plot mean and standard error in Boxplot in R如何在 R 中的 Boxplot 中绘制均值和标准误差
【发布时间】:2014-11-17 22:19:21
【问题描述】:

我有两个分类因素(“栖息地”和“地点”)和一个连续变量 (T)。 “栖息地”有两个层次,“地方”有八个层次。我想更改默认胡须以表示 SE,并将中值更改为每个箱线图的平均值。有没有办法做到这一点,并在绘图时考虑这两个分类因素?提前谢谢了。

这是我对 boxplot ggplot 的默认设置所做的,显示了具有中值间隔的第一和第三四分位数。

ggplot(data,aes(x=Locality,y=T)) + 
  geom_boxplot(aes(fill=interaction(Habitat,Locality), 
                   group=interaction(factor(Habitat),Locality)),
               outlier.shape=1,outlier.size=3) + 
  theme_bw() + 
  theme(
    panel.grid.major=element_blank(),
    panel.grid.minor=element_blank(),
    axis.line=element_line(colour='black'),
    legend.position='none',
    axis.text.x=element_text(angle=90,hjust=1,size=12)) + 
  scale_y_continuous('T') + 
  xlab('Locality')

【问题讨论】:

    标签: r ggplot2 mean boxplot standard-error


    【解决方案1】:

    首先编写一个函数来计算 min、mean-1SEM、mean、mean+1SEM 和 Max。然后使用stat_summary 将这 5 个值映射到箱线图上。

    library(gridExtra)
    library(ggplot2)
    
    MinMeanSEMMax <- function(x) {
      v <- c(min(x), mean(x) - sd(x)/sqrt(length(x)), mean(x), mean(x) + sd(x)/sqrt(length(x)), max(x))
      names(v) <- c("ymin", "lower", "middle", "upper", "ymax")
      v
    }
    
    g1 <- ggplot(mtcars, aes(factor(am), mpg)) + geom_boxplot() +
      ggtitle("Regular Boxplot")
    
    g2 <- ggplot(mtcars, aes(factor(am), mpg)) +
      stat_summary(fun.data=MinMeanSEMMax, geom="boxplot", colour="red") + 
      ggtitle("Boxplot: Min, Mean-1SEM, Mean, Mean+1SEM, Max")
    
    
    grid.arrange(g1, g2, ncol=2)
    

    【讨论】:

    • 很好的答案,谢谢。你将如何做同样的事情,但有子组?例如,如果您的 x 轴上有 0A、0B、1A 和 1B?
    【解决方案2】:

    我希望这是可能的,但也可以放置一个红色八角形的交通标志,上面写着“前方限速提高”,我希望这两者都会更令人困惑,这很有帮助。箱线图对部件所代表的内容有一个标准定义。当用户看到箱线图时,他们不应该通过额外的心理体操来重新思考不同部分的含义。如果您不想表示这些标准摘要,为什么不使用不同的表示。 geom_crossbargeom_errorbar 函数/几何图形可能更适合您的显示(并且可能比尝试修改箱线图几何图形更易于使用)。

    【讨论】:

      最近更新 更多