我在R Studio中使用R Markdown和knitr
来创建和更新一个简单的项目网站,以便让我的同事了解我正在构建的数据分析模型。页面上有一些图表(对于较小的图表)到目前为止工作得很好,他们可以在同一个地方看到代码和结果。
然而,一些情节已经变得非常大(并且必须保持较大以允许快速并排比较模型),并且不能很好地适应页面。我已经使用了单独上传的pdfs(页面上有链接)。如果有一种简单的方法可以生成其中一些图的缩略图,那么用户可以查看一个小的图形图像,点击它然后再详细检查更大的图像。但是,如果每个绘图实例需要大量的手动脚本,我宁愿不浪费时间在上面,只需上传几个pdf。一个类似的问题here讨论了包knitrbootsrap
,但我不想缩略图所有我的情节,只有少数几个。该软件包似乎使用Magnific popup,但将其自己集成到Markdown页面似乎很麻烦(?)。我没有在R Markdown参考guide中找到任何内容。当然,一种方法是生成两个图,一个很小,显示,并将其链接到另一个,更大的情节图像/ pdf,单独上传 - 但更简单,更自动的方式是可取的。
因此问题是 - 是否有一种更简单的方式在R Markdown中生成可点击的情节缩略图?
答案 0 :(得分: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()
```
这将生成一个html文件,其中包含可点击的png,可将您带到pdf。