2013-04-26 99 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