如何用networkD3在R中绘制有向图?

时间:2017-02-05 11:05:20

标签: r d3.js directed-graph htmlwidgets networkd3

当我使用NetworkD3绘制有向图时,边缘不是定向的,我该如何修复它? 一个例子:

library(networkD3)
data(MisLinks)
data(MisNodes)
forceNetwork(Links = MisLinks, Nodes = MisNodes,
         Source = "source", Target = "target",
         Value = "value", NodeID = "name",
         Group = "group", opacity = 0.8)

我希望结果是定向的这是有向图的定义:

“有向图是图形,即连接在一起的一组对象(称为顶点或节点),其中所有边都从一个顶点指向另一个顶点。有向图有时被称为有向图或有向图网络“。

我希望边缘像箭头一样,我怎么能在networkD3中做到这一点,我希望它很清楚。

THX。

1 个答案:

答案 0 :(得分:8)

networkD3包的forceNetwork()函数不会在有向图的链接上绘制箭头。我可以肯定地说,因为我是当前活跃的开发人员之一,我非常了解该功能及其选项。您还可以在R控制台中运行?networkD3::forceNetwork以查看帮助文件以及forceNetwork()功能的所有可能选项。

更新(2017.03.20)

此功能(绘制有向图的箭头)现在是networkD3官方CRAN版本的一部分。安装完成后,您可以绘制带有箭头的定向forceNetwork ...

library(networkD3)
URL <- paste0("https://cdn.rawgit.com/christophergandrud/networkD3/",
              "master/JSONdata/miserables.json")
MisJson <- jsonlite::fromJSON(URL)
ValjeanInds <- which(MisJson$links == 11, arr = TRUE)[, 1]
ValjeanCols <- ifelse(1:nrow(MisJson$links) %in% ValjeanInds, "#bf3eff", "#666")

forceNetwork(Links = MisLinks, Nodes = MisNodes, Source = "source", Target = "target", 
             Value = "value", NodeID = "name", Group = "group", opacity = 0.8, 
             linkColour = ValjeanCols, arrows = TRUE, zoom = TRUE)

它应该看起来像...... directed forceNetwork with arrows