In manchen Situationen müssen Sie möglicherweise eine Folge von Layouts auf denselben Graphen anwenden.
Beispiel:
- Sie arbeiten mit Graphen, die veraltet sind, und müssen den Graphen erweitern. Wenn Sie ein Layout für den erweiterten Graphen ausführen, möchten Sie wahrscheinlich die Teile identifizieren, die bereits im ursprünglichen Graphen angelegt wurden. Das Layout soll sich im Vergleich mit dem Layout des ursprünglichen Graphen nicht viel verändern.
- Das erste Layout führt zu einer Zeichnung mit geringfügigen Mängeln. Sie möchten diese Mängel manuell beheben und ein zweites Layout ausführen, um die Zeichnung zu bereinigen. Das zweite Layout soll wahrscheinlich die Teile des Graphen, die bereits nach dem ersten Layout akzeptabel waren, nicht großartig verändern.
Das hierarchische Layout arbeitet normalerweise inkrementell.
Es erstellt ein ganz neues Layout und verschiebt alle Knoten an die neuen Positionen und leitet alle Links um.
Die vorherigen Positionen der Knoten haben keinen Einfluss auf das Ergebnis des Layouts.
Somit kann auch eine geringfügige Änderung einen großen Effekt auf das nächste Layout haben.
Das hierarchische Layout unterstützt aber auch inkrementelle
Folgen von Layouts, die "sich nicht wesentlich ändern".
Es kann die Knoten nah an ihren vorherigen Positionen platzieren, so dass Sie die Teile, die bereits im ursprünglichen Graphen
angelegt wurden, einfacher identifizieren können.
Im inkrementellen Modus werden die vorherigen Positionen der Knoten berücksichtigt.
In diesem Modus behält der Algorithmus die relative Reihenfolge der Ebenen und der Knoten innerhalb der Ebenen
im nachfolgenden Layout bei.
Er behält nicht die absoluten Positionen der Knoten bei, versucht aber, die Struktur
des vorherigen Layouts durch Überprüfung der Knotenkoordinaten zu erkennen.
Wenn sich beispielsweise zwei Knoten auf derselben Ebene befinden, bleiben sie nach einem
inkrementellen Layout auf derselben Ebene.
Befindet sich ein Knoten auf einer höheren Ebene als ein anderer Knoten, bleibt er auf der höheren Ebene.
Die folgende Abbildung veranschaulicht den Unterschied zwischen einem inkrementellen und einem nicht inkrementellen Layout.

Inkrementelles und nicht inkrementelles Layout
Der inkrementelle Modus ist standardmäßig inaktiviert.
Gehen Sie zum Aktivieren des inkrementellen Modus wie folgt vor:
Verwenden Sie die Methode setIncrementalMode. Beispiel:
layout.setIncrementalMode(true);
Phasen des inkrementellen Modus
Der Layoutalgorithmus analysiert die Zeichnung im inkrementellen Modus wie folgt:
- Zuerst bestimmt er anhand der Knotenkoordinaten, welche Knoten zu derselben Ebene gehören müssen. Wenn die Arbeitsrichtung beispielsweise nach unten verläuft, versucht er, horizontale Referenzlinien an den vertikalen Positionen zu erkennen, an denen viele Knoten entlang der Linie platziert sind. Das angegebene vertikale Knotenoffset hilft ihm, diese Linien zu erkennen, weil die horizontalen Referenzlinien ungefähr um das vertikale Knotenoffset entfernt liegen müssen. Sehen Sie sich die folgende Abbildung an.
- Alle Knoten, die dieselbe Referenzlinie berühren, sind derselben Ebene zugeordnet.
- Er bestimmt die Reihenfolge der Knoten innerhalb jeder Ebene, indem er ermittelt, wo der Knoten die Referenzlinie berührt. Wenn die Arbeitsrichtung beispielsweise nach unten verläuft, bestimmt er anhand der X-Koordinate der Knoten, wie sie innerhalb der Ebenen angeordnet sind.
- Wenn lange Links mehrere Ebenen umspannen, kann der Algorithmus die Form eines langen Links beibehalten. Er bestimmt den Punkt, an dem ein Link die Referenzlinie der Ebene kreuzt. Er erstellt einen Kurvenpunkt für den langen Link innerhalb der Ebene. Er versucht, die Reihenfolge der Kurvenpunkte in jeder Ebene beizubehalten. Wenn bei einer Arbeitsrichtung, die nach unten verläuft, ein langer Link beispielsweise einen anderen Knoten auf der rechten Seite umgeht, versucht das inkrementelle Layout, eine ähnlich Linkform zu finden, die den Knoten auf der rechten Seite umgeht. Sehen Sie sich die folgende Abbildung an.
- Abschließend versucht das Layout, die absoluten Positionen der Knoten zu berechnen, die die Ebenen und die Reihenfolge innerhalb der Ebenen berücksichtigen. Es wird versucht, die Knotenpositionen gleichmäßig zu verteilen. Es wird jedoch auch versucht, jeden Knoten nah an seiner vorherigen Position zu platzieren. Beide Kriterien stehen häufig in Konkurrenz zueinander, weil Knoten manchmal weit weg von ihren ursprünglichen Positionen verschoben werden müssen, um ein perfektes Gleichgewicht zu erhalten. Das hierarchische Layout enthält ein parametrisiertes heuristisches Verfahren, um beide Kriterien zu erfüllen.
Die folgende Abbildung zeigt das Ergebnis der inkrementellen Phasen.

