Separación vertical del árbol D3
Estoy usando el diseño del árbol D3, como este:http://mbostock.github.com/d3/talk/20111018/tree.html
Lo he modificado para mis necesidades y tengo un problema. El ejemplo también tiene el mismo problema: si tiene demasiados nodos abiertos, entonces se vuelven compactos y dificultan la lectura y la interacción. Quiero definir un espacio vertical mínimo entre nodos mientras se redimensiona la etapa para permitir dicho espaciado.
Intenté modificar el algoritmo de separación para que funcione:
.separation(function (a, b) {
return (a.parent == b.parent ? 1 : 2) / a.depth;
})
Eso no funcionó. También intenté calcular qué profundidad tenía la mayoría de los niños y luego decir la altura del escenario a serchildren * spaceBetweenNodes
. Eso me acercó más, pero aun así no fue exacto.
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);
También traté de cambiar el nodo dex
valor también en el método a continuación donde se calcula ely
Separación, pero no cigarro. Yo también publicaría ese cambio pero lo eliminé de mi código.
nodes.forEach(function(d, i) {
d.y = d.depth * 180;
});
Si puede sugerir una forma o conocer una manera en que pueda lograr un espacio mínimo vertical entre los nodos, publíquelo. Estaré muy agradecido. Probablemente me esté perdiendo algo muy simple.