Фильтрация данных D3 JS

Я пытаюсь отфильтровать набор данных только для отображения меток для некоторых элементов выбора. Фильтр, показанный здесь, кажется, работает, за исключением того, что он создает тысячи пустых элементов, чего я, очевидно, хочу избежать. Это связано с тем, что фильтр появляется после добавления, но если я перемещаю фильтр над оператором append, он прерывается.

Что я делаю неправильно здесь

  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 } );

Ответы

Ответ 1

Похоже, вы хотите отфильтровать свои данные, прежде чем передавать его на 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 } );