Javascript 如何在D3中添加强制拖动事件并使节点停留在我离开的位置?
我有一个D3 api,它显示了节点之间的一些关系。我想在这里应用force.drag()事件,我将把节点拖到某个位置,离开节点,它将留在那里。我这里有一个工作小提琴,它显示了节点之间的关系。有人能帮我在这个api中执行此事件吗 这是小提琴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
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布局中
例如