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

标签 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 中所做的事情。有谁知道如何设置吗?

最佳答案

检查 forceNetwork 的帮助文件...有许多您尚未设置的强制参数。

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

simpleNetwork(reponet)

要控制节点大小,需要使用forceNetwork,但它需要一个链接数据帧和一个节点数据帧。您可以从您创建的 sizes 对象构建节点数据框,然后调整链接数据框中的源 ID 和目标 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")

关于r - 使用权重向量设置 networkD3 节点大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47025650/

相关文章:

r - SpatialLinesDataFrame : how to calculate the min. 点和线之间的距离

javascript - d3 圆弧图 - 添加顶部半圆

image - 如何自动选择n种不同的颜色来绘制n个不同的对象?

r - 比较 R 中的 2 个数据集

regex - 为什么标点符号的 R gsub(或正则表达式)没有得到所有标点符号?

python - ggplot2:绘制安德鲁斯曲线

sql - 有效地通过覆盖处理继承

python - 循环处理列表中的项目,重新循环直到处理完所有项目

c# - 从按树顺序排序的树创建平面列表

python - 在 matplotlib 中绘制给定 y 范围内的垂直线