You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 11:55:20