如何通过rmarkdown自动将networkD3::sankeyNetwork()保存到静态图像中?

当我在 rmarkdown 中写报告时,我所有的数字都自动保存在文件夹下graphs。但是,由于 Sankey 图不同,它不会自动保存为图片(.png 等...)。有解决方法吗?(没有通过 RStudio Plots 面板手动保存每个图表?)

我之前看到过这个问题。但是来自的选项rbokeh会产生低质量的图形。我尝试使用第二个选项,但是代码中似乎有错误,因为函数抛出object 'vl' not found.

由于这个问题是三年前的问题,我认为目前可能有更好的解决方案。

我要保存的示例图形:

---
title: "Untitled"
author: "Guilherme"
date: "12/5/2020"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE,
                      fig.path = "graph/")
```

```{r}
library(networkD3)
URL <- paste0('https://cdn.rawgit.com/christophergandrud/networkD3/',
              'master/JSONdata/energy.json')
energy <- jsonlite::fromJSON(URL)

# Plot
sankeyNetwork(Links = energy$links, Nodes = energy$nodes, Source = 'source',
             Target = 'target', Value = 'value', NodeID = 'name',
             units = 'TWh', fontSize = 12, nodeWidth = 30)
```

回答

这样的事情怎么样:

--
title: "sankey as image"
author: "..."
date: "12/5/2020"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE,
                      fig.path = "graph/")
```

```{r, fig.align='center'}
library(networkD3)
URL <- paste0('https://cdn.rawgit.com/christophergandrud/networkD3/',
              'master/JSONdata/energy.json')
energy <- jsonlite::fromJSON(URL)

# Plot
sn <- sankeyNetwork(Links = energy$links, Nodes = energy$nodes, Source = 'source',
             Target = 'target', Value = 'value', NodeID = 'name',
             units = 'TWh', fontSize = 12, nodeWidth = 30)

# you save it as an html
saveNetwork(sn, "sn.html")

library(webshot)
# you convert it as png
webshot("sn.html","sn.png", vwidth = 1000, vheight = 900)
```


以上是如何通过rmarkdown自动将networkD3::sankeyNetwork()保存到静态图像中?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>