R 语言避免pdf的空白页

R 语言避免pdf的空白页

phil 6 2024-11-23

背景

使用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() 

效果图如下:
http://43.136.88.105/nat123CacheFolder/622E766F696365636C6F7564732E636E/c8528af7014e4dc1bd8edf0d1859da07CE2FCD33D032CF32CA20C63ACF32C533CD20AF4D_43aea7b0acc4d880a42f9c96ba459341/archives/4.png

解决办法

上面的代码中,我们共画了两幅图,第一幅图为空白,第二幅图为散点图,对应到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()

效果图如下:
http://43.136.88.105/nat123CacheFolder/622E766F696365636C6F7564732E636E/c8528af7014e4dc1bd8edf0d1859da07CE2FCD33D032CF32CA20C63ACF32C533CD20AF4D_43aea7b0acc4d880a42f9c96ba459341/archives/5.png
从图中可以看出,pdf只有一页了,后面画的图会覆盖前面的图,而且所有的图都只占用pdf的第一页

当我们使用别人的画图代码时,可能会存在bug, 导致pdf的前几页为空,这是设置onefile = FALSE 就可以解决问题了。