
Layout Algorithmen
Eine automatische Anordnung der Objekte in Graphen ist ein essentieller Teil aller Anwendungen, die die Visualisierung von Strukturen oder Beziehungen zum Ziel haben. Das Tensegrity Graph Framework enthält eine Anzahl von Layout-Algorithmen basierend auf verschiedenen bewährten Layout-Algorithmen als auch auf eigener Recherche und Entwicklung.
Die Layout-Engine stellt sicher, dass die verfügbaren Layout Algorithmen einfach und effizient verwaltet und angewendet werden können. Die interface-basierte Architektur erlaubt die einfache Integration neuer Layout-Algorithmen. Benutzer- und vordefinierte Layout-Algorithmen werden gleich behandelt und profitieren von den gleichen Features und der Unterstützung durch das Graph Framework.
Das Layout ermöglicht es, verschiedene Bereiche eines Graphen (Gruppen) mit unterschiedlichen Layout-Typen anzuordnen. Außerdem bietet es die Option Automatische Layout, wodurch sichergestellt wird, dass der Graph seine Ordnung auch nach Benutzer-Interaktionen beibehält.
Das objektorientierte Konzept des Layout-Bereiches ermöglicht es, Layout-Algorithmen mit einer bestimmten spezifischen Konfiguration als separates Layout-Objekt zu definieren. Es folgt eine kurze Einleitung in die aktuell existierenden Layout-Algorithmen.
![]()
Kanten-Layout-Algorithmus
Der Kanten-Layout-Algorithmus arrangiert Verbindungen ohne Knoten zu bewegen. Die meisten anderen Layout-Algorithmen können Knoten und Kanten nur in einer Aktion positionieren. Der Kanten-Layout-Algorithmus ist ein bedeutender Teil einer jeden Anwendung, die Benutzerinteraktionen zur Laufzeit unterstützt.
Der entwickelte Kanten-Layout-Algorithmus ist ein extrem schneller Layout-Algorithmus. Er kann genutzt werden, um Kanten komplett neu zu führen oder auch nur um ein existierendes Layout von Kanten zu verbessern.
Eigenschaften:
- Pfad-Analyse zur Vermeidung von überlappenden Kanten und Knoten
- Automatische Positionierung von Beschriftungen zur Vermeidung des Überlappens von Beschriftungen mit anderen Beschriftungen oder Knoten
- Brückenbildung zur besseren Wahrnehmung von Kreuzungspunkten
- Verschieden Stile und Größen für die Brücken
- Vertikale und horizontale Brücken
- Rundungen für Biegungen mit anpassbarem Rundungsfaktor
- Parallele Darstellung überlappender Kantensegmente
- Einstellbarer Abstand zwischen Kantensegmenten und Minimum-Abstand zu Knoten.
- Verschiedene Stile für parallele Kanten, die in den gleichen Port münden.
![]()
Hierarchisches Layout-Algorithmus
Der Hierarchische Layout-Algorithmus verwendet einen Sugiyama Layout-Algorithmus, um einen Graphen so in unterschiedlichen Ebenen zu arrangieren (Reihen und Spalten eines imaginären 2D-Rasters), dass die meisten sichtbaren Kanten in die gleiche Richtung fließen und die Anzahl Ihrer Überschneidungen minimiert wird. Da das hierarchische Layout den Fluss und die Hierarchie eines Graphen besonders klar zeigt, wird es oft für die Ordnung in Fluss- und Prozessdiagrammen sowie Workflows eingesetzt.

Eigenschaften:
- Verschiedene Layout Richtungen
- Einstellbarer Abstand zwischen Knoten und Ebene
- Verschiedene Ausrichtungen der Knoten auf gleicher Ebene
- Anordnung der Knoten unter Beachtung der Verbindungspunkte oder der Knotenumrandung
- Verschiedene Strategien zur Bestimmung der Ebenen
- Bestimmung der maximalen Ebenenanzahl
- Beachtung des notwendigen Platzes für die Beschriftungen von Kanten
- Gerade und rechtwinklige Kanten
- Priorisierung der Reihenfolge von Knoten in gleicher Ebene
![]()
Energie-Layout-Algorithmus
Der Energie-Layout-Algorithmus nutzt einen kräfte-ausgleichenden Layout-Algorithmus für die Anordnung der Knoten im Graphen. Dieser Algorithmus betrachtet den Graphen als ein Kräftesystem und strebt eine möglichst energiearme Anordnung an. In diesem System werden die Knoten eines Graphen als elektrisch geladene Teilchen mit Abstoßungskräften und die Kanten als Federn mit Rückhaltefunktion betrachtet. Das Resultat des Energie-Layouts ist besonders natürlich und ideal für das Layout von Sozialen Netzen und für die Simulation von chemischen oder physikalischen Modellen.
Es erzeugt ein harmonisches und ausbalanciertes Ergebnis, obwohl sich hier Kanten überschneiden können.
Eigenschaften:
- Konfigurierbarer Knotenabstand
- Variable Graph-Konzentration
- Bestimmung der Qualität des Layout
- Option: Maximale Berechnungszeit
![]()
Zirkuläres Layout
Der zirkuläre Layout-Algorithmus betont Gruppen- und Baum-Strukturen in einem Netzwerk. Er teilt alle Knoten in Gruppen ein, indem er die Verbindungsstrukturen wie in einem Netzwerk analysiert. Die festgestellten Gruppen werden in separaten Kreisen arrangiert. Die Kreise selber werden im Stil eines radialen Baum-Layouts angeordnet. Dieses Knoten-Layout kann z.B. für die Visualisierung von Sozial-, Telekommunikations- oder Computernetzwerken eingesetzt werden.
Eigenschaften:
- Einstellbarer Abstand zwischen Koten eines Kreises
- Konfigurierbarer Mindestradius für die Kreise
- Einstellung für den Winkelbereich des Sektors um den Wurzelknoten
- Unterschiedliche Verteilungsstrategien
- Variabler Darstellungswinkel für den ganzen Graphen
![]()
Baum-Layout
Der Baum-Layout-Algorithmus ordnet Bäume - also gerichtete Graphen ohne Zyklen (Knoten dürfen nicht mehr als einen Vorläufer haben). Er bietet vier verschiedene Stile an: Flach, Strahlenförmig, Schleife, HV-Diagramm.

Eigenschaften:
- Vier verschiedene Layout-Stile
- Einstellbarer Knotenabstand, sowie Ebenenabstand oder Radius.
![]()
Organigramm-Layout
Der Organigramm-Layout-Algorithmus ist eine spezielle Art des Baum-Layout-Algorithmus. Er bietet einige spezielle Optionen, die oft für die Visualisierung von Organisations-Übersichten genutzt werden. Der Organigramm-Layout-Algorithmus unterstützt auch zusätzliche Verbindungen zwischen Knoten quer über den ganzen Graphen hinweg. In einem Graphen können verschieden Stile genutzt werden ohne ihn in Gruppen einzuteilen.

Eigenschaften:
- Sechs verschiedene Layout-Stile
- Bestimmung der Knotenreihenfolge
- Stabs-Elemente
- Einstellbare vertikale und horizontale Abstände
- Automatische Kantenführung für Verbindungen quer über den Baum.
