Open Source im professionellen Einsatz

Newsletter abonnieren
Seite durchsuchen

HEFTARCHIV | NEWS | E-BIBLIOTHEK | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO | SHOP

user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2007  »  03  »  Zeichen-Set  

RSS-Feed der aktuellen News von Linux-Magazin Online Folgen Sie Linux-Magazin Online auf Twitter
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark

Visualisierung von Grafen mittels Graphviz

Zeichen-Set

von Tim Schürmann
Erschienen im Linux-Magazin 2007/03

Viele Anwender zeichnen ihre Grafen und Diagramme langwierig per Hand und Malprogramm. Dass es auch schneller geht, beweist der Werkzeugkasten Graphviz. Er erzeugt aus einer kurzen textuellen Beschreibung in Sekundenschnelle eine ansehnliche und aufgeräumte Zeichnung.

In nur 15 Minuten will der Chef ein hübsches Diagramm der niegelnagelneuen Netzwerkarchitektur für eine Präsentation. Das riecht nach einem schnellen Griff zu Open Office Draw, in dem man noch schnell ein paar Kreise zusammenklickt. Das Ergebnis wirkt auch nach mehreren Korrekturversuchen recht unsymmetrisch und die Pfeile scheinen ein paar Zentimeter über dem Ziel zu schweben. Zwei Türen weiter windet sich die Entwicklungsabteilung gerade im Würgegriff eines größeren UML-Diagramms. Egal wie der Teamleiter die Klassen auch positioniert, das Ergebnis bleibt unübersichtlich.

In beiden Fällen hilft Graphviz. Die kleine Programmsammlung springt immer dann ein, wenn automatisch Grafen (siehe Kasten "Terminologie") zu zeichnen sind. Über die stolpern Computernutzer immer wieder in den unterschiedlichsten Lebenslagen. Angefangen bei Entity-Relationship-Diagrammen, die ein Datenbankschema visualisieren, bis zu hierarchischen Baumstrukturen, die Unternehmensbeteiligungen oder eine Mitarbeiterhierarchie darstellen.

Normalerweise steckt dabei jede Information in einem rechteckigen Kasten, den man anschließend möglichst geschickt und ohne Überlappungen mit anderen Kästen über Pfeile verbindet. Genau diese Aufgabe übernimmt Graphviz: Der Anwender legt nur fest, welche Elemente welche Beziehungen pflegen, und schon spuckt das Programm eine ansehnliche Zeichnung aus. Diese Festlegung findet jedoch nicht in einem hübschen grafischen Editor statt. Graphviz liest vielmehr die textuelle Beschreibung des Grafen in einer speziellen Auszeichnungssprache. Ein analoges Konzept verwendet das bekannte Latex, auch wenn die beiden Systeme sonst keine Gemeinsamkeiten aufweisen.

Graphviz liegt schon seit vielen Jahren allen gängigen Linux-Distributionen bei. Die Installation beschränkt sich somit auf ein paar Klicks im Paketmanager. Wahlweise liegt auf der Graphiz-Homepage [1] die stets letzte Version im Quelltext, den der bekannte Dreisatz »configure; make; make install« übersetzt und einspielt. In jedem Fall finden anschließend auf der Festplatte mehrere kleine Programme eine neue Heimat.

Schreib mal wieder

Bevor die Graphviz-Tools jedoch in Aktion treten, brauchen sie noch eine Beschreibung des Grafen. Hierzu erstellt der Nutzer eine Textdatei in der leicht zu lernenden Sprache DOT. Listing 1 realisiert einen einfachen gerichteten Grafen. Die Beschreibung definiert zunächst einen gerichteten Grafen mit dem Namen »G«, der drei Knoten enthält: »vater«, »sohn« und »tochter«. Im Gegensatz zu vielen anderen Programmiersprachen müssen die Knoten nicht explizit deklariert oder eingeführt sein. Es genügt, sie einfach zu verwenden.

Listing 1:
»beispiel1.dot«

01 digraph G {
02         /* Der Vater hat einen Sohn und eine Tochter: */
03         vater -> sohn;
04         vater -> tochter;
05 }

Die Pfeile legen fest, zwischen welchen Knoten eine Kante verläuft. Auch Schleifen sind erlaubt: »vater -> vater« zeigt auf sich selbst. Ein optionales Semikolon schließt jede Zeile ab. Wie an der Klammerung zu sehen ist, lehnt sich die Syntax an die Programmiersprache C an. Von dort stammt auch die Notation für Kommentare, sie stehen zwischen »/*« und »*/«.

Auf den Punkt gebracht

Die textuelle Beschreibung wandelt das mitgelieferte Werkzeug »dot« in eine Zeichnung um. Verwirrenderweise trägt es den gleichen Namen wie die Beschreibungssprache. Der folgende Befehl erzeugt beispielsweise eine PNG-Datei (Abbildung 1):

