为了账号安全,请及时绑定邮箱和手机立即绑定

具有超过 2600 个节点的 d3.js 集群气泡

具有超过 2600 个节点的 d3.js 集群气泡

慕姐4208626 2022-10-13 15:40:46
我一直遇到节点布局问题。我复制了这个可观察的https://observablehq.com/@d3/clustered-bubbles,它适用于较小的节点,但对于较大的节点似乎真的失真了。我在带有打字稿的反应应用程序中使用它。我没有可用的工作片段,因为数据很大。这些是问题体验的一些截屏视频: https ://share.getcloudapp.com/lluJnbWl https://share.getcloudapp.com/jkuQYBpq它不会强迫他们正确地进入他们的小组,并且动画效果不佳。
查看完整描述

1 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

所以对于任何有同样问题的人,我们意识到我们在forceCluster方法中使用了不正确的字段:


function forceCluster(nodes) {

    const strength = 0.2;


    function force(alpha) {

        const centroids: any = d3Array.rollup(nodes, centroid, (d: any) => d.data.group);

        const l = alpha * strength;

        for (const d of nodes) {

            const { x: cx, y: cy } = centroids.get(d.data.group);

            d.vx -= (d.x - cx) * l;

            d.vy -= (d.y - cy) * l;

        }

    }


    force.initialize = (_) => (nodes = _);


    return force;

}

就这样d.group变成了d.data.group。


我们还更改了节点动画:


node.transition()

    .delay((d, i) => 50)

    .duration(750);


查看完整回答
反对 回复 2022-10-13
  • 1 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信