1

次のコードを使用して、d3.jsグラフのノードを移動しています。

d3.select("#"+ nodeid).attr("x",x);
d3.select("#"+ nodeid).attr("y",y);

これは正常に機能しますが、ノードを再度ドラッグし始めると、ノードは「ジャンプ」して元の位置に戻り、そこから移動を開始します。

私がここで間違っていることについて何か考えはありますか?

4

2 に答える 2

2

これもコードに追加することになりました

d3.select("#"+ nodeid).data([{x: x, y: y}]);
于 2012-08-07T01:19:53.353 に答える
1

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; });
};

svgSVGまたは他の親divはどこにありnode、ノードのクラスです)

おそらく、行/リンクも更新することをお勧めします。

于 2012-08-07T00:56:14.100 に答える