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

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

问题描述:

我试图在一个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


这里就是我想要它像输出(我修改了这个形象e在外部编辑器中)。请注意顶行和底行之间的额外空间。


alt text


layout()功能是你的朋友。你可以例如定义一个阴谋矩阵

1 2 
3 4 
5 6 
7 8 

然后为第三个和第四个放置空白图。或者只是坚持六,并致电par在底部添加额外的空间。

+1

谢谢 - layout()对我来说是新的。像这样的东西似乎做我想要的:a = layout(矩阵(c(1,2,0,0,3,4,5,6),4,2,byrow = TRUE),widths = c(1, 1),高度= c(4,1,4,4)) – chrisamiller 2010-09-03 19:46:13

+2

是的,布局是美好的,而且非常有用。现在的孩子们谈论的只是ggplot2,所以它往往会被遗忘:)良好的捕获重零0来省略重复,而且你的宽度和高度恰到好处。 – 2010-09-03 19:59:00

我能想到的方式有三种:

1)使用mar图形参数来设置情节保证金

您可以检索当前的利润率与

currmar <- par()$mar 

您可以

par("mar"=c(5, 4, 4, 2)) 

与设置新的页边距数字是底部,左,上,右页边距(见?par

您可以多次调用par每个情节,这样你就可以只更改顶部图的底部边距。

2)使用布局产生不均匀布局网格(见?layout的例子)

3)除.SVG或.pdf格式的情节,然后使用Inkscape中(或任何软件,你喜欢)移动的地块。

我认为去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))

这样所有的地块占据相同的高度。修改第一个和第三个数字,使它们对于每个情节都是相同的,以实现这一点。 但是,请注意:最下面的一排地块下方有一些额外的白色空间。

+0

不错。我已经使用layout()编写了我的解决方案,但是这也会起作用。谢谢。 – chrisamiller 2010-09-03 21:37:20