有没有办法在R Markdown中自动为图像添加标识符?

时间:2017-10-09 13:51:23

标签: r knitr r-markdown

由于我正在尝试实现其他一些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选项来做到这一点。

1 个答案:

答案 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.extraT或不符合逻辑,则会添加等于块标签的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)
```

enter image description here

或者,请查看包kfigr