knitr:如何在报告中包含图像并将图像输出到单独的文件?

16

我不仅希望我的knitr生成的报告中包含我的图表,而且还希望将它们输出到单独的文件中。为了实现这一点,我已经包含了以下代码:

```{r}
  #Plot figure in report
  plot(x,y)

  #Plot figure in file
  pdf(file="MyFig.pdf")
  plot(x,y)
  dev.off()
```

这个方法可行,但我希望knitr已经内置了更优雅的解决方案。是否存在类似于代码块选项或其他类似选项来实现相同的结果?

3个回答

23

如果您使用的是html_document,请使用选项self_contained: no;如果您使用的是pdf_document,请使用keep_tex: yes选项,这样rmarkdown在呈现输出文档后就不会删除图形文件。


3
R Notebook有相关的解决方案吗?在使用output: html_notebook选项时无法正常工作。 - Lauren Fitch

9

关键字dev ='pdf'是由Yihui在这里解释的:http://yihui.name/knitr/options/

我发现其他选项也很有用:

```{r 'setup', echo = FALSE, cache = FALSE}
    opts_chunk$set(dev = c('pdf', 'png'), 
        fig.align = 'center', fig.height = 5, fig.width = 8.5, 
        pdf.options(encoding = "ISOLatin9.enc")) 
```

4
我大多数时候使用 output: html_document ,将 'png' 放在列表的第一位可以使html以良好的方式呈现,并且还可以保存图形。结合 fig.pathfig.widthfig.height ,我能够得出一个不错的解决方案。`{r plot_stuff, fig.width=10, fig.height=5, fig.path='figures/', dev=c('png', 'pdf')}` - Lance
1
这真的很好,将HTML文档自包含,同时将同一报告中的图形保存为单独的图形。@Yihui在上面的回答中似乎也会产生单独的图形,但是一个依赖于该文件夹的HTML文件,这在共享报告时经常很麻烦。 - 4rj4n

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接