如何在CO2数据箱线图中显示均值及标准差(mean±SD)
解决方案
要在箱线图中展示mean(±SD),需要先按Type分组计算均值和标准差,将二者格式化为指定字符串标签后,再添加到图中。以下是修改后的完整实现:
完整代码
# 加载依赖包 library(ggpubr) library(dplyr) # 分组计算均值、标准差,并生成mean(±SD)格式的标签 summary_stats <- CO2 %>% group_by(Type) %>% summarise( mean_conc = mean(conc), sd_conc = sd(conc) ) %>% mutate(label = sprintf("%.2f(±%.2f)", mean_conc, sd_conc)) # 绘制箱线图并添加标签 ggboxplot(CO2, x = "Type", y = "conc", color = "Type", palette = "jco", add = "jitter") + # 添加均值±SD标签,y轴偏移量可根据数据调整 geom_text(data = summary_stats, aes(label = label, y = mean_conc + 15), color = "black", size = 4) + stat_summary(fun.y = mean, colour = "darkred", geom = "point", shape = 18, size = 3, show.legend = FALSE) + stat_compare_means(method = "t.test")
关键细节说明
- 若不想使用
dplyr,可以用基础R的aggregate()实现统计量计算:
summary_stats <- aggregate(conc ~ Type, CO2, function(x) c(mean = mean(x), sd = sd(x))) summary_stats <- do.call(data.frame, summary_stats) summary_stats$label <- sprintf("%.2f(±%.2f)", summary_stats$conc.mean, summary_stats$conc.sd)
sprintf("%.2f(±%.2f)", ...)用于将数值格式化为保留两位小数的mean(±SD)字符串;geom_text的y参数(示例中为mean_conc + 15)可根据你的数据分布调整,避免标签与图中元素重叠;- 原代码中的
show_guide = FALSE已替换为新版ggplot2支持的show.legend = FALSE,避免版本兼容警告。
内容的提问来源于stack exchange,提问作者Vijay Talla
相关产品推荐
相关产品推荐

