次のコードを使用して、d3.jsグラフのノードを移動しています。
d3.select("#"+ nodeid).attr("x",x);
d3.select("#"+ nodeid).attr("y",y);
これは正常に機能しますが、ノードを再度ドラッグし始めると、ノードは「ジャンプ」して元の位置に戻り、そこから移動を開始します。
私がここで間違っていることについて何か考えはありますか?
次のコードを使用して、d3.jsグラフのノードを移動しています。
d3.select("#"+ nodeid).attr("x",x);
d3.select("#"+ nodeid).attr("y",y);
これは正常に機能しますが、ノードを再度ドラッグし始めると、ノードは「ジャンプ」して元の位置に戻り、そこから移動を開始します。
私がここで間違っていることについて何か考えはありますか?
これもコードに追加することになりました
d3.select("#"+ nodeid).data([{x: x, y: y}]);
DOM要素(グラフィック)を更新していますが、基になるデータは更新しておらず、dragstartイベントは、データにまだ保存されている元の場所を使用しています。
次のようなものを試してください。
force.setNodeCoords = function (id, x, y) {
var fnodes = force.nodes();
fnodes[id].x = x;
fnodes[id].y = y;
force.nodes(fnodes);
svg.selectAll("circle.node")
.attr("cx", function(d) { return d.x; })
.attr("cy", function(d) { return d.y; });
};
(svg
SVGまたは他の親divはどこにありnode
、ノードのクラスです)
おそらく、行/リンクも更新することをお勧めします。