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

R语言箱线图绘制问题:竖置箱线图无法显示分位数数值

解决竖向箱线图分位数标注不显示的问题

哈哈,这个坑我之前也踩过!把横向箱线图改成竖向时,标注的坐标逻辑完全反过来了,咱们一步步来搞定它:

核心原因

当你用horizontal = TRUE绘制横向箱线图时,分位数的数值对应x轴位置,标注时是把文字放在y=1(单组数据)的水平线上;但改成竖向(horizontal = FALSE)后,分位数数值对应y轴位置,x轴变成了组别序号,这时候坐标参数不调整的话,文字就会跑到看不见的地方去啦。

单组数据的解决方案

用你给的示例数据,完整可运行的代码如下:

# 你的示例数据
myData <- c(3,12,20,25,30,35,70,70)

# 绘制竖向箱线图,同时保存统计结果到bp对象
bp <- boxplot(myData, horizontal = FALSE, ylab = "数值", main = "带分位数标注的竖向箱线图")

# 从bp里提取5个分位数的数值:最小值、下四分位数、中位数、上四分位数、最大值
stats <- bp$stats

# 添加标注:x固定为1(单组数据的x轴位置),y是分位数数值,pos=3表示文字在上方
text(x = rep(1, length(stats)), 
     y = stats, 
     labels = stats, 
     pos = 3,  # 可选pos=4(右侧),根据你的图调整
     cex = 0.8)  # 调整文字大小

多组数据的情况(如果以后用到)

如果你的数据是多组的,只需要循环给每个组别加标注就行:

# 构造两组示例数据
myData <- matrix(c(3,12,20,25,30,35,70,70, 
                   10,15,22,28,33,38,75,80), 
                 ncol=2)

bp <- boxplot(myData, horizontal = FALSE, ylab = "数值", names = c("组1", "组2"))
stats <- bp$stats

# 循环给每组加标注
for (i in 1:ncol(myData)) {
  text(x = rep(i, length(stats[,i])), 
       y = stats[,i], 
       labels = stats[,i], 
       pos = 3, 
       cex = 0.8)
}

小技巧

  • 如果标注文字和箱线图重叠,可以调整pos参数(1=下,2=左,3=上,4=右),或者加offset参数微调距离,比如pos=3, offset=0.3。
  • bp$stats是boxplot返回的核心统计量,一定要利用它来获取分位数,不要手动计算,避免误差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:21:47