在节点点击时接收D3力布局图

mrk*_*b80 6 d3.js force-layout

我正在尝试创建一个重新集中点击的力图.

我是以此为基础:

在此输入图像描述

我试图调整点击功能来设置,d.fixed=true并为d.x和分配固定点d.y.

但是,我需要转向d.fixed=false所有其他节点.此外,节点在点击时不会转换到中心.

我的问题是如何将所有其他固定属性设置为false,然后使用新中心重绘力图?

在这里准备了一个例子:

在此输入图像描述

点击功能非常简单:

  function click(d) {
        d.fixed=true;
        d.x=10;
        d.y=10;
        update();
    }
Run Code Online (Sandbox Code Playgroud)

我尝试将此添加到函数中:

root.forEach(function (d) { d.fixed = false; });
Run Code Online (Sandbox Code Playgroud)

Pab*_*rro 6

您可以使用force.nodes()和迭代来访问节点以将fixed属性设置为false.

force.nodes().forEach(function(d) { d.fixed = false; });
Run Code Online (Sandbox Code Playgroud)

然后更新图表.我在这里分叉你的例子,并添加了一个双击监听器,重启强制布局.问候,