D3 Baum vertikale Trennung

Ich verwende das D3-Baumlayout wie dieses:http://mbostock.github.com/d3/talk/20111018/tree.html

Ich habe es an meine Bedürfnisse angepasst und stoße auf ein Problem. Das Beispiel hat das gleiche Problem, wenn zu viele Knoten geöffnet sind, werden sie kompakt und erschweren das Lesen und Interagieren. Ich möchte einen minimalen vertikalen Abstand zwischen Knoten definieren, während die Größe der Stufe geändert wird, um einen solchen Abstand zu ermöglichen.

Ich habe versucht, den Trennungsalgorithmus zu ändern, damit er funktioniert:

.separation(function (a, b) {
    return (a.parent == b.parent ? 1 : 2) / a.depth;
})

Das hat nicht geklappt Ich habe auch versucht zu berechnen, in welcher Tiefe die meisten Kinder waren, und dann die Höhe der Bühne angegebenchildren * spaceBetweenNodes. Das hat mich näher gebracht, war aber immer noch nicht genau.

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);

Ich habe auch versucht, die Knoten zu ändernx Wert auch in der Methode unten, wo es berechnet diey Trennung, aber keine Zigarre. Ich würde diese Änderung auch posten, aber ich habe sie aus meinem Code entfernt.

nodes.forEach(function(d, i) { 
    d.y = d.depth * 180;
});

Wenn Sie einen Weg vorschlagen können oder wissen, wie ich einen Mindestabstand vertikal zwischen Knoten erreichen kann, posten Sie ihn bitte. Ich werde sehr dankbar sein. Mir fehlt wahrscheinlich etwas sehr Einfaches.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage