我已经实现了以下版本的力图,以显示节点在集群间的移动。
https://jsfiddle.net/Edwig_Noronha/67ey5rz0/
节点被分组到四个集群中。在力图的第一次初始化结束后,我调用一个函数将节点从源集群转移到目标集群。
function moveNodes() {
Object.keys(inputdata).forEach(function(key, index) {
svg.selectAll("circle.viewernodes" + index)
.each(function(d) {
d.type = d.destination;
});
});
viewersTransitioned = true;
force.start();
}然而,力图的第一次初始化的稳定大约需要35秒。因此,转换发生在这么长的时间之后。
Q1)有没有可能通过碰撞检测实现力图更快的稳定?
节点从源集群到目标集群的转换沿线性路径发生。
Q2)有没有可能让节点沿着射弹路径移动?
发布于 2018-12-10 22:10:12
根据我的经验,要实现更快的稳定,你可以做两件事中的一件。
将节点X和Y的值设置为接近其最终/目标state
例如nodesider.x= 500等,然后调用模拟开始。
这在某种程度上违背了您试图在示例中显示的目的,除非您不希望节点一开始就显示为移动到组中而只是在组中……
使移动/拉动节点的力更强。这将要求您对此示例的方法进行本质上的根本更改。不只是变换它们的位置,而是在力布局中创建自定义力,这些力仅根据节点的属性影响相应的节点。把这些力放在你的“排序圆”的中心,它们会适当地吸引节点。
在这里可以看到类似下面这样的内容:https://bl.ocks.org/mbostock/1021841
https://stackoverflow.com/questions/53707028
复制相似问题