R:将文件列表中的多个图表保存到单个文件中(png或pdf或其他格式)

时间:2014-10-14 13:38:35

标签: r plot

我有超过10个文件(最后有几百个......)。我用R生成的png格式保存到文件夹中。

我的问题:我怎样才能将这些文件保存到多个时段中(例如,一页上的4个数字排列成2行2列)?

我知道可以使用par(mfrow=c(2,2))将其合并到一个绘图循环中,但是如何在生成它们之后调用文件夹中的文件之外呢?

1 个答案:

答案 0 :(得分:4)

这是一种聚合许多png文件的快速方法:

  1. 使用readPNG
  2. 阅读您的png
  3. 将它们转换为栅格,并使用grid.raster绘制它们:非常高效。
  4. 这样的事情:

    library(png)
    library(grid)
    pdf('somefile1.pdf')
    lapply(ll <- list.files(patt='.*[.]png'),function(x){
      img <- as.raster(readPNG(x))
      grid.newpage()
      grid.raster(img, interpolate = FALSE)
    
    })
    dev.off()
    

    编辑:加载png,安排它们并将它们合并到同一个pdf中:

    首先,您应该使用rasterGrob

    将png文件存储在grobs列表中
    plots <- lapply(ll <- list.files(patt='.*[.]png'),function(x){
      img <- as.raster(readPNG(x))
      rasterGrob(img, interpolate = FALSE)
    })
    

    然后使用优秀的便捷功能marrangeGrob保存它们:

    library(ggplot2)
    library(gridExtra)
    ggsave("multipage.pdf", marrangeGrob(grobs=plots, nrow=2, ncol=2))