在图的子集之间添加额外的间距

时间:2010-09-03 19:03:55

标签: r graphics plot spacing

我正在尝试以3x2布局将6个数字输出到一个图像中。我想在顶行和底行两行之间留出额外的空间。这可能使用R吗?我查看了par和plot的文档,似乎找不到合适的选项。

以下是一些示例代码:

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)

以下是该代码输出的内容:


alt text


这是我想要输出的内容(我在外部编辑器中修改了这个图像)。注意顶行和底行之间的额外空间。


alt text


3 个答案:

答案 0 :(得分:9)

layout()功能是你的朋友。例如,您可以定义绘图矩阵

1 2
3 4
5 6
7 8

然后将空图放入第三和第四。或者只需坚持六个并调用par以在底部添加额外的间距。

答案 1 :(得分:8)

我可以想到三种方式:

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

您可以使用

检索当前边距
currmar <- par()$mar

您可以使用

设置新的边距
par("mar"=c(5, 4, 4, 2))

for数字为底部,左侧,顶部和右侧边距(请参阅?par

您可以为每个地图多次调用par,这样您就可以仅为顶部地块更改底部边距。

2)使用布局生成不均匀的布局网格(例如,参见?layout

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

答案 2 :(得分:4)

我认为与mar一起去是我的方式。但是,就像它看起来一样,你希望所有的图都是一样的。因此,您需要在上下每个地块上使用相同数量的金额 在您的情况下,可以使用以下数字:
排:par(mar=c(7,4,4,2))
2.行:par(mar=c(5,4,6,2))
3.行:par(mar=c(7,4,4,2))

这样所有地块都占据相同的高度。修改第一个和第三个数字,使得它们对于每个绘图都是相同的。 但是,请注意:在底行的地块下面有一些额外的空白区域。