显示ggplot对象在rmarkdown作为html svg代码

jjjwad0x  于 2023-01-15  发布在  其他
关注(0)|答案(1)|浏览(128)

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

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

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

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

一切正常,但当我在Chrome中打开它并尝试Inspect Element时,发现整个情节都在`<img>`标签中。我想实现的是用整个`ggplot`的html代码创建`rmarkdown`文档。
我尝试使用`htmlSVG`函数,但它在`ggplot`上不起作用。我得到一个错误:

Error in FUN(Xi, ...) : argumemt is not a character vector


但是,当我把它包括在`rmarkdown`上时,它在基本情节-`htmlSVG(plot(data = sampled_df, z ~ price))`上工作得非常好。
您知道可以对`ggplot`对象执行相同的操作吗?
mmvthczy

mmvthczy1#

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

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

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

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

htmltools::HTML(s())

invisible(
      dev.off()
)

我使用`invisible`函数来隐藏`dev.off()`生成的消息。

相关问题