【问题标题】:D3-Force-Quicker stabilization of nodes & transition of elements in projectilesD3-Force-更快地稳定节点和弹丸中的元素过渡
【发布时间】:2019-05-11 10:24:11
【问题描述】:

我已经实现了以下版本的力图来显示节点的集群间移动。

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) 是否可以让节点沿着弹道移动?

【问题讨论】:

    标签: javascript d3.js data-visualization force-layout


    【解决方案1】:

    根据我的经验,要实现更快的稳定,您可以做以下两件事之一。

    1. 将节点 X 和 Y 值初始化为接近其结束/目标状态

    如nodes[i].x = 500等,则调用模拟开始。

    这会在一定程度上违背您在示例中尝试显示的目的,除非您不希望节点显示为移动到组中而只是在其中开始...

    1. 更强大的力量

    移动/拉动节点的力更强。这将需要对您处理此示例的方法进行根本性的改变。不只是转换它们的位置,而是在你的力布局中创建自定义力,只根据它们的属性影响适当的节点。将这些力放在“排序圈”的中心,它们会适当地吸引节点。

    在这里查看类似的内容:https://bl.ocks.org/mbostock/1021841

    【讨论】:

    • 我已经在 jsfiddle 代码中进行了更改以实现这两件事。我已将节点初始化为更靠近其集群中心(第 140,141 行),并且我还增加了将它们拉向其集群的力(第 173,182,183 行)。这可能稍微减少了稳定时间。 @A Zibuda 谢谢。我正在寻找更多的稳定性优化。
    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 2013-04-27
    相关资源
    最近更新 更多