多图pdf R.

aus*_*tin 6 pdf-generation r

我想在一个pdf文件中打印多个图表.我知道有很多这方面,但我想为每个页面打印不同的窗口/图形大小,即第一页为8.5x11,第二页为11x8.5,依此类推.我试过这个:

pdf(file="Combined_Graphs.pdf",onefile=TRUE,bg="white",width=8.5,height=11)
hist(rnorm(100))
pdf(file="Combined_Graphs.pdf",onefile=TRUE,width=11, height=8.5, bg="white")
hist(rnorm(100,10,2),col="blue")
dev.off()
Run Code Online (Sandbox Code Playgroud)

我必须使用onefile=TRUE错误,因为它只会在关闭之前生成最后一个图形.是否有更好的方法来调整图形设备的大小而不必调用两次pdf函数?

Pau*_*tra 7

我要做的是制作单独的PDF文件,然后将它们组合起来.我使用PDF工具包.使用系统调用将此函数包装在R函数中system甚至可以从R编写脚本.对pdftk的调用将类似于:

pdftk *pdf cat output combined.pdf
Run Code Online (Sandbox Code Playgroud)

或在R:

system("pdftk *pdf cat output combined.pdf")  

combine_pdfs = function(path, output_pdf) {
  system(sprintf("pdftk %s/*pdf cat output %s"), path, output_pdf)
}
Run Code Online (Sandbox Code Playgroud)


Tho*_*unn 5

我认为您想做的事无法在R中完成,也就是说,您需要使用Paul Hiemstra建议的外部工具(例如PDF Toolkit)来组合具有不同页面尺寸的单独PDF文件(替代工具是PDFjam)。

如果您将设置onefile = TRUE为pdf(),则写入该PDF设备的每个绘图都将打印在单独的页面上,但页面尺寸相同。在您的示例中,您打开第一个PDF设备,向其中写入一个绘图,然后打开第二个PDF设备,向其写入另一个绘图,然后关闭第二个PDF设备,但保持第一个PDF设备处于打开状态。由于file两个pdf()调用都使用相同的参数,因此您可能不会注意到第一个PDF设备仍处于打开状态。如果您将其关闭,则只有第一个图将以结尾"Combined_Graphs.pdf"。

这是示例的修改版本,说明了如何打开,填充内容和关闭PDF设备:

pdf(file = "foo.pdf", onefile = TRUE, width = 8.5, height = 11)
hist(rnorm(100))
hist(rnorm(100, 10, 2), col = "red")
pdf(file = "bar.pdf", width =11, height = 8.5)
hist(rnorm(100, 10, 2), col = "blue")
dev.off()
dev.off()
Run Code Online (Sandbox Code Playgroud)