看起来最大的计算boggleneck实际上出现在.on("tick", tickActions)
步骤中,当代码计算如何绘制所有路径时,即使是不可见的路径。
对于任何人的兴趣,我改变了tick actions
功能绘制边缘或在此之前首先检查type
变量:
function tickActions() {
// plot the curved links
link.attr("d", function(d) {
if (d.type != draw_type) return null;
// code to draw paths
});
}
通过改变draw_type
变量,你可以决定哪些边真正得到计算,并得出。
除此之外,您还需要忽略某些边缘的强度。我知道,我想被间隔仅基于直边我的图形,所以我做了simulation.force('link', link_force)
属性如下:
var link_force = d3.forceLink()
// code for .id and .distance attributes
// return 0 for all non
.strength(function(d) {
if (d.type != 'straight') return 0;
return 0.3;
});
通过将所有非直线边缘的强度为0,力算法在间隔节点时基本上忽略它们。
最后,我添加了一个restart_network()
函数,它更新图形。可以使用这个函数来改变图中看到的实际链接数据,但我也决定包含其他更改。
function restart_network() {
simulation.force("link", link_force);
simulation.alpha(1).restart();
}