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

在R语言数据框中按组绘制带均值与标准差的箱线图

实现带均值和标准差误差线的箱线图

你可以通过在箱线图上叠加均值点和标准差误差线来实现需求,以下是基于R语言ggplot2包的具体方案:

步骤1:准备数据(或使用你的自有数据)

先构造一份示例数据,包含一个两水平的因子变量和对应的数值变量:

set.seed(123) # 设置随机种子保证结果可重复
data <- data.frame(
  Group = rep(c("水平1", "水平2"), each = 50),
  Value = c(rnorm(50, mean = 10, sd = 2), rnorm(50, mean = 15, sd = 3))
)

步骤2:计算各分组的均值和标准差

使用dplyr包快速统计每个因子水平的均值和标准差:

library(dplyr)
summary_stats <- data %>%
  group_by(Group) %>%
  summarize(
    mean_val = mean(Value),
    sd_val = sd(Value)
  )

如果你不想依赖dplyr,可以用基础R的aggregate函数替代:

summary_stats <- aggregate(Value ~ Group, data, function(x) c(mean = mean(x), sd = sd(x)))
summary_stats <- do.call(data.frame, summary_stats)
colnames(summary_stats)[2:3] <- c("mean_val", "sd_val")

步骤3:绘制带误差线的箱线图

用ggplot2先绘制箱线图展示数据分布,再叠加均值点和标准差误差线:

library(ggplot2)

ggplot(data, aes(x = Group, y = Value)) +
  # 绘制箱线图
  geom_boxplot(width = 0.5, fill = "lightblue", alpha = 0.7) +
  # 叠加均值点(红色菱形标记)
  geom_point(data = summary_stats, aes(y = mean_val), 
             color = "red", size = 3, shape = 18) +
  # 叠加标准差误差线
  geom_errorbar(data = summary_stats, 
                aes(ymin = mean_val - sd_val, ymax = mean_val + sd_val),
                width = 0.2, color = "red", linewidth = 1) +
  # 设置图表标签
  labs(title = "带均值和标准差误差线的箱线图",
       x = "因子水平", y = "数值") +
  # 使用简洁主题
  theme_minimal()

效果说明

  • 箱线图展示了每个因子水平下数据的四分位数、中位数和异常值分布
  • 红色菱形点代表对应分组的均值
  • 红色短线是±1倍标准差的误差范围

内容的提问来源于stack exchange,提问作者shep Zhang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 22:08:13