【问题标题】:Can I plot an image to PDF file in R?我可以在 R 中将图像绘制为 PDF 文件吗?
【发布时间】:2013-04-08 15:51:33
【问题描述】:

有没有办法将图像加载到 R 中并以 pdf 格式输出?

我知道如何绘制为 pdf,我尝试使用 raster 和 jpeg 包,但它们不会输出图像。

目的是我正在构建一个 PDF 图表包,并希望在页面上有一个徽标。

有人知道另一种方法吗?

【问题讨论】:

  • pdf("filepath/filename.pdf") 是否根据需要重定向输出?使用dev.off() 关闭文件即可查看。
  • 我几乎可以说,在使用 R 以外的其他程序创建 pdf 并在其中添加标题页、水印或徽标后,处理您的 pdf 会更容易。
  • @DanielFischer 有一定的作用,它以编程方式完成所有事情。此外,这非常符合“可重复研究”的精神。想象一下每次更改图表时种植这些徽标的痛苦。
  • @Maxim.K 问题出在哪里,只需使用命令行工具来完成这项工作,一切都很容易重现。如果您愿意,您甚至可以使用 system 命令从 R 中调用它。但是当然你是对的,在一个程序中做尽可能多的事情很好,但有时如果你不将任务压缩到某个框架中,而是使用专门的程序,你会得到更好看的结果。这至少是我的经验。
  • 您的徽标格式是什么? JPEG、PNG?

标签: image r pdf


【解决方案1】:

试试 CRAN 的 biOps 包。

# Read image
im = readJpeg('path/to/image')
# Save to pdf
pdf('path/to/pdf')
plot(im)
dev.off();

根据我的经验,这比我用过的其他包要快一些

【讨论】:

    【解决方案2】:

    光栅没有什么问题:

    library(raster)
    r <- brick(file.path(R.home(), "doc", "html", "logo.jpg"))
    pdf("a.pdf")
    plotRGB(r)
    dev.off()
    

    请注意,如果您要将 image() 用于大型栅格,最好设置 userRaster = TRUE(栅格默认对其对象执行此操作,或直接使用 rasterImage())以避免非常大的 PDF 文件。

    【讨论】:

    • 谢谢,plotRGB函数中还需要参数axes=FALSE。
    【解决方案3】:

    我从 Matloff 的《R 编程艺术》一书中借用(第 63 页,试试 Google 书籍):

    library(pixmap)
    logo <- read.pnm("filename") # the file has to be in PPM format
    pdf("path/filename.pdf")
    plot(logo)
    dev.off()
    

    或者,您可以尝试使用同一个包中的addlogo() 函数,它似乎很有希望允许徽标坐标,尽管我没有时间彻底测试它。您可以使用在线转换器之一将 JPG(或任何您拥有的)转换为 PPM。

    另外,参见thisthis 线程,它们都处理类似的问题。那里提供的答案要详细得多。

    【讨论】:

    • 我试过这个,它创建了一个超过 6MB 的 pdf,但是当我打开它时,它只有一个空白页?任何想法为什么?
    • 当我尝试它时它对我有用(主要选项,而不是 addlogo())。也许@DanielFischer 是对的,更容易使用外部工具添加徽标/水印。
    【解决方案4】:

    像这样 -

    m = matrix(rnorm(100), 10, 10)
    pdf("image.pdf")
    image(m)
    dev.off()
    

    【讨论】:

      猜你喜欢
      • 2017-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-18
      • 2011-08-24
      • 2011-05-05
      • 1970-01-01
      相关资源
      最近更新 更多