箱形图将均值显示为一条线
Box plot showing mean as a line
是否可以使用 R 的标准箱线图函数创建一个箱线图,将均值和中位数显示为一条线?我当前的解决方案将平均值显示为十字:
set.seed(1234)
values <- runif(10,0,1)
boxplot(values)
points(mean(values),col="red",pch=4,lwd = 4)
boxplot
的默认绘图使框的宽度在 x-axis
中从 0.8
变为 1.2
。
因此,您可以使用以下代码为均值画一条线:
lines(c(0.8, 1.2), rep(mean(values), 2), col="red", lwd = 2)
为了完整起见,您还可以叠加:
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")
来自@scs 的解释:
bxp$stats
returns 一个矩阵,其中包含每个箱线图的下须、下铰链、中值、上铰链和上须的极值。上面的解决方案用平均值覆盖了 bx.p$stats[3, ]
中指定的中位数。 bxp
函数是绘制箱线图对象的函数。
结果:
是否可以使用 R 的标准箱线图函数创建一个箱线图,将均值和中位数显示为一条线?我当前的解决方案将平均值显示为十字:
set.seed(1234)
values <- runif(10,0,1)
boxplot(values)
points(mean(values),col="red",pch=4,lwd = 4)
boxplot
的默认绘图使框的宽度在 x-axis
中从 0.8
变为 1.2
。
因此,您可以使用以下代码为均值画一条线:
lines(c(0.8, 1.2), rep(mean(values), 2), col="red", lwd = 2)
为了完整起见,您还可以叠加:
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")
来自@scs 的解释:
bxp$stats
returns 一个矩阵,其中包含每个箱线图的下须、下铰链、中值、上铰链和上须的极值。上面的解决方案用平均值覆盖了 bx.p$stats[3, ]
中指定的中位数。 bxp
函数是绘制箱线图对象的函数。
结果: