繁体   English   中英

如何在R中的Boxplot中绘制平均值和标准误差

[英]How to plot mean and standard error in Boxplot in R

我有两个分类因素('Habitat'和'Locality')和一个连续变量(T)。 'Habitat'有两个级别,'Locality'有八个级别。 我想更改默认胡须来代表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')

首先编写一个计算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)

在此输入图像描述

我希望它是可能的,但也可以设置一个红色八角形的交通标志,并说“提前加速限制”,我希望两者都会让人感到困惑。 箱线图具有零件所代表的标准定义。 当用户看到一个盒子图时,他们不应该通过额外的心理体操来重新思考不同部分的含义。 如果您不想表示这些标准摘要,为什么不使用不同的表示。 geom_crossbargeom_errorbar函数/ geoms可能更适合您的显示(并且可能比尝试修改boxplot geom更容易使用)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM