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

如何用R-base为双数据框生成的箱线图标注Min、Median、Max

在R-base箱线图中标注最小值、中位数、最大值

步骤1:提取关键统计值

先分别计算两个班级年龄的最小值、中位数、最大值:

# 计算class1的统计指标
class1_stats <- data.frame(
  min = min(class1$Age),
  median = median(class1$Age),
  max = max(class1$Age)
)

# 计算class2的统计指标
class2_stats <- data.frame(
  min = min(class2$Age1),
  median = median(class2$Age1),
  max = max(class2$Age1)
)

步骤2:绘制箱线图并添加标注

绘制基础箱线图后,利用text()函数将统计值标注到对应位置(class1对应x轴位置1,class2对应x轴位置2),同时调整y轴范围避免标注超出图框:

# 绘制箱线图,预留标注空间
boxplot(class1$Age, class2$Age1, names = c("class1", "class2"), 
        ylab= "年龄", xlab= "班级", ylim = c(15, 100))

# 标注class1的统计值
text(x = 1, y = class1_stats$min - 3, labels = paste("min:", class1_stats$min))
text(x = 1, y = class1_stats$median, labels = paste("median:", class1_stats$median))
text(x = 1, y = class1_stats$max + 3, labels = paste("max:", class1_stats$max))

# 标注class2的统计值
text(x = 2, y = class2_stats$min - 3, labels = paste("min:", class2_stats$min))
text(x = 2, y = class2_stats$median, labels = paste("median:", class2_stats$median))
text(x = 2, y = class2_stats$max + 3, labels = paste("max:", class2_stats$max))

完整整合代码

# 创建数据集
Name <- c("Jon", "Bill", "Maria", "Ben", "Tina")
Age <- c(23, 41, 32, 58, 26)
class1 <- data.frame(Name, Age)

Name1 <- c("Suma", "Mia", "Sam", "Jon", "Brian", "Grace", "Julia")
Age1 <- c(33, 21, 56,32,65,32,89)
class2 <- data.frame(Name1, Age1)

# 计算统计指标
class1_stats <- data.frame(
  min = min(class1$Age),
  median = median(class1$Age),
  max = max(class1$Age)
)

class2_stats <- data.frame(
  min = min(class2$Age1),
  median = median(class2$Age1),
  max = max(class2$Age1)
)

# 绘制箱线图并标注
boxplot(class1$Age, class2$Age1, names = c("class1", "class2"), 
        ylab= "年龄", xlab= "班级", ylim = c(15, 100))

# 标注class1
text(x = 1, y = class1_stats$min - 3, labels = paste("min:", class1_stats$min))
text(x = 1, y = class1_stats$median, labels = paste("median:", class1_stats$median))
text(x = 1, y = class1_stats$max + 3, labels = paste("max:", class1_stats$max))

# 标注class2
text(x = 2, y = class2_stats$min - 3, labels = paste("min:", class2_stats$min))
text(x = 2, y = class2_stats$median, labels = paste("median:", class2_stats$median))
text(x = 2, y = class2_stats$max + 3, labels = paste("max:", class2_stats$max))

细节调整说明

  • ylim = c(15, 100):手动调整y轴范围,避免最大值的标注超出图框
  • text()函数中通过y = 统计值 ±3调整标注位置,避免与箱线图元素重叠
  • 可额外添加col(颜色)、cex(字号)参数优化标注样式,例如text(..., col="darkred", cex=0.8)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:17:11