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
相关产品推荐
相关产品推荐

