加上“横向”;分离;基线R打印中单个箱线图中的线

加上“横向”;分离;基线R打印中单个箱线图中的线,r,boxplot,R,Boxplot,我需要在基本R箱线图中添加一条“分隔”线来分隔不同的组。在下面的示例中,我想用一条水平线(红色)将A组和B组(每个组有两个级别)分开。可再现结果的R代码: dat = data.frame(A1 = rnorm(1000, 0, 1), A2 = rnorm(1000, 1, 2), B1 = rnorm(1000, 0.5, 0.5), B2 = rnorm(1000, 1.5, 1.5)) boxplot(dat, horizontal = T, outli

我需要在基本R箱线图中添加一条“分隔”线来分隔不同的组。在下面的示例中,我想用一条水平线(红色)将A组和B组(每个组有两个级别)分开。可再现结果的R代码:

dat = data.frame(A1 = rnorm(1000, 0, 1), A2 = rnorm(1000, 1, 2),
                 B1 = rnorm(1000, 0.5, 0.5), B2 = rnorm(1000, 1.5, 1.5))
boxplot(dat, horizontal = T, outline=F)

在Base R中有没有一种简单的方法

还有,有没有一种简单的方法来给y轴标签上色?我想让A1和B1在轴上显示为红色,A2和B2在轴上显示为蓝色


谢谢

使用
abline
。要获得正确的位置,请取y轴的轴刻度的平均值

要获得彩色标签,首先省略
yaxt
,并重新生成
axis
标记和
mtext
,同时使用
axTicks

b <- boxplot(dat, horizontal=T, outline=F, yaxt="n")
ats <- axTicks(2)
axis(2, labels=F)
mtext(b$names, 2, 1, col=c(2, 4), at=ats)
abline(h=mean(ats), lwd=2, col=2)
b <- boxplot(dat, horizontal=T, outline=F, yaxt="n", at=c(1, 2, 4, 5))
ats <- axTicks(2)[-3]
abline(h=mean(ats), lwd=2, col=2)
pu <- par()$usr
Map(function(x, y) segments(pu[1] - .2, x, pu[1], x, xpd=T, col=y), ats, c(2, 4))
mtext(b$names, 2, 1, col=c(2, 4), at=ats)

编辑:要稍微调整空间,请使用
boxplot
中的
at=
选项,并省去中间的
axTicks

b <- boxplot(dat, horizontal=T, outline=F, yaxt="n")
ats <- axTicks(2)
axis(2, labels=F)
mtext(b$names, 2, 1, col=c(2, 4), at=ats)
abline(h=mean(ats), lwd=2, col=2)
b <- boxplot(dat, horizontal=T, outline=F, yaxt="n", at=c(1, 2, 4, 5))
ats <- axTicks(2)[-3]
abline(h=mean(ats), lwd=2, col=2)
pu <- par()$usr
Map(function(x, y) segments(pu[1] - .2, x, pu[1], x, xpd=T, col=y), ats, c(2, 4))
mtext(b$names, 2, 1, col=c(2, 4), at=ats)

b添加
abline(h=2.5)
非常感谢您的及时帮助!这非常有用:)