Verzweigungsoffset
Im Ballonlayoutmodus gibt es nur einen Mindestabstand zwischen Knoten. Es wird nicht zwischen Mindestabständen zwischen gleichgeordneten Knoten, Verzweigungen und Beziehungen zwischen übergeordnetem und untergeordnetem
Knoten unterschieden.
Der Mindestabstand zwischen Knoten wird wie im freien Modus und im Ebenenmodus mit dem Verzweigungsoffset gesteuert.
Das Offset zwischen gleichgeordneten Knoten und das Offset zwischen übergeordnetem Knoten und untergeordneten Knoten haben im Ballonlayoutmodus keinen Effekt.
Gehen Sie wie folgt vor, um das Mindestoffset zwischen Knoten anzugeben:
Verwenden Sie die Methode setBranchOffset:
treeLayout.setBranchOffset(20);
Winkelabstand
Die Winkel zwischen Sektoren eines Ballons und der Radius des Ballons haben mehr Auswirkung auf die Abstände
im Layout als das Mindestoffset.
Eine falsche Wahl bei den Sektorwinkeln erfordert größere Radien, um Überschneidungen zu verhindern und damit
einen größeren Bereich für das Layout.
Deshalb unterstützt das Layout verschiedene Modi für die Winkelabstände.
In der folgenden Abbildung verwendet das Layout auf der linken Seite
reguläre Winkelabstände und das Layout auf der rechten Seite proportionale Winkelabstände.
Auf der rechten Seite sind die Sektorwinkel der blauen untergeordneten Baumstruktur
sehr viel größer als die der einzelnen gründen untergeordneten Baumstrukturen, da die blaue untergeordnete Baumstruktur
größer ist als die grünen.

Winkelabstände: links: regulär, rechts: proportional (langsam)
Gehen Sie zum Festlegen der Winkelabstände wie folgt vor:
Verwenden Sie die Methode setBalloonAngleSpacing:
treeLayout.setBalloonAngleSpacing(ibm_ilog.graphlayout.tree.TreeLayout.REGULAR);
Die gültigen Moduswerte sind im Folgenden aufgelistet:
- ibm_ilog.graphlayout.tree.TreeLayout.REGULAR
- Der verfügbare Winkelbereich an einem Knoten wird gleichmäßig aufgeteilt, so dass der Ballon jeder untergeordneten Baumstruktur am Knoten denselben Winkel einnehmen kann. Dieses Layout sieht einheitlich aus, neigt aber dazu, Platz zu verschwenden, wenn die untergeordneten Baumstrukturen nicht dieselbe Größe haben. Sehen Sie sich das linke Bild in der Abbildung zu den Winkelabständen an.
- ibm_ilog.graphlayout.tree.TreeLayout.FAST_PROPORTIONAL
- Der verfügbare Winkelbereich an einem Knoten wird proportional aufgeteilt, so dass die Ballons größerer untergeordneter Baumstrukturen am Knoten einen größeren Winkel einnehmen. Deshalb erfordert eine größere untergeordnete Baumstruktur einen kleineren Radius, und somit wird in diesem Modus weniger Platz belegt. Der Algorithmus verwendet ein schnelles heuristisches Verfahren für die Berechnung der Winkelbereiche. Dieses heuristische Verfahren ist nicht präzise und erzeugt manchmal asymmetrische Layouts. Die Qualität des Ergebnisses ist in hohem Maße von der Wahl des Anfangswinkels abhängig. Das heuristische Verfahren wird linear ausgeführt.
- ibm_ilog.graphlayout.tree.TreeLayout.PROPORTIONAL
- Entspricht dem schnellen proportionalen Modus: Der verfügbare Winkelbereich an einem Knoten wird proportional aufgeteilt, so dass die Ballons größerer untergeordneter Baumstrukturen am Knoten einen größeren Winkel einnehmen. Allerdings verwendet der Algorithmus ein langsames heuristisches Verfahren, das präziser ist, den Platz noch besser nutzt und symmetrische Layouts erzeugt. Die Qualität des Ergebnisses ist nicht von der Wahl des Anfangswinkels abhängig. Das heuristische Verfahren wird in quadratischer Zeit ausgeführt. Dies ist der Standardmodus. Sehen Sie sich das rechte Bild in der Abbildung zu den Winkelabständen an.
Radiusmodus
Wenn die Sektorwinkel für die Ballons der untergeordneten Baumstrukturen ausgewählt wurde, muss der Radius
(Länge des Links vom übergeordneten Knoten zum untergeordneten Knoten)
so berechnet werden, dass sich keine untergeordneten Baumstrukturen überschneiden.
Die Wahl des Radius ist ein Kompromiss zwischen Symmetrie und Bereich.
Wenn Sie einen einheitlichen Radius für alle untergeordneten Knoten
desselben übergeordneten Knoten auswählen, wird häufig viel Platz benötigt.
Sehen Sie sich die Abbildung mit den Beispielen für einheitliche und variable Radiuslayouts (oberes linkes Bild) an.
Wenn der Radius variabel ist, geht die Symmetrie verloren.
Als Kompromiss können Sie festlegen, dass nur für die Ballons großer untergeordneter Baumstrukturen
ein variabler Radius und für alle Blattknoten eines übergeordneten Knotens ein einheitlicher Radius verwendet wird.
Sehen Sie sich die Abbildung mit den Beispielen einheitlicher und variabler
Radiuslayouts (oberes rechtes Bild) an, in denen der Link zur blauen untergeordneten
Baumstruktur länger ist als die Links zu den grünen untergeordneten Baumstrukturen.
Wenn Symmetrien nicht wichtig sind, kann eine zusätzliche
Optimierungsphase ausgewählt werden, in der die Ballons näher zusammengerückt werden.
Die Optimierungsphase kann auf untergeordnete Baumstrukturen angewendet werden, die keine Blattknoten sind.
Sehen Sie sich die Abbildung mit den Beispielen für einheitliche und variable Radiuslayouts (unteres linkes Bild) an.
Diese Phase kann auch verwendet werden, um die Blattknoten näher zusammenzurücken. Sehen Sie sich die Abbildungen mit den Beispielen für einheitliche und variable Radiuslayouts (unteres rechtes Bild) an.
Im letzteren Fall sind die Blattknoten oftmals ziemlich gestreut und befinden sich nicht mehr in einem Kreis.