Phasen des inkrementellen Layouts
Expertenparameter des inkrementellen Modus
Jede Phase des inkrementellen Modus kann parametrisiert werden.
Diese Layoutparameter sind nur effektiv, wenn der inkrementelle Modus aktiviert ist.
Kreuzungen langer Links minimieren
Das inkrementelle Layout versucht, die Form langer Links, die mehrere Ebenen kreuzen, zu bewahren.
Dies impliziert, dass Linkkreuzungen zwischen langen Links nicht aufgelöst werden.
Wenn Kreuzungen langer Links nicht erwünscht sind, kann es besser sein, lange Links ganz von vorn umzuleiten.
Die folgende Abbildung zeigt vier Hierarchiebäume, wobei sich das ursprüngliche Layout oben links befindet.
Unten rechts sehen Sie das Ergebnis, wenn lange Links umgeleitet werden, und oben rechts sehen Sie das Ergebnis, wenn
die Form langer Links beibehalten wird.

Reduktion von Kreuzungen bei inkrementellen Layouts
Damit lange Links ganz von von umgeleitet werden, müssen Sie den Mechanismus für die Reduktion von Kreuzungen für lange Links
aktivieren:
Verwenden Sie die Methode setLongLinkCrossingReductionDuringIncremental. Beispiel:
layout.setLongLinkCrossingReductionDuringIncremental(true);
Der Mechanismus für die Reduktion von Kreuzungen langer Links bestimmt nur die Form der Links.
Er hat keinen Einfluss auf die Reihenfolge der anderen Knoten innerhalb der Ebenen.
Kreuzungen aller Links minimieren
Optional können Sie einen Mechanismus für die Reduktion von Kreuzungen auf alle Knoten innerhalb einer Ebene anwenden.
In diesem Fall bestimmt das inkrementelle Layout anhand der Knotenkoordinaten, welche Knoten zu derselben Ebene gehören,
kann aber die Knoten innerhalb der Ebenen vollständig neu anordnen, um Linkkreuzungen zu verhindern.
In diesem Fall werden auch die langen Links neu angeordnet. Das Ergebnis ist in der vorherigen Abbildung unten links gezeigt.
Beachten Sie, dass sich die Reihenfolge der Knoten F, G und H geändert hat, um die Linkkreuzungen aufzuheben.
Gehen Sie wie folgt vor, um den Mechanismus für die Reduktion von Kreuzungen für alle Knoten zu aktivieren:
Verwenden Sie die Methode setCrossingReductionDuringIncremental:
layout.setCrossingReductionDuringIncremental(true);
Absolute Positionierung der Ebenen festlegen
Das inkrementelle Layout versucht, die Knoten an absoluten Positionen zu platzieren, die nah an den vorherigen Positionen liegen.
Es wird versucht, Knoten weit weg zu verschieben, weil selbst bei unveränderter relativer Reihenfolge
der Knoten innerhalb der Ebenen, große Abstände für Benutzer verwirrend sein können.
Es ist viel einfacher, sich das Diagramm zu merken, wenn die Knoten nah an den vorherigen Positionen bleiben.
Die folgende Abbildung veranschaulicht die Neupositionierung von Knoten mit und ohne Berücksichtigung der vorherigen Knotenpositionen.
Das inkrementelle Layout des ursprünglichen Graphen (oben links) ergibt den Graphen oben rechts, der
einfacher als derselbe Graph wiederzuerkennen als der Graph, der unten gezeigt wird.
Das Merkmal für die absolute Ebenenpositionierung ist zwar standardmäßig aktiviert, kann aber inaktiviert werden.
Gehen Sie wie folgt vor, um das Merkmal für die absolute Ebenenpositionierung zu inaktivieren:
Verwenden Sie die Methode setIncrementalAbsoluteLevelPositioning. Beispiel:
layout.setIncrementalAbsoluteLevelPositioning(false);
Mit dieser Anweisung versucht das Layout nicht, die Knoten nah an den vorherigen Positionen zu platzieren.
Es platziert die Knoten so, dass das Layout gleichmäßig ist.
Um jedoch eine perfekte Gleichmäßigkeit zu erhalten, muss das Layout unter Umständen einige Knoten so weit weg bewegen,
dass Sie das Diagramm nicht mehr erkennen (siehe die folgende Abbildung unten).

