首页 > 解决方案 > png、pdf、tiff 边距限制

问题描述

为了给特殊的 ylab 文本腾出一些空间,我使用mar=c(5,7,4,2). 这为我提供了 7 行 ylab 的空间。在默认设备(屏幕)上,一切都按预期运行。但是,我无法将此输出发送到屏幕以外的任何其他设备。

par(mar=c(5,7,4,2))
png(file="a.png", width=500, height=500)
plot(1,1,ylab="A very very long axis title\nthat need special care",xlab="",type="n")

我用 png、tiff、pdf 验证了相同的行为。这些设备中的最大可打印尺寸似乎是 4。超出此数字的任何内容都会被切断。绘制 xlab 时也有相同的行为,例如使用mgp=c(5,1,0). mgp=c(4,1,0)(第 4 行)是除屏幕之外的任何其他设备中的最大可打印行。

即使升级到最新的 R 版本也不会改变这种行为,在 Windows 和 Ubuntu 上也是如此。

对此行为的根本原因的任何建议表示赞赏。

标签: r

解决方案


问题是你的陈述的顺序。该par()调用适用于当前设备。由于您在那之后打开png()设备,它没有任何效果。只需按此顺序排列即可:

png(file="a.png", width=500, height=500)
par(mar=c(5,7,4,2))
plot(1,1,ylab="A very very long axis title\nthat need special care",xlab="",type="n")
dev.off()

这在文件中给出了这个图像:

a.png 的屏幕截图


推荐阅读