この問題で数日間立ち往生しています。誰かがここで私を助けてくれることを願っています、ありがとう
私がやろうとしていることはこれです
関連するノードに従ってグループ化されたリンクの束があります
svgはこのようなものです
<g class = "edge" >
<path d="M 10,20L 176.04599778748948,300.5015249766384" ></path>
<path d="M 30,40L 176.04599778748948,300.5015249766384" ></path>
</g>
<g class = "edge" >
<path d="M 50,60L 176.04599778748948,300.5015249766384" ></path>
<path d="M 70,80L 176.04599778748948,300.5015249766384" ></path>
</g>
データセットは次のようになります
var nodes = [
[" start", null, 0, [
["home", 1711, 1]
]],
["home", null, 4.279281698E9, [
[" stop", 1173, 1]
]],
[" stop", null, 0, []]
];
var layout = [
[100, 200,10],
[300, 300,50],
[50, 50,10]
];
私はエッジを初期化しようとします:
var svg_edges = svg.append("g").attr("class", STYLE.edges)
.selectAll("g")
.data(nodes,function(d){ return d[0];}).enter().append("g").selectAll("path")
.data(function(d) { return d[3]; },function(d){return d[0]})
svg_edges.enter().append("path")
drawEdge(svg_edges,false);
/* Exit. */
svg_edges.exit().remove();
次に、これらのエッジのグループの更新を行いたい
function update (){
edges = svg.select("g." + STYLE.edges).selectAll("g").data(nodes,function(d){ return d[0];})
edges = edges.selectAll("path").data(function(d){ return d[3]},function(d){return d[0]})
edges.enter().append("path")
drawEdge(edges,true)
edges.exit().remove();
}
そして、更新は機能しませんでした。リンクの半分を追加または削除するだけです。誰かが以前にこれを行いましたか。ネストされた選択を更新してみてください。ありがとう~~
============================== 最後に、私はここで解決策を見つけました。
/* Update the edges. */
group = svg.select("g." + STYLE.edges).selectAll("g").data(nodes,function(d){ return d[0];});
edges1=group.enter().append("g").selectAll("path").data(function(d){return d[3]})
edges2=group.selectAll("path").data(function(d){return d[3]})
edges1.enter().append("path")
edges2.enter().append("path")
drawEdge(edges1,true)
drawEdge(edges2,true)
edges1.exit().remove();
edges2.exit().remove();
group.exit().remove();