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?