Javascript 如何将特定的force布局d3.js节点转换为特定位置?

Javascript 如何将特定的force布局d3.js节点转换为特定位置?,javascript,d3.js,force-layout,Javascript,D3.js,Force Layout,我有一个强制布局,它有一个主节点,位于屏幕固定位置的中心,周围是浮动的节点,而不是固定的节点 例如: 当我单击主节点周围浮动的一个节点时,我希望单击的节点成为新的主节点。我想将单击的节点设置为页面中心的动画,并固定其位置 单击后,我可以将节点居中,而无需动画: force.stop(); d3.select("[title='" + nodeName + "']") .classed("fixed", function(d) { return d.fixed = true })

我有一个强制布局,它有一个主节点,位于屏幕固定位置的中心,周围是浮动的节点,而不是固定的节点

例如:

当我单击主节点周围浮动的一个节点时,我希望单击的节点成为新的主节点。我想将单击的节点设置为页面中心的动画,并固定其位置

单击后,我可以将节点居中,而无需动画:

force.stop();

d3.select("[title='" + nodeName + "']")
    .classed("fixed", function(d) { return d.fixed = true })
    .attr("transform", "translate("+ (width / 2) +","+ (height / 2) +")")
    .attr("cx",(width / 2))
    .attr("cy",(height / 2));
但一旦再次启动“力”布局,节点将返回到居中之前的位置


是否有一种方法可以在单击时将节点设置为特定坐标?

您需要相应地设置节点数据的x和y以及可能的px和py属性,并将其固定为true。或者,如果节点的基准d的属性固定为true,您可以使通常渲染力布局的现有代码决定以不同的方式定位节点。当然,当单击节点时,您还需要将该属性设置为true。@Larskothoff如果我编辑节点数据的x和y,您对如何设置变换动画有何想法?您可以使用设置属性的自定义tween函数进行转换。