背景
使用R语言,我们生成pdf,有时候第一页是空白页。
原因
pdf 函数中,有一个参数onefile , 默认值为TRUE, 表示每张图片占用pdf 中的一页
当遇到pdf的前几页为空白时,是因为画图的代码产生了几张空白的图片
如果要消除前面的空白,只需要设置onefile = FALSE 就可以了,此时后面的图片会覆盖前面空白的图片,就实现了消除空白页的效果
代码示例:
默认情况下,一张图占用pdf的一页
pdf("test.pdf")
plot(1:5, type = "n", xlab = "", ylab = "", bty = "n", xaxt = "n", yaxt = "n")
plot(1:5)
dev.off()
效果图如下:
解决办法
上面的代码中,我们共画了两幅图,第一幅图为空白,第二幅图为散点图,对应到pdf中,pdf的第一页为第一幅图,所以为空白,第二幅图为一张散点图,对应pdf的第二页
设置onefile 参数为FALSE 后,散点图会覆盖前面的空白
代码示例:
pdf("test.pdf", onefile = FALSE)
plot(1:5, type = "n", xlab = "", ylab = "", bty = "n", xaxt = "n", yaxt = "n")
plot(1:5)
dev.off()
效果图如下:
从图中可以看出,pdf只有一页了,后面画的图会覆盖前面的图,而且所有的图都只占用pdf的第一页
当我们使用别人的画图代码时,可能会存在bug, 导致pdf的前几页为空,这是设置onefile = FALSE 就可以解决问题了。 |