2017-07-07 110 views
0

我希望在同一个Rmarkdown文档中包含两个htmlwidgets-流程图来自DiagrammeR包和network3D图。如果我将它们都包含在我的文档中,那么它们都不会渲染,但如果我只包含其中的一个,那么它将被渲染。在Rmarkdown中混合netword3D和mermaid会渲染渲染

下面是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调用的顺序替换为无效。

回答

0

networkD3已于2017年2月更新为D3v4,version 0.3,该版本与D3的V3版本不兼容,D330的版本似乎是DiagrammeR似乎使用的版本。 htmlwidgets,这是基本的包驱动networkD3DiagrammeR,只使用最近的依赖的版本,让使用冲突的版本相同的库的htmlwidgets不能同时工作。查询here作为讨论这个问题的出发点。

您有几种可能的选择,但他们都不是伟大的...

  1. 复归networkD3到版本0.3 <,以便它也使用D3V3

  2. 大厅为DiagrammeR developers到升级到D3v4

  3. 大厅为htmlwidgets` developers提出了一种处理冲突的JavaScript依赖关系的强大方法

+0

是啊。就是这样。我已经提交了[问题与制图(https://github.com/rich-iannone/DiagrammeR/issues/232)开发商,我们将看到如何平移出。谢谢! – ekstroem