使用R';列具有不同行数时的布局
我希望在R中创建一个包含11个面板的绘图:三个面板位于左侧列,八个面板位于右侧列。我希望左侧的三个图的高度相同,右侧的八个图的高度相同 我可以通过使用使用R';列具有不同行数时的布局,r,R,我希望在R中创建一个包含11个面板的绘图:三个面板位于左侧列,八个面板位于右侧列。我希望左侧的三个图的高度相同,右侧的八个图的高度相同 我可以通过使用布局和修改边距来获得一些方法:但是由于无法指定负边距,这不允许我使用左列中的全部空间。此外,如果稍后将绘图发送到具有不同页面大小的PDF设备,则页边距可能会有所不同 布局(矩阵(c(1,1,0,2,2,0,3,3,3+(1:8)),ncol=2), 宽度=c(0.33,0.67)) par(mar=c(0,2,2,2)) 地块(c(1,1)) pa
布局和修改边距来获得一些方法:但是由于无法指定负边距,这不允许我使用左列中的全部空间。此外,如果稍后将绘图发送到具有不同页面大小的PDF设备,则页边距可能会有所不同
布局(矩阵(c(1,1,0,2,2,0,3,3,3+(1:8)),ncol=2),
宽度=c(0.33,0.67))
par(mar=c(0,2,2,2))
地块(c(1,1))
par(mar=c(0,2,0,2))
地块(c(1,1))
par(mar=c(2,2,0,2))
地块(c(1,1))
par(mar=代表(2,4))
对于(1:8中的i)图(c(2,2),col='red')
有没有办法做到这一点,使左侧的三幅图大小和间距相等,并使用所有可用空间
(编辑:)MichaelChirico指出,我可以使用8×3行,这在本例中是可行的,但当有多个列具有不同的行数时,会变得很麻烦;我相信布局最多只能支持200行。下面是一个使用您的代码和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')
}
您能详细说明一下“所有可用空间”吗?通常,您希望布局矩阵有24行。LHS图各取8个;RHS图每幅取3。然后乱动oma
和mar
设置来处理空白。请参见?分割。屏幕
-我发现它比布局
更麻烦,但它可以做你要求的事情,没有问题。