アニメーション化するd3ツリーマップを取得しようとしていて、次のようなものがありました
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
}
この回答に基づく: https://stackoverflow.com/a/9650825/111884
drawGraphFromJson
ただし、新しいデータで呼び出すと、ツリー マップはまったく変化しません。
ieApp.treemap
内で定義することで問題を修正しました。drawGraphFromJson
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
}
なぜこれを行う必要があるのですか?treemap
ルート ノードを渡すとキャッシュされますか?