Pionowa separacja drzewa D3
Używam układu drzewa D3, takiego jak ten:http://mbostock.github.com/d3/talk/20111018/tree.html
Zmodyfikowałem go dla moich potrzeb i mam problem. Przykład ma ten sam problem, gdzie jeśli masz zbyt wiele otwartych węzłów, stają się one zwarte i utrudniają czytanie i interakcję. Chcę zdefiniować minimalną pionową przestrzeń między węzłami podczas etapu zmiany rozmiaru, aby umożliwić takie odstępy.
Próbowałem zmodyfikować algorytm separacji, aby działał:
.separation(function (a, b) {
return (a.parent == b.parent ? 1 : 2) / a.depth;
})
To nie zadziałało. Próbowałem również obliczyć, która głębokość ma najwięcej dzieci, a następnie określać wysokość scenychildren * spaceBetweenNodes
. To przybliżyło mnie, ale wciąż nie było dokładne.
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);
Próbowałem także zmienić węzełx
wartość również w poniższej metodzie, w której obliczay
separacja, ale bez cygara. Dodałbym też tę zmianę, ale usunąłem ją z mojego kodu.
nodes.forEach(function(d, i) {
d.y = d.depth * 180;
});
Jeśli możesz zasugerować sposób lub znać sposób, w jaki mogę osiągnąć minimalny odstęp w pionie między węzłami, napisz. Będę bardzo wdzięczny. Prawdopodobnie brakuje mi czegoś bardzo prostego.