【问题标题】:Write multiple PDF object in one file using magick in R使用R中的magick在一个文件中写入多个PDF对象
【发布时间】:2020-09-25 20:05:29
【问题描述】:

我正在努力将两个 PNG 并排粘贴,然后使用下面的代码将连接的对象转换为 PDF。现在如何将所有 PDF 对象作为页面写入单个文件?我尝试将所有对象保存在一个列表中,然后将该列表传递给 image_write(),但它不起作用。

library(magick)
vec_out <- list()
for(i in 1:length(all_stims)){
        stim <- all_stims[i]
        img1 <- image_read(file.path(figures_folder, "across_cluster_heatmaps", paste0("bendall_",stim,".png")))
        img2 <- image_read(file.path(figures_folder, "across_cluster_heatmaps", paste0("farmer_", stim,".png")))
        imgs <- c(img1, img2)
        imgs <- image_append(imgs)
        imgs_pdf <- image_convert(imgs)
        vec_out[[i]] <- imgs_pdf
}

image_write(vec_out, path = file.path(figures_folder, "test.pdf"), format = "pdf")

任何建议都会有所帮助。谢谢。

【问题讨论】:

    标签: r imagemagick data-science


    【解决方案1】:

    你不能写一个knitr-document,或者作为rmarkdown-file吗? 我无法运行您的代码,因为它不可重现。

    rmarkdown 中的一个小例子: 以下代码在 for 循环中生成 3 个图。 通过选择 result = 'asis' 作为选项并插入 cat("\n\n\\pagebreak\n") 在 for 循环中,每个输出都打印在单独的页面上。

    ---
    title: "Test page break between two figures"
    output: pdf_document
    ---
    
    ```{r, echo=FALSE, results='asis'}
    for (i in 1:3) {
      print(plot(1:i, rnorm(i)))
      cat("\n\n\\pagebreak\n")
    }
    ```
    

    我建议做上面提到的事情,而不是在第一步中分别创建所有 pdf 文件,然后在第二步中将它们粘合在一起。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-14
      相关资源
      最近更新 更多