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

Base R:将箱线图中的中位数水平线替换为均值水平线

修改Base R箱线图:将箱内中位数线替换为均值

你提供的Base R代码生成的箱线图中,箱内水平线为中位数。要将其替换为均值,需手动计算各组均值并在箱内绘制均值水平线,同时可隐藏原中位数线。

原代码

a <- df$A
b <- df$B

C <- list(a,b)

names(C) <- c(paste("A"), paste("B"))

par(mgp=c(3,2,0))

y_axis_limits <- c(1, 7)

boxplot(C, col = "red", ylab="value", ylim = y_axis_limits,outline=FALSE)

修改后的代码及说明

a <- df$A
b <- df$B

C <- list(a,b)

names(C) <- c("A", "B")

par(mgp=c(3,2,0))

y_axis_limits <- c(1, 7)

# 绘制箱线图并获取绘图数据,同时隐藏原中位数线
bp <- boxplot(C, col = "red", ylab="value", ylim = y_axis_limits, outline=FALSE, 
             medlwd = 0) 

# 计算每个组的均值(na.rm=TRUE用于处理缺失值,无缺失可省略)
means <- sapply(C, mean, na.rm = TRUE)

# 在每个箱体内绘制均值水平线
segments(x0 = bp$names - 0.2, y0 = means, 
         x1 = bp$names + 0.2, y1 = means,
         col = "black", lwd = 2)

关键步骤说明

  • medlwd = 0:通过设置中位数线宽为0,隐藏原有的中位数线。
  • sapply(C, mean, na.rm = TRUE):批量计算各分组均值,适配含缺失值的数据集。
  • segments():在每个箱体的左右边界(x轴位置±0.2)绘制水平均值线,通过col和lwd参数调整线条样式,确保与箱体区分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:42:40