【问题标题】:Export mermaid chart from DiagrammeR从 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

它生成的图表:

【问题讨论】:

    标签: html r r-markdown diagrammer mermaid


    【解决方案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('&lt;filepath&gt;')"
        猜你喜欢
        • 2020-08-16
        • 1970-01-01
        • 2018-12-24
        • 2022-12-22
        • 1970-01-01
        • 2019-06-16
        • 2022-11-07
        • 2016-02-10
        • 1970-01-01
        相关资源
        最近更新 更多