Фильтрация данных D3 JS - программирование
Подтвердить что ты не робот

Фильтрация данных 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 } );
4b9b3361

Ответ 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 } );