2017-07-07 146 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