【问题标题】:R stack multiple boxplot on top of each otherR将多个箱线图堆叠在一起
【发布时间】:2016-05-10 21:39:22
【问题描述】:

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

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)

这是最终的情节

如您所见,四个箱线图相互重叠。有什么办法可以将这些图相互叠加在一起,使它们之间没有空格,并使箱线图的大小变小(即图中的框)

我认为做一个par(mfrow=c(4,1)) 应该可以解决问题,但它在地块之间留下了很多空间。理想情况下,我想要一个 x 轴和一个 y 轴(进一步分成四个轴以显示每个图的值)

谢谢

【问题讨论】:

  • 在绘图之前,请执行par(mar=c(2,4,1,2))。第一个和第三个位置分别控制下边距和上边距,默认为 5 和 4。
  • 这主要是这样做的。谢谢

标签: r boxplot


【解决方案1】:

您可以使用par(mar=c(0,0,0,0)) 去除整个图形边距。调整四个mar 值将更改边距(请参阅?par)。

至于改变箱线图的大小,可以调整boxplot函数中的boxwex参数(见?boxplot)。这是同时更改mar 和boxwex 的代码。

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)。您可以使用boxplot 函数中的at 参数来指定每个箱线图沿x 轴的位置。

【讨论】:

  • 谢谢。这真的很有帮助
猜你喜欢
  • 2016-12-09
  • 2022-08-12
  • 2013-07-13
  • 2015-06-23
  • 2020-05-19
  • 1970-01-01
  • 2015-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多