从DiagrammeR

时间:2018-08-01 23:17:56

标签: html r r-markdown diagrammer mermaid

我正尝试通过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

它生成的图形: A sample Gantt chart

3 个答案:

答案 0 :(得分:1)

根据我对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文件。这不是最佳解决方案,但是比尝试手动生成大量图表更好。

答案 1 :(得分:1)

  

这是一个DiagrammeR软件包的已报告的问题,因此您可能需要关注此页面以进行将来的更新:https://github.com/rich-iannone/DiagrammeR/issues/66

有两种方法可以解决此问题:

使用Webshot

保存文件的另一种方法是使用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 :(得分:0)

将“ mysteRious”答案标记为正确,因为确实有帮助。对于将来遇到相同问题的任何人,这是我使用的完整解决方案:

Export.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')"