Absolute Positionierung bei inkrementellen Layouts
Bereich und Tendenz für absolute Ebenenpositionierung festlegen
Wenn die absolute Ebenenpositionierung aktiviert ist, steht diese mit den
ästhetischen Kriterien für das Erstellen eines gleichmäßigen Layouts in Konkurrenz. Da Knoten
nah an ihren vorherigen Positionen bleiben müssen, kann das Diagramm nach einem
inkrementellen Layout ungleichmäßig und unsymmetrisch erscheinen.
Der Algorithmus für hierarchisches Layout verwendet ein heuristisches Verfahren, das Sie mit zwei Parametern beeinflussen können:
dem Bereich und der Tendenz für die absolute Ebenenpositionierung.
Das Merkmal für die absolute Ebenenpositionierung ist zwar standardmäßig aktiviert, kann aber inaktiviert werden.
Gehen Sie wie folgt vor, um das Merkmal für die absolute Ebenenpositionierung zu inaktivieren:
Verwenden Sie die Methode setIncrementalAbsoluteLevelPositionRange. Beispiel:
layout.setIncrementalAbsoluteLevelPositionRange(100);
Diese Anweisung gibt an, dass im Bereich von 100
Koordinateneinheiten ab der alten Position des Knotens die Gleichmäßigkeit das einzige Kriterium für die Platzierung ist.
Das bedeutet, dass ein Knoten, dessen optimale Position weniger als 100 Koordinateneinheiten von seiner
vorherigen Position entfernt ist, exakt an seiner optimalen Position platziert wird. Knoten, deren optimale
Position weiter weg ist, werden an einer Position platziert, die ein Kompromiss zwischen
vorheriger Position und optimaler Position ist. Sehen Sie sich die folgende Abbildung rechts an.
Gehen Sie zum Festlegen der Tendenz für die absolute Ebenenpositionierung wie folgt vor:
Verwenden Sie die Methode setIncrementalAbsoluteLevelPositionTendency. Beispiel:
layout.setIncrementalAbsoluteLevelPositionTendency(70);
Diese Anweisung gibt an, dass in dem Fall, dass die optimale Position
eines Knotens zu weit von der vorherigen Position entfernt ist,
die Position des Knotens mit 70 % durch die vorherige Position und mit 30 % durch die
optimale Position beeinflusst ist.
Stellen Sie sich, eine dehnbare Linie vor, die versucht einen Knoten an seine vorherige Position
zu ziehen, und eine andere dehnbare Linie, versucht, denselben Knoten an seine
optimale Position im Bezug auf die Gleichmäßigkeit zu ziehen. Die Tendenz
70
für die Ebenenpositionierung bedeutet, dass eine dehnbare Linie
mit 70 % der Kraft in Richtung der vorherigen Position zieht und die andere
mit 30 % in Richtung der optimalen Position. Eine Erhöhung der Tendenz
bedeutet, dass der Knoten näher an seiner alten Position bleibt, eine Verringerung, dass der Knoten näher
an seine optimale Position verschoben wird.
Wenn Sie die Tendenz auf 0 % setzen, hat dies denselben Effekt, als inaktivierten Sie
die inkrementelle absolute Ebenenpositionierung (siehe die folgende Abbildung). 
Absolute Positionierung bei inkrementellen Layouts
Knoten für inkrementelles Layout markieren
Beim inkrementellen Layout werden normalerweise alle Knoten und Links der Zeichnung gleich behandelt.
Sie haben der Zeichnung jedoch möglicherweise über das Programm Knoten und Links hinzugefügt, und die neuen
Knoten und Links haben noch keine aussagefähigen Koordinaten.
Vielleicht haben Sie sie alle am Ursprung
(0,0) der an Zufallskoordinaten platziert. In diesem Fall benötigen Sie ein
inkrementelles Layout, das die Koordinaten alle Knoten berücksichtigt, die bereits angelegt wurden, während
die Koordinaten der neuen Knoten ignoriert werden.
Der inkrementelle Modus des hierarchischen Layouts
ermöglicht Ihnen, mit der folgenden Methode die Knoten anzugeben, die nicht
inkrementell angelegt werden können:
layout.markForIncremental(nodeOrLink);
Wenn Sie diese Anweisung aufrufen, wird der Knoten bzw. Link so markiert, dass seine
Koordinaten beim nächsten inkrementellen Layout ignoriert werden.
Die Positionen markierter Knoten und Links werden ganz neu berechnet.
Die Markierung ist nur bis zum nächsten Layout gültig und wird danach automatisch entfernt.