Czy układ treemap d3 jest buforowany, gdy przekazywany jest do niego węzeł główny?

Próbowałem animować d3 treemap i miałem coś takiego

<code>App.svg = d3.select("#medals-tree-map").append("svg:svg")
    .style("width", App.canvasWidth)
    .style("height", App.canvasHeight)
  .append("svg:g")
    .attr("transform", "translate(-.5,-.5)")
    .attr("id", "container");

App.treemap = d3.layout.treemap()
    .size([App.canvasWidth + 1, App.canvasHeight + 1])
    .value(function(d) { return d.number; })
    .sticky(true);

function drawGraphFromJson(data) {
  // Draw the graph
  var leaves = App.treemap(data);

  var cell = App.svg.selectAll("g.cell")
    .data(leaves);

  // More rendering code
}
</code>

Na podstawie tej odpowiedzi:https://stackoverflow.com/a/9650825/111884

Jednak mapa drzewa w ogóle się nie zmienia, gdy dzwoniędrawGraphFromJson z nowymi danymi.

Naprawiłem problem, definiującApp.treemap w środkudrawGraphFromJson to znaczy,

<code>function drawGraphFromJson(data) {
  App.treemap = d3.layout.treemap()
    .size([App.canvasWidth + 1, App.canvasHeight + 1])
    .value(function(d) { return d.number; })
    .sticky(true);

  // Draw the graph
  var leaves = App.treemap(data);

  var cell = App.svg.selectAll("g.cell")
    .data(leaves);

  // More rendering code
}
</code>

Dlaczego muszę to zrobić? Robitreemap przechowuje się w pamięci podręcznej po przejściu do węzła głównego?

questionAnswers(1)

yourAnswerToTheQuestion