dot -Tpng beispiel1.dot -o beispiel1.png

Darüber hinaus kennt »dot« noch Postscript (Parameter »-Tps«), Jpg, Gif, Fig, SVG und einige weitere mehr oder weniger exotische Formate. Eine direkte PDF-Ausgabe ist derzeit allerdings nicht möglich. Hier hilft nur der Umweg über das Ghostscript-Werkzeug »ps2pdf«. Auf den Parameter »-o« samt Dateinamen sollte man übrigens besser nicht verzichten. Wenn diese Angabe fehlt, fließt die Ausgabe des Programms direkt in die Konsole. Analoges gilt für den Parameter »-T«, ohne den »dot« einfach nur wieder eine textuelle Beschreibung der Zeichnung auswirft.


Abbildung 1: Die Beschreibung aus Listing 1 führt zu diesem gerichteten Grafen.

Wenn in der Beschreibung andere Angaben fehlen, erzeugt »dot« ovale Knoten, die mit ihren Namen beschriftet sind. Im Beispiel soll das Familienoberhaupt jedoch mit seinem richtigen Vor- und Zunamen in einem rot ausgefüllten Rechteck erscheinen. Für derartige Änderungswünsche stehen in der DOT-Sprache einige Attribute zur Verfügung. Um eine bestimmte Eigenschaft wie die Farbe oder die Beschriftung zu ändern, erhält das zugehörige Attribut einfach einen neuen Wert:

color = red
label ="Hans Schmitt"

Diese Attribute schreibt der Anwender durch Kommata getrennt und von eckigen Klammern umschlossen hinter den Knotennamen. Im Fall des Vaters sieht dies folgendermaßen aus:

vater [shape = box, style = filled, color = red, label ="Hans Schmitt"];

Diese Zeile platziert Listing 2 nun irgendwo zwischen den geschweiften Klammern des Grafen. Empfehlenswert ist es dabei, immer das Aussehen der Knoten zu Beginn festzulegen und erst dann die Kanten zu definieren.

Terminologie

Ein Graf verbindet immer mehrere Kästchen über Linien. Die Kästchen bezeichnet man als Knoten, die Linien als Kanten. Ein gutes Beispiel für einen Grafen wäre eine Autobahnkarte: Die Städte bilden die Knoten, während die Straßen die Kanten repräsentieren. Wenn die Verbindungen als Pfeile dargestellt werden, spricht man von einem gerichteten Grafen. Fehlen die Pfeile, handelt es sich entsprechend um einen ungerichteten Grafen. Gerichtete Kanten entsprechen Einbahnstraßen, die der Fahrer nur in einer Richtung passieren darf.

Das Ganze lässt sich noch mathematisch korrekt und somit etwas kryptischer ausdrücken: Danach besteht ein (gerichteter) Graf G = (V,E) aus einer Menge von Knoten V und einer Menge von Kanten E, wobei Letztere die Paare (geordneter) Knoten in der Form e = (x,y) enthält.

Sie können diesen Artikel als PDF für 99 Cent kaufen. Klicken Sie dazu einfach auf eine der beiden Bezahloptionen Paypal oder ClickandBuy.


Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Ähnliche Artikel
Ausstellung eröffnet! HTML-Galerien auf der Kommandozeile erstellen
Der Wald vor lauter Bäumen Logfile-Betrachter für Desktop und Shell
PDF nach Maß PDF-Dateien unter Linux konvertieren und bearbeiten
Brave GNU World Die monatliche GNU-Kolumne
Tooltipps Werkzeuge im Kurztest
Gnu-Herde Vorbereitung auf die LPIC-1-Prüfung - Teil 4
Whitepaper
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele

Über die letzten Jahre hinweg haben sich Open Source Lösungen als fester Bestandteil des gesamten Datenintegrationsmarktes etabliert. Viele Unternehmen haben bereits das Open Source Modell für Ihre Datenintegrationsprojekte aufgegriffen. Das vorliegende White Paper illustriert anhand ausgewählter Fallstudien und Anwendungsbeispiele die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.

Download PDF (Registrierung erforderlich)
The Role of Open Source in Data Integration

Obwohl in den letzten Jahren viele technische Fortschritte erzielt werden konnten, verfügen die meisten Datenintegrationsprozesse nach wie vor nur über eine sehr begrenzte Automatisierung. Das vorliegende White Paper von dem Industry Analyst Mark Madson wird zunächst ein grundlegendes Verständnis von Daten Integration vermitteln, die Vorzüge von Open Source Lösungen für Daten Integration erläutern und Ihnen professionelle Empfehlungen geben, damit Sie Ihre Integrationsjobs noch einfacher und produktiver gestalten können.

Download PDF (Registrierung erforderlich)
Kommentare (0)