R堆叠多个箱图在彼此的顶部

时间:2016-05-10 21:39:23

标签: r boxplot

我正在尝试制作一些箱形图。这是一个示例数据

set.seed(1)

a<-rnorm(100)
a1<-rnorm(100);a2<-rnorm(100);a3<-rnorm(100);a4<-rnorm(100)
b1<-rnorm(100);b2<-rnorm(100);b3<-rnorm(100);b4<-rnorm(100)
c1<-rnorm(100);c2<-rnorm(100);c3<-rnorm(100);c4<-rnorm(100)
d1<-rnorm(100);d2<-rnorm(100);d3<-rnorm(100);d4<-rnorm(100)
e1<-rnorm(100);e2<-rnorm(100);e3<-rnorm(100);e4<-rnorm(100)
f1<-rnorm(100);f2<-rnorm(100);f3<-rnorm(100);f4<-rnorm(100)  

dat<-data.frame(a,a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4,d1,d2,d3,d4,e1,e2,e3,e4,f1,f2,f3,f4)

par(mfrow=c(4,1))
boxplot(dat$a,dat$a1,dat$b1,dat$c1,dat$d1,dat$e1,dat$f1)

boxplot(dat$a,dat$a2,dat$b2,dat$c2,dat$d2,dat$e2,dat$f2)

boxplot(dat$a,dat$a3,dat$b3,dat$c3,dat$d3,dat$e3,dat$f3)

boxplot(dat$a,dat$a4,dat$b4,dat$c4,dat$d4,dat$e4,dat$f4)

这是结果情节

enter image description here

如您所见,四个箱形图位于彼此之上。有什么方法可以将这些图组合在一起,以便它们之间没有空格,并使箱形图的大小变小(即图中的方框)

我认为做一个par(mfrow=c(4,1))应该可以做到这一点,但它会在图表之间留下很多空格。理想情况下,我想要一个单独的x轴和单个y轴(进一步分成四个轴来显示每个图的值)

谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用par(mar=c(0,0,0,0))来摆脱整个数字边距。调整四个mar值会更改边距(请参阅?par)。

至于更改箱图的大小,您可以调整boxwex函数中的boxplot参数(请参阅?boxplot)。以下代码更改了marboxwex

par(mfrow=c(4,1), mar=c(2,3,0,1))
boxplot(dat$a,dat$a1,dat$b1,dat$c1,dat$d1,dat$e1,dat$f1, boxwex=0.25)
boxplot(dat$a,dat$a2,dat$b2,dat$c2,dat$d2,dat$e2,dat$f2, boxwex=0.5)
boxplot(dat$a,dat$a3,dat$b3,dat$c3,dat$d3,dat$e3,dat$f3, boxwex=0.75)
boxplot(dat$a,dat$a4,dat$b4,dat$c4,dat$d4,dat$e4,dat$f4, boxwex=1, 
        names=1:7)

如果你想彻底摆脱这些图之间的空间,你可以将mar的第一个元素设置为0,但这看起来并不像看起来特别好,这使得它变得更加棘手获得底部图中的x轴而不改变其相对于前三个图的大小。

您可以尝试的另一种方法是将所有箱图放在一个图中,但每个类别(1-7)都有并排的箱图。您可以使用at函数中的boxplot参数指定每个箱图沿x轴的位置。