我正在使用 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;
});
如果您可以提出一种方法或知道一种方法,我可以在节点之间垂直实现最小间距,请发布。我将不胜感激。我可能错过了一些非常简单的东西。