从 DiagrammeR 导出美人鱼图
Posted
技术标签:
【中文标题】从 DiagrammeR 导出美人鱼图【英文标题】:Export mermaid chart from DiagrammeR 【发布时间】:2019-01-09 15:03:47 【问题描述】:我正在尝试通过 R 将甘特图从 mermaid
导出到文件。我对任何文件格式都很满意,但 SVG 或 PNG 会更好。我正在尝试自动执行此操作,因此不能简单地通过 GUI 按下导出。
这是我的代码:
library(DiagrammeR)
graph <- mermaid("
gantt
dateFormat HH:mm:ss.SSS
title Sample Test Gantt
section A
thing1 : 15:58:51.556, 16:05:23.494
section B
thing2 : 16:02:00.391, 16:20:46.533
section C
thing3 : 16:18:57.352, 16:23:10.700
thing4 : 16:24:11.705, 16:30:30.432
")
graph
它生成的图表:
【问题讨论】:
【参考方案1】:这是
DiagrammeR
软件包的一个已报告问题,因此您可能需要密切关注此页面以了解未来的更新:https://github.com/rich-iannone/DiagrammeR/issues/66
有两种方法可以解决此问题:
使用网页截图
另一种保存文件的方法是使用webshot
包。这使用外部依赖 phantomjs 将 html 小部件转换为图像。可以这样设置:
install.packages("webshot")
webshot::install_phantomjs()
使用你上面的例子:
library(DiagrammeR)
library(magrittr)
gannt %>%
htmltools::html_print() %>%
webshot::webshot(file = "gannt.pdf")
这会将绘图保存为 PDF,但您可以通过更改文件名来创建图像,即gannt.png
。
使用 plotly 包
plotly 包有一个用于导出 HTML 小部件的有用功能:
plotly::export(gannt, file = "mermaid.png")
【讨论】:
【参考方案2】:根据我对mermaid
的了解,目前还不能导出为svg
或其他格式。但是可以通过 Rmd 将许多 mermaid
对象转储到 HTML:
---
title: "Untitled"
author: "Me"
date: "August 1, 2018"
output: html_document
---
```r setup, include=FALSE
knitr::opts_chunk$set(echo = TRUE)
```
## R Markdown
This is an R Markdown document.
```r echo=FALSE, warning=FALSE, message=FALSE
library(DiagrammeR)
graph <- mermaid("
gantt
dateFormat HH:mm:ss.SSS
title Sample Test Gantt
section A
thing1 : 15:58:51.556, 16:05:23.494
section B
thing2 : 16:02:00.391, 16:20:46.533
section C
thing3 : 16:18:57.352, 16:23:10.700
thing4 : 16:24:11.705, 16:30:30.432
")
graph
graph
graph
```
它会生成一个包含所有图形的 HTML 文件。不是最佳解决方案,但比尝试手动生成大量图表要好。
【讨论】:
【参考方案3】:将 mysteRious 的答案标记为正确,因为它确实有帮助。对于将来遇到相同问题的任何人,这是我使用的完整解决方案:
导出.Rmd
---
title: "TestingExport"
author: "me"
date: "August 2, 2018"
output: html_document
---
```r setup, include=FALSE
knitr::opts_chunk$set(echo = TRUE)
```
```r echo=FALSE, warning=FALSE, message=FALSE
library(DiagrammeR)
graph <- mermaid("
gantt
dateFormat HH:mm:ss.SSS
title Sample Test Gantt
section A
thing1 : 15:58:51.556, 16:05:23.494
section B
thing2 : 16:02:00.391, 16:20:46.533
section C
thing3 : 16:18:57.352, 16:23:10.700
thing4 : 16:24:11.705, 16:30:30.432
")
graph
```
然后使用以下命令将其转换为 HTML:
Rscript -e "rmarkdown::render('...\\Export.Rmd')"
【讨论】:
我不完全确定您为什么需要这两个文件?您是否尝试过在 RStudio 中使用knit
按钮?
@MikeyHarper 我正在自动化它,所以我从 java 文件中调用它。不过我最终并不需要这两个文件,只是使用了以下命令:Rscript -e "rmarkdown::render('<filepath>')"
以上是关于从 DiagrammeR 导出美人鱼图的主要内容,如果未能解决你的问题,请参考以下文章
美人鱼图在 Rmarkdown xaringan 演示文稿中未正确呈现
如何让 GitHub Pages Markdown 支持美人鱼图?