将png图写入R中的pdf文件

Anj*_*jaM 12 pdf plot png r graphic

我必须创建一堆包含大量数据点的图表.到目前为止,我一直在通过将所有这些绘制成一个pdf文件来做到这一点:

pdf("testgraph.pdf")  
par(mfrow=c(3,3))

for (i in 2:length(names(mtcars))){
  plot(mtcars[,1], mtcars[,i])
}

dev.off()
Run Code Online (Sandbox Code Playgroud)

但是,由于数据点很多,pdf文件会变得太大.由于我对优秀品质不感兴趣,我不在乎我的情节是否是矢量图形.所以我想到创建绘图png,然后将它们插入到pdf文件中.有没有办法做到这一点,除了创建的R图表和将它们插入到pdfknitr(我认为这是太繁琐了这样一个简单的工作)?

Ben*_*nes 17

您可以

  1. 创建每个图的.png文件
  2. 使用png包来读取那些和
  3. 用pdf绘制它们 grid.arrange
library(png)
library(grid)
library(gridExtra)

thePlots <- lapply (2:length(names(mtcars)), function(i) {
  png("testgraph.png")
  plot(mtcars[,1], mtcars[,i])

  dev.off()
  rasterGrob(readPNG("testgraph.png", native = FALSE),
    interpolate = FALSE)
})

pdf("testgraph.pdf")
do.call(grid.arrange, c(thePlots, ncol = 3))
dev.off()
Run Code Online (Sandbox Code Playgroud)


Gre*_*now 5

如果问题的根源是图中的点太多,那么您可能需要考虑使用六边形分级而不是常规的散点图.您可以使用bioconductor中的hexbin包,或者ggplot2包也具有六边形装箱功能.无论哪种方式,您可能会在直接创建pdf文件时获得更有意义的绘图以及更小的文件大小.