我正在尝试以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)
以下是该代码输出的内容:
这是我想要输出的内容(我在外部编辑器中修改了这个图像)。注意顶行和底行之间的额外空间。
答案 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))
这样所有地块都占据相同的高度。修改第一个和第三个数字,使得它们对于每个绘图都是相同的。 但是,请注意:在底行的地块下面有一些额外的空白区域。