Björn Klippstein

Graphviz-Renderer

Klippstein IT Service

Aus 4webmaster.de

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Die verschiedenen Renderer von Graphviz

In der Sprache DOT legen Sie fest, welche Nodes es gibt, wie sie aussehen sollen, welche Beziehungen die Nodes untereinander haben und wie diese aussehen sollen. Den Rest -- insbesondere das Gesamtlayout! -- überlassen Sie dem Renderer, der aus diesen Angaben ein Diagramm zeichnet. Es gibt aber unendlich viele Möglichkeiten, aus diesen Angaben ein Diagramm zu zeichnen.

Zum Graphviz-Paket gehören verschiedene Renderer. Je nachdem, welchen Sie verwenden, wird das Ergebnis ein anderes sein:

dot

dot zeichnet streng hierarchisch strukturierte Diagramme. Die Diagramme von dot sind immer linear in eine feste Richtung aufgebaut (standardmäßig von unten nach oben). Die ersten Diagramme, die Sie in diesem Tutorial gesehen haben, sind mit dot gerendert.

neato

neato ordnet die Nodes dagegen zirkulär von der Mitte nach außen an, wie bei einer MindMap. Dazu wird simuliert, die Nodes seien physikalischen Objekte, und die Edges übten Federkräfte auf sie aus. neato versucht nun, ein Layout zu finden, in dem die Gesamtenergie des Systems möglichst gering ist.

Oft sind dies symmetrische Layouts. Die Symmetrie von neatos Diagrammen ist optisch attraktiv, vor allem aber enthält sie zusätzliche Information über Analogien, die bei anderen Darstellungsformen oft verborgen bleiben.

Um die Symmetrien möglichst klar herauszustellen, werden standardmäßig gerade Linien verwendet um die Nodes miteinander zu verbinden. dot dagegen verwendet standardmäßig Splines um den verfügbaren Platz gleichmäßiger zu nutzen. neato-Diagramme erhalten hierarchische Strukturen, d.h. Nodes auf der gleichen Hierarchiestufe sind ungefähr gleich weit vom Zentrum entfernt. In diesem Tutorial sind die Übersichten der Node-Attribute und der Edge-Attribute mit neato gerendert.

fdp

fdp erzeugt ähnliche Ergebnisse wie neato. Auch fdp liegt ein physikalisches Modell zugrunde. Bei fdp wirken aber nicht nur zwischen zwei verbundenen Nodes Kräfte. Alle Nodes stoßen einander ab und versuchen einander möglichst fern zu sein. Das führt zu Diagrammen, in denen die Nodes gleichmäßiger über die verfügbare Fläche verteilt sind als bei neato. Die gleichmäßige Verteilung geht allerdings auf Kosten der Symmetrie, wie man an den unten gezeigten Beispieldiagrammen erkennen kann. Außerdem sind hierarchische Strukturen nicht so gut erkennbar wie bei dot oder neato.

circo und twopi

Der Vollständigkeit halber seien auch circo und twopi erwähnt. Bislang ist mir noch kein Einsatzfall bekannt, in dem circo oder twopi aussagekräftigere oder schönere Diagramme zeichnen als dot, neato oder fdp. Machen Sie sich anhand der folgenden Beispieldiagramme ein eigenes Bild. circo erhält die vorhandenen hierarchischen Strukturen weitestgehend. twopi dagegen macht sie unerkennbar. Zu den Diagrammen von circo sei gesagt, dass die Standardkonfiguration der internen Parameter bei mir stets zu unbrauchbaren Ergebnissen geführt hat. Setzen Sie das Node-Attribut mindist auf einen Wert zwischen 0.5 und 0.02, um Diagramme zu erhalten, die den verfügbaren Platz sinnvoll ausnutzen. Hier hilft nur Experimentieren.

Vergleich der Renderer anhand von Beispielgrafiken

Im Folgenden können Sie die Ergebnisse der einzelnen Renderer anhand von vier Beispielgraphen direkt miteinander vergleichen. Alle Renderer erhalten stets den gleichen Graph als Input. Die meisten dieser Graphen wurden strukturell von Markus M Geipel (ETH Zurich) erstellt. Unter [1] finden Sie seine ausführliche Analyse der Darstellungskraft der verschiedenen Renderer. Zur besseren Übersicht sind die Nodes hier eingefärbt, und zwar immer auf die gleiche Weise.

Grafik scalefree grid symetric
dot
dot-Beispieldiagramm (Graphviz)

Graphviz-Beispieldiagramm mit dem Renderer dot

dot im Verleich zu neato, fdp, circo und twopi

neato
neato im Vergleich zu dot, twopi, circo und fdp

neato-Diagramm im Vergleich zu dot (Graphviz)

neato-Diagramm (Graphviz)

fdp
Graphviz fdp Beispiel

Graphviz fdp Beispieldiagramm

Graphviz-Renderer fdp Beispiel

circo
circo-Renderer Beispieldiagramm (Graphviz)

circo-Renderer Beispieldiagramm (Graphviz)

Vergleich dot neato fdp circo twopi

twopi
twopi-Renderer Beispieldiagramm (Graphviz)

Graphviz-Renderer twopi Beispiel

Graphviz-Renderer twopi Beispiel



Dieser Artikel ist ein Originalartikel von 4webmaster.de. Copyright: Björn Klippstein; CC-Lizensierung in Kürze