Перезапись радиальной гистограммы D3 вместо обновления - PullRequest
0 голосов
/ 16 января 2020

Вот код: sfdata - это просто данные точечного огня в формате json, который работает нормально

При обновлении я пробовал svg.selectAll ('g'), но все же не удаляет , Нужно ли создавать идентификаторы для всех g элементов, чтобы удалить его, используя в качестве идентификатора?

var svg = d3.select("svg").attr("class", "svg-content"),
    width = +svg.attr("width"),
    height = +svg.attr("height"),
    innerRadius = 100,
    outerRadius = Math.min(width, height) * 0.30



  function updateAll (sfdata){

svg.selectAll("g").exit().remove();

g = svg.append("g")
    .attr("transform", "translate(" + width / 2 + "," + height * 0.5 + ")")
    .attr("id","geez");



  var herenow = g.append("g")
    .selectAll("g")
    .data(d3.stack().keys(data.columns.slice(1,-1))(data))
    .enter().append("g")
      .attr("fill", function(d) { return z(d.key); })
    .selectAll("path")
    .data(function(d) { return d; })
    .enter().append("path")
      .attr("d", d3.arc()
          .innerRadius(function(d) { return y(d[0]); })
          .outerRadius(function(d) { return y(d[1]); })
          .startAngle(function(d) { return x(d.data.category); })
          .endAngle(function(d) { return x(d.data.category) + x.bandwidth(); })
          .padAngle(0.01)
          .padRadius(innerRadius));

  var label = g.append("g")
    .selectAll("g")
    .data(category_list)
    .enter().append("g")
      .attr("text-anchor", "middle")
      .attr("transform", function(d) { return "rotate(" + ((x(d) + x.bandwidth() / 2) * 180 / Math.PI - 90) + ")translate(" + innerRadius + ",0)"; });


  var legend = g.append("g")
    .selectAll("g")
    .data(data.columns.slice(1).reverse())
    .enter().append("g")
      .attr("transform", function(d, i) { return "translate(-40," + (i - (data.columns.length - 1) / 2) * 7 + ")"; });

};
updateAll(sfdata);

};

ссылка на редактируемую версию - https://blockbuilder.org/Shribro/44104761a5cdbed87df5ad652fe0b47f

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...