Javascript 如何在D3中添加强制拖动事件并使节点停留在我离开的位置?

Javascript 如何在D3中添加强制拖动事件并使节点停留在我离开的位置?,javascript,d3.js,Javascript,D3.js,我有一个D3 api,它显示了节点之间的一些关系。我想在这里应用force.drag()事件,我将把节点拖到某个位置,离开节点,它将留在那里。我这里有一个工作小提琴,它显示了节点之间的关系。有人能帮我在这个api中执行此事件吗 这是小提琴 var node = vis .selectAll("g.node") .data(data.nodes) .enter() .append("svg:g") .attr("class", "node") .call(force.dra

我有一个D3 api,它显示了节点之间的一些关系。我想在这里应用force.drag()事件,我将把节点拖到某个位置,离开节点,它将留在那里。我这里有一个工作小提琴,它显示了节点之间的关系。有人能帮我在这个api中执行此事件吗

这是小提琴

var node = vis
  .selectAll("g.node")
  .data(data.nodes)
  .enter()
  .append("svg:g")
  .attr("class", "node")
  .call(force.drag);


我认为应该在此处进行更改

解决方案包括在dragstart上将“fixed”node属性设置为true

var drag = force.drag()
    .on("dragstart", dragstart);

var node = vis.selectAll("g.node").data(data.nodes).enter().append(
    "svg:g").attr("class", "node").call(drag);

function dragstart(d) {
  d.fixed = true;
}
请看这里:

更新小提琴:

文件:

如果希望拖动的节点在拖动后保持固定,请设置 修复了dragstart上属性为true的问题,如在sticky force布局中 例如