我正在尝试在 R 中使用 data.tree
和 NetworkD3
来创建文件系统的树表示形式,其中图形的节点按文件大小加权。
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博客文章中所做的工作。有谁知道如何设置这个?
检查帮助文件以了解forceNetwork
...有许多必需的参数尚未设置。
您可以使用simpleNetwork
像您一样仅使用链接数据框绘制网络,但它不允许您控制节点大小...例如。。。
simpleNetwork(reponet)
要控制节点大小,您需要使用 forceNetwork
,但它需要链接数据框和节点数据框。您可以从创建的sizes
对象构建节点数据框,然后调整链接数据框中的源和目标 ID,以匹配节点数据框中相应节点的索引(0 索引,因为它已发送到 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")