Экспортировать диаграмму русалки из 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')"