Box plot showing mean as a line

元气小坏坏 提交于 2019-12-05 05:49:08

For the sake of completeness, you could also overplot:

set.seed(753)
df <- data.frame(y=rt(100, 4), x=gl(5, 20))
bx.p <- boxplot(y~x, df)
bx.p$stats[3, ] <- unclass(with(df, by(y, x, FUN = mean)))
bxp(bx.p, add=T, boxfill="transparent", medcol="red", axes=F, outpch = NA, outlty="blank", boxlty="blank", whisklty="blank", staplelty="blank")

Explanation via @scs:

bxp$stats returns a matrix that contains the lower whisker, the lower hinge, the median, the upper hinge and the extreme of the upper whisker for each boxplot. The solution above overwrites the median specified in bx.p$stats[3, ] with the mean value. The bxp function is a function to plot boxplot objects.

Result:

The default plotting of boxplot makes the width of the box go from 0.8 to 1.2 in the x-axis.

You can hence draw a line for the mean with the below code:

lines(c(0.8, 1.2), rep(mean(values), 2), col="red", lwd = 2)

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!