Radiusmodus: links: einheitlich, rechts: einheitliche Blattknoten (größere untergeordnete Baumstrukturen haben einen variablen Radius)

Radiusmodus: links: optimierte einheitliche Blattknoten, rechts:
optimiert variabel
Gehen Sie zum Aktivieren des Radiusmodus wie folgt vor:
Verwenden Sie die Methode setBalloonRadiusMode:
treeLayout.setBalloonRadiusMode(ibm_ilog.graphlayout.tree.TreeLayout.UNIFORM_RADIUS);
Die gültigen Werte für
mode
sind folgende:
- ibm_ilog.graphlayout.tree.TreeLayout.UNIFORM_RADIUS
- Die Radien der Ballons aller untergeordneten Baumstrukturen, die untergeordnete Knoten desselben Knoten sind, sind einheitlich. Dieser Modus erfordert den größten Bereich, liefert aber auch die höchste Symmetrie im Layout. Wenn die Baumstruktur nicht gleichmäßig ist, wird gewöhnlich zu viel Platz verschwendet. Sehen Sie sich die Abbildung zum variablen Radius an (oberes linkes Bild).
- ibm_ilog.graphlayout.tree.TreeLayout.UNIFORM_LEAVES_RADIUS
- Die Radien aller Blattknoten, die untergeordnete Knoten desselben Knotens sind, sind einheitlich, aber der Radius eines Ballons, der mehrere Knoten enthält, kann variieren. Dieser Wert eignet sich besser für nicht ausgeglichene Baumstrukturen, weil der verfügbare Platz besser genutzt wird. Verwenden Sie diesen Wert, wenn die Symmetrie im Layout wichtig ist. Sehen Sie sich die Abbildung zum variablen Radius an (oberes rechtes Bild).
- ibm_ilog.graphlayout.tree.TreeLayout.VARIABLE_RADIUS
- Der Radius aller verschiedenen untergeordneten Ballons an demselben übergeordneten Knoten kann variieren. Er variiert selbst bei untergeordneten Knoten desselben Knotens, wenn diese untergeordneten Knoten verschiedene Knotengrößen haben.
- TreeLayout.OPTIMIZED_UNIFORM_LEAVES_RADIUS
- Die Anfangsplatzierung wird wie im Radiusmodus mit einheitlichen Blattknoten vorgenommen. Zusätzlich rückt ein heuristisches Optimierungsverfahren die untergeordneten Baumstrukturen zusammen, um die Radien zu verkleinern. Dies hat den Vorteil, dass der Platzbedarf geringer wird, aber den Nachteil, dass die Symmetrie im Diagramm verloren geht. Blattknoten, die denselben übergeordneten Knoten haben, behalten denselben Radius. Sehen Sie sich die Abbildung zum variablen Radius an (unteres linkes Bild).
- ibm_ilog.graphlayout.tree.TreeLayout.OPTIMIZED_VARIABLE_RADIUS
- Die Anfangsplatzierung wird wie im variablen Radiusmodus vorgenommen. Zusätzlich rückt ein heuristisches Optimierungsverfahren die untergeordneten Baumstrukturen zusammen, um die Radien zu verkleinern. Dies hat den Vorteil, dass der Platzbedarf geringer wird, aber den Nachteil, dass die Symmetrie im Diagramm verloren geht. Der Modus wirkt sich selbst auf Blattknoten desselben übergeordneten Knotens aus, die somit ziemlich verstreut um den übergeordneten Knoten herum angezeigt werden können. Sehen Sie sich die Abbildung zum variablen Radius an (unteres rechtes Bild).