2013-04-26 100 views
14

我試圖過濾一個數據集,只顯示一些選擇元素的標籤。這裏顯示的過濾器似乎工作,除了它創造了成千上萬的空白元素,我顯然希望避免。這是因爲過濾器出現在append之後,但如果我將過濾器移到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 2013-04-26 21:30:13