次のようなD3ツリーレイアウトを使用しています:http://mbostock.github.com/d3/talk/20111018/tree.html
必要に応じて変更しましたが、問題が発生しています。この例にも同じ問題があります。開いているノードが多すぎると、ノードがコンパクトになり、読み取りと対話が困難になります。このような間隔を考慮してステージのサイズを変更するときに、ノード間の最小垂直スペースを定義したいと思います。
分離アルゴリズムを変更して、機能させるようにしました。
.separation(function (a, b) {
return (a.parent == b.parent ? 1 : 2) / a.depth;
})
それはうまくいきませんでした。また、子供が最も多い深さを計算してから、ステージの高さを計算してみましたchildren * spaceBetweenNodes
。それは私を近づけましたが、それでも正確ではありませんでした。
depthCounts = [];
nodes.forEach(function(d, i) {
d.y = d.depth * 180;
if(!depthCounts[d.depth])
depthCounts[d.depth] = 0;
if(d.children)
{
depthCounts[d.depth] += d.children.length;
}
});
tree_resize(largest_depth(depthCounts) * spaceBetweenNodes);
また、分離をx
計算する以下の方法でもノードの値を変更しようとしましたが、葉巻は変更しませんでした。y
私もその変更を投稿しますが、コードから削除しました。
nodes.forEach(function(d, i) {
d.y = d.depth * 180;
});
ノード間の垂直方向の最小間隔を達成する方法を提案したり、知っている場合は、投稿してください。とても感謝しています。私はおそらく非常に単純なものが欠けています。