Данные объединяются с помощью d3.stack.layout ()

Я создал планку, чтобы продемонстрировать мою проблему.

Проблема в том, что мои методы .enter (), update (), exit () не работают для моей визуализации d3.chart.layout ().

Вместо этого я получаю классическую проблему с двойной стойкой. Однако у меня те же ключи.

Я хочу, чтобы мой график Steam d3 обновил свои данные (так, чтобы все значения y были равны 0, а диаграмма исчезла). Моя привязка данных обычно кодируется:

var steam = svg.selectAll(".layer")
    .data(layers, function(d){console.log(d); return d.key})

steam.enter().append("path")

steam.style("fill", function(d, i) { return z(i); }).style("opacity","0").transition().duration(400)
    .style("opacity","1")
    .attr("class", "layer")
    .attr("d", function(d) { return area(d.values); })

steam.exit().transition().duration(500).remove()

Что происходит / есть идеи?


person Union find    schedule 21.09.2014    source источник


Ответы (1)


Итак, я заставил его работать, хотя я до сих пор не понимаю, почему это так. Мне нужно было переместить добавление svg из функции обновления в пространство имен (это было очевидно).

Но обновление стало этим с помощью метода transition (). Может ли кто-нибудь помочь мне понять, где я ошибся?

  test = svg.selectAll("path").data(layers, function(d){return d.key})

      test.enter().append("path")

      test.style("opacity",1).style("fill", function(d, i) { return z(i); })
        .attr("class", "layer").transition()
      .duration(2000)
        .attr("d", function(d) { return area(d.values); });

      test.exit().transition().duration(1500).style("opacity",0).remove();
person Union find    schedule 21.09.2014
comment
Этот сегмент кода выглядит точно так же, как в вашем вопросе. В чем разница? - person Lars Kotthoff; 21.09.2014
comment
Это был двойной элемент svg и плохая настройка непрозрачности. У меня все еще есть вопросы о том, как сохранить постоянство с элементами, вложенными в объект данных слоя. Есть ли шанс, что мы могли бы поговорить? - person Union find; 21.09.2014
comment
Может, это лучше как отдельный вопрос? - person Lars Kotthoff; 21.09.2014