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 就可以解決問題了
