将rmarkdown中的ggplot对象显示为html svg代码

时间:2016-09-28 19:24:19

标签: r svg ggplot2

我想使用ggplot在浏览器上显示rmarkdown个对象。

---
title: ""
output: html_document
---

```{r setup, include = FALSE}
library(svglite)
library(ggplot2)
knitr::opts_chunk$set(
      dev = "svglite",
      fig.ext = ".svg"
)
```

```{r, warning = F}
data(cars)

ggplot(mtcars, aes(mpg, qsec, color = factor(cyl))) +
      geom_point()

```

一切正常,但当我在Chrome中打开它并尝试检查元素时,结果表明整个情节都在<img>标签内。我想要实现的是使用整个rmarkdown的html代码创建ggplot doc。

我尝试使用htmlSVG功能,但它不适用于ggplot。我收到一个错误:

Error in FUN(X[[i]], ...) : argumemt is not a character vector

但是,当我将其添加到htmlSVG(plot(data = sampled_df, z ~ price))时,它在基本情节rmarkdown上效果非常好。

您是否知道可以对ggplot个对象执行相同的操作?

1 个答案:

答案 0 :(得分:2)

我找到了解决方案。我所要做的就是使用生成整个代码的strstring,然后使用htmltools::HTML

---
title: ""
output: html_document
---

```{r setup, include = FALSE}
library(svglite)
library(ggplot2)
knitr::opts_chunk$set(
      dev = "svglite",
      fig.ext = ".svg"
)
```

```{r, warning = F, echo = F}
data(cars)

s <- svgstring()
ggplot(mtcars, aes(mpg, qsec, color = factor(cyl))) +
      geom_point()

htmltools::HTML(s())

invisible(
      dev.off()
)

```

我使用invisible函数隐藏按dev.off()生成的邮件。