我想在同一个Rmarkdown文档中包含两个htmlwidgets
- 来自DiagrammeR
包的mermaid
流程图和一个network3D
图。如果我在我的文档中都包含它们,那么它们都不会呈现,但如果我只包含其中一个,那么它将被渲染。
这是Rmarkdown中的一个最小示例,显示了问题
---
title: "Untitled"
author: "Me"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
## The grViz always works
```{r dia1, echo=FALSE}
library(DiagrammeR)
grViz("
digraph {
layout = twopi
A -> {B C D}
}")
```
# From here onwards I can only include one of the two graphs
```{r}
mermaid("
graph LR
A-->B
")
```
# Plot
```{r}
library(networkD3)
Source <- c("A", "A", "A", "A", "B", "B", "C", "C", "D")
Target <- c("B", "C", "D", "J", "E", "F", "G", "H", "I")
NetworkData <- data.frame(Source, Target)
# Create graph
simpleNetwork(NetworkData)
```
如果我根据grViz
添加多个DiagrammeR
图,那么一切都很好。另外,如果我省略mermaid
情节,那么我会看到剩下的两个。他们不应该一起玩得很好吗?我试图交换library
调用的顺序无济于事。
networkD3
在2017 年 2 月的 0.3 版中更新为 D3v4,这与 D3 的 v3 版本不兼容,而 D3 版本似乎正在使用DiagrammeR
。htmlwidgets
是驱动networkD3
和DiagrammeR
的底层包,它只使用最新版本的依赖项,因此使用同一库的冲突版本的 htmlwidget 不能同时工作。查看此处以获取有关此问题的讨论的起点。
您有一些可能的选择,尽管它们都不是很好......
将
networkD3
还原为 0.3DiagrammeR
开发人员升级到 D3v4 的大厅游说 htmlwidgets 的开发人员提出一种处理冲突 JavaScript 依赖关系的强大方法