2013-04-26 21 views
14

一部の選択要素のラベルのみを表示するようにデータセットをフィルタリングしようとしています。ここに示されているフィルタは、何千もの空白の要素を作成する点を除いて、うまくいくように思われます。これは、フィルタが追加の後に来るためですが、フィルタをappend文の上に移動すると、フィルタが破損します。D3 JSデータフィルタリング

私はここで間違っ

var labels = svg.selectAll("text.label") 
    .data(partition.nodes(bp.data.preparedData)) 
    .enter() 
    .append("text") 
    .filter(function(d){return d.ci_type === 'type'}) 
     .attr("class", "label") 
     .attr("transform", function(d) { return "translate(" + arc.centroid(d) + ")"; }) 
     .text(function(d, i) { return d.name }); 

答えて

25

何をやっているあなたはD3に渡す前に、あなたのデータをフィルタリングするように聞こえます。つまり、あなたのコードは

var labels = svg.selectAll("text.label") 
    .data(partition.nodes(bp.data.preparedData).filter(
      function(d){return d.ci_type === 'type'})) 
    .enter() 
    .append("text") 
    .attr("class", "label") 
    .attr("transform", function(d) { return "translate(" + arc.centroid(d) + ")"; }) 
    .text(function(d, i) { return d.name }); 
+1

です。ありがとうございました! :) – Cheyne