在R中将多个图表保存为PDF而不需要1:1的比例。

3
我正在尝试在R中生成一个PDF图像,其中包含三个排列在一行网格中的图。这是我尝试过的方法:
pdf("fig.pdf")
par(mfrow=c(1,3))
plot(rnorm(100), rnorm(100), xlab="Something on X", ylab="Some on Y", main="This is it 1")
plot(rnorm(100), rnorm(100), xlab="Something on X", ylab="Some on Y", main="This is it 2")
plot(rnorm(100), rnorm(100), xlab="Something on X", ylab="Some on Y", main="This is it 3")
dev.off()

但它产生的结果是:

enter image description here

虽然我希望每个图表都是正方形的,但最终图像不需要保持1:1的比例:

enter image description here


尝试

我已经尝试了:

pdf("fig.pdf", width = 3, height = 1)

但是,当绘制每个单独的图表时,会生成错误提示大小不够:

Error in plot.new() : figure margins too large

如果我尝试:

par(mfrow=c(1,3), pty='s')

然后:

enter image description here

我该如何实现这个目标(可能不使用外部库,而只使用基本的默认R包)?

在你的第一次尝试中,在pdf调用之后添加par(mfrow=c(1,3), pty='s') - user20650
@user20650:不起作用 :( 它生成了一个正方形的PDF。最后每个单独的图形都是正方形,但是上下留下了很多空白空间。 - Andry
@user20650:您可以查看已编辑的问题。 - Andry
2
啊,好的,也许可以使用par函数来调整输入的比例 pdf("fig.pdf", width=7, height=7/3) - user20650
@user20650:是的...请发表一个答案 - Andry
1个回答

2
我使用了


pdf("fig.pdf", width=6, height=2.4)
par(mfrow=c(1,3))
plot(rnorm(100), rnorm(100), xlab="Something on X", ylab="Some on Y", main="This is it 1")
plot(rnorm(100), rnorm(100), xlab="Something on X", ylab="Some on Y", main="This is it 2")
plot(rnorm(100), rnorm(100), xlab="Something on X", ylab="Some on Y", main="This is it 3")
dev.off()

and got this:

Three square plots


是的,这就是诀窍。所以我可以指定一个宽度,然后使用width/n来避免对大小的依赖! - Andry
1
是的,但是顶部和底部的标签所占用的空间比侧面的标签多,所以你可能需要一个高度稍微大于宽度/n。 - G5W
3
如果将绘图区域设置为正方形,我认为您可以使用 width/n 来节省手动查找宽度的时间。 - user20650

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接