簡體   English   中英

如何通過 rmarkdown 自動將 networkD3::sankeyNetwork() 保存到 static 圖像中?

[英]How can I save a networkD3::sankeyNetwork() into a static image automatically via rmarkdown?

當我在 rmarkdown 中編寫報告時,我所有的數字都會自動保存在文件夾graphs下。 但是,由於桑基圖不同,它不會自動保存為圖片(.png 等...)。 有解決方法嗎? (無需通過 RStudio Plots 面板手動保存每個圖表?)

我以前看到過這個問題 但是rbokeh的選項會產生低質量的圖形。 我嘗試使用第二個選項,但似乎代碼中有錯誤,因為 function throws 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)
```

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM