我希望在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')
有没有办法做到这样,使三个左图的大小和间距相等,并使用所有可用空间?
(edit :) MichaelChirico指出我可以使用8×3行,在这个例子中这是可行的,但是当有多行具有不同行数的列时变得麻烦。我认为布局最多只能支持200行。
答案 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')
}