use*_*004 5 plot thumbnails rstudio knitr r-markdown
我knitr在R Studio中使用R Markdown 来创建和更新一个简单的项目网站,以便让我的同事了解我正在构建的数据分析模型.页面上有一些图表(对于较小的图表)到目前为止工作得很好,他们可以在同一个地方看到代码和结果.
然而,一些图已经变得非常大(并且必须保持较大以允许快速并排比较模型),并且不能很好地适应页面.我已经使用了单独上传的pdfs(页面上有链接).如果有一种简单的方法可以生成其中一些图的缩略图,那么用户可以查看小图图像,点击它然后再详细检查更大的图像.但是,如果每个绘图实例需要大量的手动脚本,我宁愿不浪费时间在上面,只需上传几个pdf.这里有一个类似的问题谈论包,knitrbootsrap但是我不想缩略我的所有情节,只是选择少数.该软件包似乎使用Magnific弹出窗口,但在Markdown页面中将其自身集成似乎很麻烦(?).我没有在R Markdown参考指南中找到任何内容.当然,一种方法是生成两个图,一个很小,显示,并将其链接到另一个,更大的情节图像/ pdf单独上传 - 但更简单,更自动的方式是可取的.
因此,问题是 - 是否有一种更简单的方法可以在R Markdown中生成可点击的情节缩略图?
所以,这就是我想出的办法。添加一个绘图钩子,以便在块中生成小图像之前生成全分辨率 pdf 图像:
allow_thumbnails <- function(x, options) {
  if (!is.null(options$thumb)) {
    filename <- sprintf("%s.full.pdf", strsplit(basename(x), "\\.")[[1]][1])
    absolute_path <- file.path(dirname(x), filename)
    # generate the full resolution pdf
    pdf(absolute_path, width = options$thumb$width, height = options$thumb$height)
      eval(parse(text = options$code))
    dev.off()
    # add an html link to the low resolution png
    options$fig.link = absolute_path
  }
  knitr:::hook_plot_md_base(x, options)
}
然后在 Rmd 文件中,我使用参数定义全分辨率图像的大小thumb:
```{r init} 
    knit_hooks$set(plot = allow_thumbnails)
```
```{r my_large_plot, fig.width = 15, fig.height = 15, thumb = list(width = 45, height = 45)}
    my_large_plot()
```
这会生成一个带有可点击 png 的 html 文件,可将您带到 pdf 文件。