我使用的是D3樹佈局,比如這一個:http://mbostock.github.com/d3/talk/20111018/tree.htmlD3樹垂直間隔
我已經修改了它適合我的需要和正在運行到一個問題。這個例子也有同樣的問題,如果你有太多的節點打開,那麼它們變得緊湊,使閱讀和交互變得困難。我想在定義節點之間的最小垂直空間的同時重新調整舞臺大小以允許這樣的間距。
我試圖修改分離算法,使其工作:
.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);
我也試圖在下面它計算y
分離的方法也改變節點的x
價值,但沒有雪茄。我也會發布這個改變,但是我把它從我的代碼中移除了。
nodes.forEach(function(d, i) {
d.y = d.depth * 180;
});
如果你能提出一個方法或知道一個辦法,我可以做到垂直節點請張貼之間的最小間距。我將非常感激。我可能錯過了一些非常簡單的事情。
謝謝你,親愛的先生! :) –