我想使用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()生成的消息.