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 生成)

美人鱼图在 Rmarkdown xaringan 演示文稿中未正确呈现

DiagrammeR:调整节点内的字体大小

从 DiagrammeR 导出美人鱼图

Mermaid DiagrammeR 之旅