【问题标题】:How to produce a report with spin() knitr AND save some plot in a pdf如何使用 spin() knitr 生成报告并在 pdf 中保存一些图
【发布时间】:2013-07-24 13:25:14
【问题描述】:

我对 knitr 包有点迷茫。 我喜欢 spin() 函数,它可以快速为我提供分析的全局视图,但我需要将一些非常重要的图保存在单独的 pdf 中(例如,我的文件的第 8 个图应该保存为“Figure1.pdf”并显示在报告中)。

当我写的时候:

Some random code and plots...

pdf('Figure1.pdf')
plot(important plot)
dev.off()

Some random code and plots

在 spin() 之后,重要的情节没有显示在报告中,我想在报告和 pdf 中。

有什么办法吗?

谢谢

【问题讨论】:

  • 我很困惑;当然,当 knitr 编译文档时,它也会生成绘图,这些绘图应该出现在同一目录中(保存嵌入的 base64 编码图像)。您对报告使用什么输出格式?
  • 要出现在旋转的 HTML knitr 中,必须获取输出设备并创建一个 PNG,然后将其包含在 spin 创建的 HTML 中。通过启动 PDF 设备,您已经篡夺了它,因此您不会获得 PNG。我想不出如何生成 PDF 和 PNG 而不在低级别挂钩到 knitr 的图形,这可能是可能的。
  • dev 接受向量,因此您可以告诉 knitr 为任何给定的块生成 pdf 和 png
  • @Spacedman 这就是我要求输出格式的原因; spin() 也可以生成 pdf 输出,而不仅仅是 html,在这种情况下,应该为每个绘图生成 pdf 文件。

标签: r knitr


【解决方案1】:

spin() 确实保存所有绘图,尽管它默认以 PNG 格式保存绘图,因为参数 spin(..., format = 'Rmd')(R Markdown 使用 PNG 设备)。

您也可以在 R 脚本中指定块选项:只需使用 #+#-,例如

#' Some random code and plots...

#+ Figure1, fig.path='', dev=c('png', 'pdf')
plot(important plot)

#' Some random code and plots

注意dev 选项采用设备向量,正如@baptiste 所述。

或者您使用 Rnw 格式,例如(不需要指定dev

spin(..., format = 'Rnw')

在这种情况下,输出将是 LaTeX/PDF 而不是 HTML。

【讨论】:

    【解决方案2】:

    如果我理解了这个问题,在关闭设备后重复绘图语句是有效的,而不会在报告中产生重复:

    Some random code and plots...
    
    pdf('Figure1.pdf')
    plot(important plot)
    dev.off()
    plot(important plot)
    
    Some random code and plots
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-12
      • 2015-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-13
      • 2011-12-17
      相关资源
      最近更新 更多