2016-09-26 13 views
1

D3折りたたみツリーをhere としており、ノード間に何らかのパスを描きたいと思います。問題は、ツリーブランチが折りたたまれている場合、古いパスは削除されないということです。同様の解決策はhereですが、私は何か間違っています。 SVGパスをどのように更新するべきかアドバイスしてください。ツリーの上にSVGパスを描画します。

のinitのコードに、パス更新:

var path = svg.selectAll('path.sce').data(nodes); 
    path.attr('d', lineFunction(nodes)) 
     .style('stroke-width', 2) 
     .style('stroke', 'black') 
     .attr('class', 'arrow') 
     .attr('fill', 'none') 
     .attr('marker-end', 'url(#arrow)'); 

    path.enter().append('svg:path').attr('d', lineFunction(nodes)) 
     .style('stroke-width', 2) 
     .style('stroke', 'black') 
     .attr('class', 'arrow') 
     .attr('fill', 'none') 
     .attr('marker-end', 'url(#arrow)'); 

    path.exit().remove(); 

完全なコードを - jsfiddle

答えて

1

あなたの問題は非常に簡単です:あなたの更新して終了の選択が機能するために、あなたは、同じクラスを選択する必要がありますあなたの選択を入力して設定します。ここでは

var path = svg.selectAll('.arrow'); 

はあなたのフィドルです:http://jsfiddle.net/odf3q84L/

関連する問題