2017-10-09 41 views
4

由于我试图实现一些其他的JavaScript,我希望能够在编译的RMarkdown文件中轻松区分和定位图像。以标准的方式与代码,块有没有办法在R Markdown中自动添加标识符到图像?

```{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选项来做到这一点。

回答

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) 
``` 

enter image description here

或者,看看在封装kfigr

+0

谢谢@怡辉! –

相关问题