Aus LinuxUser 01/2014

Graphviz berechnet flexibel Graphen

© Jaroas, sxc.hu

Richtig arrangiert

Statt sich über das Layout einer Grafik zu verkünsteln, konzentrieren Sie sich mit Graphviz ganz auf die Inhalte und überlassen der Software das Design.

Je mehr Elemente ein Schaubild enthält, desto komplizierter fällt das Anordnen der Knoten aus. Statt nächtelang darüber zu brüten, übergeben Sie diese Aufgabe besser dem Computer, der – mit Graphviz [1] ausgestattet – diese Arbeit perfekt erledigt. Dabei basiert die Software auf einem offenen Format, das auf den Namen DOT hört und aus einfachen Textdateien besteht.

Die meisten Distributionen führen Graphviz bereits in ihren Repositories. Unter Debian und dessen Ablegern wie Ubuntu installieren Sie die Software über den Befehl apt-get install graphviz.

Grundlagen

Listing 1 zeigt die Grundlage für ein einfaches Diagramm. Die erste Zeile definiert das Diagramm mit dem Namen G. Alle anderen Bestandteile, die in den geschweiften Klammern stehen, beziehen sich auf dieses Diagramm – in diesem Fall die Verbindungen für ein Baumdiagramm. Jede Zeile schließen Sie mit einem Strichpunkt ab.

Listing 1

digraph G {
   DOT -> Organisationsdiagramm;
   DOT -> Pfeildiagramme;
   DOT -> MindMaps;
   DOT -> Netzpläne;
}

Graphviz enthält einen Renderer, der die Diagramme erzeugt. Er berechnet, welche Anordnung sich für die einzelnen Elemente am besten eignet. Die Standard-Renderer heißen dot, neato, fdp, circo und twopi. Je nachdem, welchen Renderer Sie verwenden, sehen die Diagramme anders aus.

Die Software unterstützt eine Reihe von Formaten für die Ausgabe. Zu den gebräuchlichsten gehören EPS, JPG, PNG, SVG und PDF. Eine komplette Liste erhalten Sie dot -T?. Wählen Sie als Format für die Ausgabe svg, dann können Sie das Ergebnis mit einem Zeichenprogramm von Hand nachbearbeiten.

Das eigentliche Konvertieren gelingt mit einem einfachen Befehl. Abbildung 1 zeigt das Ergebnis des folgenden Kommandos:

$ dot -T png -o b01-diagram.png b01-diagram.dot
Abbildung 1: Mit einem einfachen Befehl verwandeln Sie die Angaben aus Listing 1 in ein Diagramm.
Abbildung 1: Mit einem einfachen Befehl verwandeln Sie die Angaben aus Listing 1 in ein Diagramm.

Die Beschreibungssprache kennt im Wesentlichen drei Objekte, mit denen Sie das Diagramm erstellen (siehe Tabelle „Objekte“). Eigenschaften, die Sie in diesen Objekten festlegen, gelten für alle Objekte – es sei denn, Sie belegen die Eigenschaft mit einem neuen Wert.

Objekte

graph Gerichtete Graphen heißen digraph; ungerichtete Graphen bezeichnen Sie mit graph. Jedes Diagramm kann mehrere Graphen enthalten.
node Knoten, die auf eine bestimmte Weise miteinander in Verbindung stehen. Sie brauchen einen Node nicht extra zu definieren, er entsteht bei seiner ersten Verwendung.
edge Verknüpfungen zwischen den Nodes. Eine gerichtete Verknüpfung entsteht, sobald Sie zwei Nodes mit -> verbinden.

Beschriftung

Standardmäßig verwendet Graphviz zum Beschriften den Namen des Nodes. Für den Node-Namen eignen sich allerdings nicht alle Zeichen, insbesondere nicht Sonderzeichen. Möchten Sie Leerzeichen, Sonderzeichen oder Umbrüche verwenden, so definieren Sie für den Node ein Label (label), wobei Sie dessen Inhalt in Anführungszeichen setzen. Ein Zeilenumbruch fügen Sie mit der Escape-Sequenz \n ein. Mit dem Code aus Listing 2 erstellen Sie eine Übersicht über die Schullaufbahn in Bayern (Abbildung 2).

Listing 2

digraph G {
   G  [label="Grundschule"];
   H  [label="Hauptschule"];
   R  [label="Realschule"];
   Gy [label="Gymnasium"];
   RMNW [label="Mathe-Naturw."];
   RBWR [label="Wirtschaftlich"];
   RF   [label="Französisch"];
   RWS  [label="Musisch/Hausw./Sozial"];
   GYMNW  [label="Naturw.-Technisch"];
   GYSPR  [label="Sprachlich"];
   GYMUS  [label="Musisch"];
   GYWISO [label="Wirtschafts- und Sozialw."];
   G -> H; G -> R; G -> Gy;
   R -> RMNW; R -> RBWR; R -> RF; R -> RWS;
   Gy -> GYMNW; Gy -> GYSPR; Gy -> GYMUS; Gy -> GYWISO;
}
Abbildung 2: Diagramm der Schullaufbahn in Bayern.
Abbildung 2: Diagramm der Schullaufbahn in Bayern.

Das Ergebnis fällt nicht optimal aus: Besser wäre ein Verlauf von links nach rechts, anstatt von oben nach unten. Das Attribut rankdir des Objekts graph legt die Orientierung des Diagramms fest. Dafür gibt es die Werte TB (von oben nach unten, Grundeinstellung), LR (von links nach rechts), RL (von rechts nach links) und BT (von unten nach oben).

Das Aussehen ändern

Bei Bedarf ändern Sie das Aussehen eines Nodes über verschiedene Attribute. Dazu kommt beispielsweise shape=box zum Einsatz. Bei den Formen gilt es, zu beachten, dass bei manchen der Text über die Linie der Box hinausragt. Dies gehört zu den bislang ungelösten Problemen der Automatik. Hier müssen Sie dann noch einmal Hand anlegen, indem Sie die Größe der Form anpassen.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 6 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
KAUFEN
LinuxUser 01/2014 KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland

Hinterlasse einen Kommentar

  E-Mail Benachrichtigung  
Benachrichtige mich zu: