Экспортировать диаграмму русалки из DiagrammeR

Я пытаюсь экспортировать диаграмму Ганта из mermaid к файлу через R. Я был бы счастлив с любым форматом файла, но SVG или PNG были бы предпочтительнее. Я пытаюсь автоматизировать это, поэтому просто нажать экспорт через графический интерфейс не вариант.

Вот мой код:

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

И график, который он генерирует: Образец диаграммы Ганта

3 ответа

Решение

Из того, что я знаю о mermaid пока невозможно экспортировать в svg или другие форматы. Но можно сбросить много mermaid объекты в HTML через Rmd:

---
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 со всеми графиками в нем. Не оптимальное решение, но лучше, чем пытаться составлять множество диаграмм вручную.

Это сообщается о проблемах с 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 имеет полезную функцию для экспорта HTML-виджетов:

plotly::export(gannt, file = "mermaid.png")

Отмеченный 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')"

Другие вопросы по тегам