「関数 update(source)」を変更するだけで、この関数の下に次のコードを追加できます。
// Recompute the new height
var levelWidth = [1];
var childCount = function(level, n) {
if(n.children && n.children.length > 0) {
if(levelWidth.length <= level + 1) levelWidth.push(0);
levelWidth[level+1] += n.children.length;
n.children.forEach(function(d) {
childCount(level + 1, d);
});
}
};
childCount(0, root);
var newHeight = d3.max(levelWidth) * 40;
tree = tree.size([newHeight, width]);
詳細な質問と回答については、このようなものを参照してください(Superboggly):
子ノードの数に基づいて d3 ツリー レイアウトを動的にサイズ変更します