【问题标题】:How to plot a directed Graph in R with networkD3?如何使用networkD3在R中绘制有向图?
【发布时间】:2017-02-05 11:05:20
【问题描述】:

当我使用 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 中做到这一点,我希望它很清楚。

谢谢。

【问题讨论】:

  • 通过有向图,我的意思是一个边缘像箭头的图。 :)

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


【解决方案1】:

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)

它应该看起来像......

【讨论】:

  • 非常感谢,您知道 R 中用于绘制交互式有向图的任何其他包吗?
  • igraph 是我所知道的最全面的网络分析和可视化包igraph.org
  • 是的,谢谢,我以前用过,但结果(图表)不是交互式的。
  • 刚刚找到 visNetwork 包。这可能对你有用。
  • 我正在研究 networkD3 的一个新分支,它将向链接线添加箭头。您可以通过使用...devtools::install_github('cjyetman/networkD3', ref = 'directed_arrows') 从 github 安装来测试它。然后将arrow = TRUE 添加到forceNetwork() 调用中,它应该使用箭头。我会对您的反馈感兴趣。
猜你喜欢
  • 2016-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-08
  • 2015-08-22
  • 2017-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多