首页 文章

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

提问于
浏览
1

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

谢谢 .

1 回答

  • 7

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

    UPDATE (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

相关问题