由于我正在尝试实现其他一些javascript,我希望能够在编译的RMarkdown文件中轻松区分和定位图像。使用这种代码块以标准方式生成的图像
```{r}
plot1 <- ggplot(data = mtcars, aes(x = wt, y = mpg, group = am, color = am)) +
geom_point(size = 3)
plot1
```
导致HTML
<img src = "data:image/png..." width = 1000/>
我希望能够自动为每个图像添加唯一标识符,以便每个此类调用都会产生类似
的内容<img src = "data:image/png..." id = "plot1" width = 1000/>
我可能会在JS中写这个,但我想知道是否有办法用一些RMarkdown选项来做到这一点。
答案 0 :(得分:5)
您可以像这样创建一个块选项挂钩:
knitr::opts_hooks$set(out.extra = function(options) {
options$out.extra <- paste0(ifelse(!is.logical(options$out.extra), options$out.extra, "")," id='", options$label, "'")
options
})
现在,如果out.extra
为T
或不符合逻辑,则会添加等于块标签的ID。如果它不是逻辑而是类型字符,它的值将在id属性之前插入。考虑以下示例,我们在图中添加边框。 id也设置好了!
完整示例:
---
title: "Out.Extra"
author: "Martin Schmelzer"
date: "10/9/2017"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
knitr::opts_hooks$set(out.extra = function(options) {
options$out.extra <- paste0(ifelse(!is.logical(options$out.extra), options$out.extra, "")," id='", options$label, "'")
options
})
```
## Slide with Plot
```{r pressure, out.extra = 'style="border: red 3px solid;"'}
plot(pressure)
```
或者,请查看包kfigr。