Separação vertical da árvore D3
Eu estou usando o layout de árvore D3, como este:http://mbostock.github.com/d3/talk/20111018/tree.html
Eu modifiquei para as minhas necessidades e estou correndo em um problema. O exemplo tem o mesmo problema também, onde se você tiver muitos nós abertos, eles se tornarão compactos e dificultarão a leitura e a interação. Eu estou querendo definir um espaço vertical mínimo entre nós enquanto redimensiona o estágio para permitir esse espaçamento.
Eu tentei modificar o algoritmo de separação para fazê-lo funcionar:
.separation(function (a, b) {
return (a.parent == b.parent ? 1 : 2) / a.depth;
})
Isso não funcionou. Eu também tentei calcular qual profundidade tinha o maior número de crianças, em seguida, dizendo a altura do palco para serchildren * spaceBetweenNodes
. Isso me aproximou, mas ainda não estava certo.
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);
Eu também tentei mudar o nóx
valor também no método abaixo, onde calcula oy
separação, mas sem charuto. Eu colocaria essa mudança também, mas eu removi do meu código.
nodes.forEach(function(d, i) {
d.y = d.depth * 180;
});
Se você puder sugerir uma maneira ou conhecer uma maneira que eu possa realizar um espaçamento mínimo verticalmente entre nós, por favor poste. Estarei muito grato. Eu provavelmente estou sentindo falta de algo muito simples.