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

如何在分组箱线图中绘制第一四分位数、中位数、第三四分位数标签?

解决箱线图标注四分位数与中位数的问题

我来帮你搞定这个标注难题!首先得明确bp$stats的结构:它是一个5行×分组数列的矩阵,每行依次对应最小值、第一四分位数(Q1)、中位数、第三四分位数(Q3)、最大值。我们只需要提取第2、3、4行的数值,就能拿到要标注的内容。

下面给你一个和你的场景完全匹配的可运行示例(3个分组),用R内置的mtcars数据演示:

# 1. 绘制分组箱线图并保存对象
data(mtcars)
bp <- boxplot(mpg ~ cyl, data = mtcars, main = "按气缸数分组的MPG箱线图", ylab = "MPG")

# 2. 提取需要标注的核心数值
q1_vals <- bp$stats[2, ]    # 第一四分位数
median_vals <- bp$stats[3, ]# 中位数
q3_vals <- bp$stats[4, ]    # 第三四分位数

# 3. 获取每个箱线图的x轴位置(对应1、2、3三个分组)
x_pos <- 1:length(bp$names)

# 4. 标注数值:调整x偏移量避免重叠,让标注更清晰
text(x_pos - 0.2, q1_vals, labels = round(q1_vals, 1), cex = 0.8)
text(x_pos, median_vals, labels = round(median_vals, 1), cex = 0.8, col = "red")
text(x_pos + 0.2, q3_vals, labels = round(q3_vals, 1), cex = 0.8)

关键细节说明:

  • x_pos - 0.2、x_pos、x_pos + 0.2是为了让三个标注在x轴方向上错开,避免互相遮挡,你可以根据自己的图形大小调整这个偏移量。
  • round(..., 1)是把数值保留1位小数,让标注更整洁,你可以按需修改保留位数。
  • 不管你有多少个分组,这个方法都能自动适配,因为x_pos是根据分组数自动生成的,不需要手动修改。

如果你的箱线图有其他定制(比如颜色、主题),只需要把这段标注代码放在箱线图绘制代码之后即可,不会干扰原有图形的样式。

内容的提问来源于stack exchange,提问作者Máiron Chaves

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:16:54