使用权重向量设置networkD3节点大小

时间:2017-10-30 23:18:11

标签: r tree data-visualization networkd3

我尝试在R中使用data.treeNetworkD3来创建文件系统的树表示,其中图表的节点按文件大小加权。

library(data.tree)
library(networkD3)

repo <- Node$new("Repository")
git <- repo$AddChild(".git")
prod <- repo$AddChild("Production")
exp <- repo$AddChild("Experimental")

repo$size <- 866000
git$size <- 661000
prod$size <- 153000
exp$size <- 48000

我可以使用Get获取这些大小的矢量,以便

sizes <- repo$Get("size")

但是当我尝试将它们放在一起时,我不确定如何在网络可视化步骤中包含此权重信息。试着做这样的事......

reponet <- ToDataFrameNetwork(repo,"repo")
net <- forceNetwork(reponet, Nodesize = repo$Get("size"))

无济于事。基本上我是在尝试做Julia Silge在这个伟大的SO blog post中所做的事情。有谁知道如何设置这个?

1 个答案:

答案 0 :(得分:4)

检查forceNetwork的帮助文件...有许多必须参数尚未设置。

您可以使用simpleNetwork绘制一个只有链接数据框的网络,但它不允许您控制节点大小......例如......

simpleNetwork(reponet)

要控制节点大小,您需要使用forceNetwork,但它需要链接数据帧和节点数据帧。您可以从您创建的sizes对象构建节点数据框,然后调整链接数据框中的源ID和目标ID,以匹配节点数据框中相应节点的索引(0索引,因为它&# 39; s发送给JavaScript)...例如......

nodesdf <- data.frame(name = names(sizes), nodesize = sizes / 10000, group = 1)

reponet$from <- match(reponet$from, nodesdf$name) - 1
reponet$to <- match(reponet$to, nodesdf$name) - 1

forceNetwork(reponet, Nodes = nodesdf, Source = "from", Target = "to", 
             NodeID = "name", Group = "group", Nodesize = "nodesize")