私は、データ変更時に複数のノード属性と追加された要素を更新する方法を探しています。D3.jsフォースグラフのノードデータを更新する方法は?
ここで私は今それをやろうとしています。 この関数は、毎回呼び出されるノードまたはデータのリンクを取得します。
function restart() {
link = link.data(links);
link
.enter().insert("line", ".node")
.attr("class", "link")
.on('click' , function(d, i){
console.log(d);
links.splice(i,1);
restart();
})
.on("mouseover", function() {
d3.select(this).style("stroke","red");
d3.select(this).style("stroke-width","5px");
})
.on("mouseout", function() {
d3.select(this).style("stroke","#999");
d3.select(this).style("stroke-width","initial");
});
link
.exit().remove();
node = node.data(nodes);
node
.enter()
.append("g")
.attr("class", "node")
.call(node_drag);
node
.insert("circle", ".cursor")
.attr("r", function(d) { return calcSize(d.links+1); })
node
.append("text")
.attr("dx", 12)
.attr("dy", ".35em")
.text(function(d) { return d.links });
node
.exit().remove();
force.start();
}
現在の状態での完全なコードはここで見ることができます:http://jsbin.com/takatugazo/edit?html,js,output
予想される動作は、2つのノードが互いの中にドラッグを取得するとき、彼らは彼らに大きなを持ってリンクしてより多くのリンクを作成することです取得する。
私はあなたのコードが期待どおりに動作しているのを見ていますが、あなたの問題は何ですか? – paradite
追加されたテキストはそうでないことを示す最も明白な証拠であり、d.linksが変更されたときに更新されるはずです。ノードのサイズも私が望むように更新していませんが、テキストを更新する方法を考え出すと、それを修正する方法もわかります – coiso