使用D3.js版本4设置重力中心

时间:2017-03-22 17:47:46

标签: d3.js d3.js-v4

我正在尝试使用D3.js VERSION 4创建与http://mbostock.github.io/d3/talk/20111018/collision.html类似的应用。

以下是我模拟中使用的力:

    svg.on('mousemove', function() {
        let p1 = d3.mouse(this);
        root.x = p1[0];
        root.y = p1[1];
        simulation.restart();
    });
    simulation
            .force('charge_force',
                d3.forceManyBody()
            )
            .force('center_force',
                d3.forceCenter(480, 300)
            )
            .force('x_force', d3.forceX(960).strength(0.5))
            .force('y_force', d3.forceY(600).strength(0.5))
            .force('collide', d3.forceCollide(10).strength(1)
                .radius((d, i) => { return i ? d.radius : d.radius + 100; })
    );

我遇到的问题是被击退的点永远不会回到中心。请参阅下面的屏幕截图。

在第一张照片中,所有点都围绕着重心。移动鼠标后,点到处都被排斥,不会返回原来的位置。

The original clustered dots Dots are repelled after moving the mouse, but do not return to the gravity center

我错过了什么?任何帮助都非常感谢!!!

1 个答案:

答案 0 :(得分:0)

我改变了

后问题得到了解决

simulation.restart();

作为

simulation.alpha(1).restart();