Rmarkdown 文件中的 DiagrammeR/mermaid 流程图,输出格式为 PDF/LaTex
Posted
技术标签:
【中文标题】Rmarkdown 文件中的 DiagrammeR/mermaid 流程图,输出格式为 PDF/LaTex【英文标题】:DiagrammeR/mermaid flowchart in Rmarkdown file with output format PDF/LaTex 【发布时间】:2020-06-05 18:38:48 【问题描述】:我想在使用 R markdown 生成的 PDF 中包含美人鱼图。
根据this post,mermaid 创建了一个 html 小部件作为输出。 不幸的是,那里为 xaringan 幻灯片提供的答案不适用于在 R markdown 中生成的 PDF。
下面是一个 Rmd-MWE。任何帮助是极大的赞赏!
---
title: "DiagrammeR: mermaid diagram in Rmd"
output: pdf_document
---
```r setup, include=FALSE
knitr::opts_chunk$set(echo = TRUE)
```
# Simple mermaid diagram
```r
library(DiagrammeR)
mermaid("
graph LR
A-->B
", height = '100%', width = '100%')
```
【问题讨论】:
按照@pwtw 的建议更新到最新的knitr
并安装webshot
解决了这个问题!请参阅info on HTML widgets used in non-HTML output formats“在 knitr v1.13 之前,将 HTML 小部件呈现为非 HTML 的输出格式时会出现错误。从 knitr v1.13 开始,HTML 小部件将自动呈现为通过 webshot
截取的屏幕截图包(长2019"
【参考方案1】:
在你的 Rstudio 控制台中运行这两行代码:
install.packages('webshot')
webshot::install_phantomjs()
https://bookdown.org/yihui/bookdown/html-widgets.html
【讨论】:
【参考方案2】:这是一种解决方法。用这个替换你最后一个块中的代码:
library(DiagrammeR)
library(networkD3)
library(webshot)
g <- mermaid("
graph LR
A-->B
", height = '100%', width = '100%')
saveNetwork(g, "g.html")
webshot("g.html", "g.png", vheight = 50)
【讨论】:
感谢您的建议。如果可行,最好采用无需额外存储和加载文件的解决方案。 另外,如果我运行您的代码,使用saveNetwork
生成的HTML 包含美人鱼图,但是使用webshot
生成的png 文件是空的。以上是关于Rmarkdown 文件中的 DiagrammeR/mermaid 流程图,输出格式为 PDF/LaTex的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Rmarkdown 文件中包含 DiagrammeR/mermaid 流程图
在 Word 文档中使用 DiagrammeR(使用 rMarkdown 生成)