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

我想使用rmarkdown在浏览器上显示ggplot对象作为svg.

---
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>范围内.标签.我想要实现的是用整个ggplot创建带有html代码的rmarkdown doc.

我尝试使用htmlSVG函数,但它不适用于ggplot.我收到一个错误:

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

但是,当我将它包含在rmarkdown上时,它在基本绘图上非常有效 – htmlSVG(plot(data = sampled_df,z~price)).

你知道有可能用ggplot对象做同样的事情吗?

最佳答案 我找到了解决方案.我所要做的就是使用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()
)

```

我使用隐形函数来隐藏由dev.off()生成的消息.

点赞