R 在绘图子集之间添加额外间距

R 在绘图子集之间添加额外间距,r,graphics,plot,spacing,R,Graphics,Plot,Spacing,我正试图以3x2的布局将6个图形输出到一个图像中。我想在最上面一排和最下面两排之间留出额外的空间。这是否可能使用R?我已经看过了文件的PAR和阴谋,似乎找不到合适的选择。< /P> 下面是一些示例代码: a = rnorm(100,100,10) b = rnorm(100,100,10) par(mfrow=c(3,2), oma=c(1,1,1,1), mar=c(2,2,2,2)) hist(a) hist(b) plot(a,b) plot(a,b) plot(a,b) plot(a,

我正试图以3x2的布局将6个图形输出到一个图像中。我想在最上面一排和最下面两排之间留出额外的空间。这是否可能使用R?我已经看过了文件的PAR和阴谋,似乎找不到合适的选择。< /P> 下面是一些示例代码:

a = rnorm(100,100,10)
b = rnorm(100,100,10)

par(mfrow=c(3,2), oma=c(1,1,1,1), mar=c(2,2,2,2))
hist(a)
hist(b)
plot(a,b)
plot(a,b)
plot(a,b)
plot(a,b)

下面是该代码的输出:



下面是我希望它输出的内容(我在外部编辑器中修改了此图像)。请注意顶部行和底部行之间的额外空间




我可以想出三种方法:

1) 使用
mar
图形参数设置打印边距

您可以使用检索当前页边距

currmar <- par()$mar
par("mar"=c(5, 4, 4, 2))
数字的下边距、左边距、上边距和右边距(请参见
?par

对于每个绘图,可以多次调用
par
,因此只能更改顶部绘图的底部边距

2) 使用布局生成不均匀的布局网格(有关示例,请参见
?布局

3) 将绘图保存在.svg或.pdf中,然后使用Inkscape(或任何您喜欢的软件)移动绘图。

您可以使用
layout()
函数。例如,可以定义一个打印矩阵

1 2
3 4
5 6
7 8

然后在第三个和第四个区域放上空的地块。或者只需坚持6,然后调用
par
在底部添加额外的间距

我想我会用
mar
的方式。但是,看起来,您希望所有的绘图都相同。因此,您需要让mar在顶部和底部的每个绘图上扣除相同的金额。
在您的情况下,可以使用以下数字:
1.行:
par(mar=c(7,4,4,2))

2.行:
par(mar=c(5,4,6,2))

3.行:
par(mar=c(7,4,4,2))

这样,所有地块都占据相同的高度。修改第一个和第三个数字,使每个图的数字相同,以实现此目的。
但是,有一点需要注意:在最下面一行的图下面有一些额外的空白。

Thank-layout()对我来说是新的。像这样的东西似乎符合我的要求:a=布局(矩阵(c(1,2,0,0,3,4,5,6),4,2,byrow=TRUE),宽度=c(1,1),高度=c(4,1,4,4)),是的,布局很棒,而且相当有用。现在的孩子们除了ggplot2什么都不说,所以很容易被忘记:)好的,抓住了零,省略了绘图,宽度和高度都完全正确。很好。我已经使用layout()编写了我的解决方案,但这样也可以。谢谢