R Markdown/knitr中如何简单地生成缩略图?

7
我正在使用R Markdown与R Studio中的knitr来创建和更新一个简单项目网站,以便让我的同事了解我正在构建的数据分析模型。页面上有一些图表,对于较小的图表来说,这种方式效果很好,他们可以在同一位置看到代码和结果。
然而,一些图表已经变得非常大(必须保持大以允许快速并排比较模型),不太适合放在页面上。我已经为其中一些使用了单独上传的pdf文件(页面上有链接)。如果能够简单地生成某些图表的缩略图,那么用户就可以查看小的图表图像,单击它,然后详细查看更大的图像。但是,如果每个情况都需要手动编写脚本,我宁愿不要浪费时间,只需上传几个pdf文件即可。类似的问题在这里here,讨论了包knitrbootsrap,但我不想对所有图表进行缩略图处理,只选取其中的一些。该包似乎使用了Magnific popup,但将其自己集成到Markdown页面中似乎有点麻烦。在R Markdown参考guide中我没有找到任何信息。当然,一种方法是生成两个图表,一个微小的图表,显示它,并链接到另一个上传单独的较大的图表图像/PDF——但更简单、更自动化的方式更好。
因此,问题是:是否有更简单的方法在R Markdown中生成可点击的图表缩略图?
1个回答

1
所以,这就是我想出来的。添加情节钩子,以便在生成块中的小图像之前生成全分辨率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文件。

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