在d3力导向布局中优化电荷,linkDistance和重力

时间:2013-02-25 20:45:54

标签: d3.js social-networking data-visualization force-layout

我在过去的国会期间建立了参议院投票模式的强制导向布局。基于将至少75%的时间投票在一起的任何两位参议员联系起来,有102个节点和2,600个边缘:

Senate Social Network

我已经使用了电荷,重力和linkDistance的系数,希望能找到节点不会过于聚集或人为分离的最佳点。使用linkDistance创建的空间比连接两个集群的四个红色节点之间的逻辑空间大得多。不设置linkDistance会导致两个群集相距很远。

是否有基于边缘密度或任何其他社交网络分析指标选择正确值的指导原则?

目前的布局定义是:

var force = d3.layout.force()
    .nodes(d3.values(nodes))
    .links(d3.values(links))
    .size([width - 2 * margin, height - 2 * margin])
    .charge(-80)
    .gravity(0.25)
    .linkDistance(50)
    .on("tick", tick)
    .start();

谢谢!

更新:这对jsFiddle来说有点复杂,但随意clone or fork on GitHub

1 个答案:

答案 0 :(得分:7)

没有“正确”的值 - 您可能想要选择的值完全取决于您想要显示的内容。

但是,您可以使用一些指标作为指导。顾名思义,clustering coefficient是对“聚类”图形的衡量标准。这是整个图形的属性,但您也可以将其应用于子图形(即红色或蓝色点)。

node degree的相关度量,它基本上计算节点之间的链接。图表还有很多其他属性,例如Lovász number

这些都不会为您提供您想要设置的参数的特定值(并且没有任何内容!),但是您可能会发现根据这些测量中的某些测量来表示这些参数很有用(例如,设置链接距离为平均节点度乘以常数)。