在 R Markdown/knitr 中缩略图的简单方法是什么?

What is a simple way to thumbnail some plots in R Markdown/knitr?

我在 R Studio 中将 R Markdown 与 knitr 结合使用来创建和更新一个简单的项目网站,让我的同事跟上我正在构建的数据分析模型的速度。页面上有一些图,(对于较小的图)到目前为止效果很好,他们可以在同一个地方看到代码和结果。

但是,有些图变得非常大(并且必须保持大以允许快速并排比较模型),并且不能很好地适合页面。我为其中一些使用了单独上传的 pdf(页面上有 link)。如果有一种简单的方法可以生成其中一些图的 缩略图 ,这样用户就可以查看小图图像,单击它然后检查更大的图像会更好详细地。但是,如果每个绘图实例都需要大量手动编写脚本,我宁愿不在上面浪费时间而只上传几个 pdf 文件。一个类似的问题here talks about package, knitrbootsrap, but I don't want to thumbnail all my plots, just a select few. The package seems to use Magnific popup, but integrating it myself in a Markdown page seems like a hassle(?). I didn't find anything in the R Markdown reference guide。当然,一种方法是生成两个图,一个很小,已显示,link 生成另一个更大的图 image/pdf,单独上传 - 但更简单、更自动的方法是可取的。

因此问题 - 是否有更简单的方法在 R Markdown 中生成可点击的绘图缩略图?

所以,这就是我想出的。添加一个 plot hook,以便在块中生成小图像之前生成全分辨率 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()
```

这会生成一个 html 文件,其中包含可将您带到 pdf 的可点击 png。