将流程图或图形添加到编成 word_document (docx) 的 Rmarkdown 文档

Add flowchart or graph to Rmarkdown document that knits to word_document (docx)

我想将流程图(图形)添加到我正在创建的 Rmarkdown 文档中。流程图需要包含由某些 R 代码计算的数字。

我已经安装了 DiagrammeRnomnoml 软件包,因为它们看起来都可以满足我的需求。但是,尝试编织 .Rmd 文档 returns 出错:

Error: Functions that produce HTML output found in document targeting docx output.
Please change the output type of this document to HTML. Alternatively, you can allow
HTML output in non-HTML formats by adding this option to the YAML front-matter of
your rmarkdown file:

  always_allow_html: true

Note however that the HTML output will not be visible in non-HTML formats.

Execution halted

示例 .Rmd 文档:

---
title: "Untitled"
author: "Unauthored"
date: "n.d."
output: word_document

---

A DiagrammeR graph:

```{r}
DiagrammeR::grViz("digraph rmarkdown {A -> B}")
```

A nomnoml graph:

```{r}
nomnoml::nomnoml("[Hello]-[World!]")
```

Some writing after.

精简版:安装webshot和PhantomJS可以正确编织文档。这可以通过以下方式实现:

install.packages("webshot")
webshot::install_phantomjs()

稍长的版本: 如果您正在使用 nomnoml,如本例所示,您可能已经安装了 webshot,如所列作为 Imports。在这种情况下,您只需要 运行 webshot::install_phantomjs() 命令。

如果您按照编织错误消息中的说明将 always_allow_html: true 命令添加到 YAML frontmatter,并且已经安装了 webshot 但没有 PhantomJS,那么文档将编织但不包含流程图。但是,第一个代码块中的输出确实在输出的 Word 文档中有一条有用的错误消息:

## PhantomJS not found. You can install it with webshot::install_phantomjs(). If it is installed, please make sure the phantomjs executable can be found via the PATH variable.

按照该说明,即安装 PhantomJS,然后重新编织,会产生预期的输出。 DiagrammeR 图表和 nomnoml 图表都生成并插入到 Word 文档中。

此时,如果您添加了 always_allow_html: true,您也可以从 YAML 前端安全地删除它。