当列的行数不同时使用R的布局

时间:2019-08-08 13:30:14

标签: r

我希望在R中创建一个包含11个面板的绘图:三个在左侧列中,八个在右侧列中。我希望左侧的三个图的高度相同,而右侧的八个图的高度相同。

我可以使用layout并破解空白:但是由于无法指定负空白,因此不允许我使用左栏中的全部空格。此外,如果以后将图发送到具有不同页面大小的PDF设备,则边距看起来可能会有所不同。

layout(matrix(c(1, 1, 0, 2, 2, 0, 3, 3, 3 + (1:8)), ncol=2),
       widths=c(0.33, 0.67))
par(mar=c(0, 2, 2, 2))
plot(c(1, 1))
par(mar=c(0, 2, 0, 2))
plot(c(1, 1))
par(mar=c(2, 2, 0, 2))
plot(c(1, 1))
par(mar=rep(2, 4))
for (i in 1:8) plot(c(2, 2), col='red')

Figure

有没有办法做到这样,使三个左图的大小和间距相等,并使用所有可用空间?

(edit :) MichaelChirico指出我可以使用8×3行,在这个例子中这是可行的,但是当有多行具有不同行数的列时变得麻烦。我认为布局最多只能支持200行。

1 个答案:

答案 0 :(得分:1)

以下是使用您的代码和split.screen的示例。显然,您需要调整边距。

dev.off()
split.screen(figs = c(1, 2))
split.screen(figs = c(3, 1), screen = 1)

screen(n = 3)
par(mar=c(0, 2, 2, 2))
plot(c(1, 1))

screen(n = 4)
par(mar=c(0, 2, 2, 2))
plot(c(1, 1))

screen(n = 5)
par(mar=c(0, 2, 2, 2))
plot(c(1, 1))


split.screen(figs = c(8, 1), screen = 2)

for (i in 6:13) {
  screen(n = i)
  plot(c(2, 2), col='red')
}

enter image description here