Inhaltsverzeichnis
GraphViz - dynamische Erstellung von Graphen
letzte inhaltliche Überarbeitung: 01.01.2008
1. GraphViz - Teil 1
1.1 Beschreibung
GraphViz ist ein Programmpaket mit dem man dynamisch Graphen aus Beschreibungen in Textform erstellen kann. Es steht unter der GPL - ist also frei verwendbar, im Sourcecode erhältlich und durch eigene Eingriffe veränderbar.
Ein „Graph“ ist die bildliche Darstellung eines Sachverhaltes in Form von Verknüpfungs- oder Verzweigungspunkten und Linien, die die Beziehungen innerhalb des Sachverhaltes darstellen. In Bild 1 ist ein Beispiel eines einfachen Graphen mit drei Verknüpfungspunkten dargestellt.
Bild 1
1.2 Einsatz
Mit diesem Programm kann man u.a. Ablaufdiagramme, Organigramme und viele andere Sachverhalte darstellen. Eine Grenze wird nur durch das eigene Vorstellungsvermögen und die Zeit sich mit dem Programm und seinen Möglichkeiten auseinanderzusetzen gesetzt.
Das obige Bild 1 habe ich mit Hilfe des Perl-Moduls „GraphViz.pm“ und dem Beispielskript „malmal“ aus dem Linux-Magazin 2002/09 erstellt.
Der Einsatz des Programms mit dem Perl-Modul ist der Antrieb für mein Interesse. Ich kann mir z.B. vorstellen einmal einen elektrischen Übersichtsschaltplan dynamisch aus Einträgen in einer SQL-Datenbank erzeugen zu lassen. Alles ist über einen normalen Browser bedienbar und läuft im Intranet auf einem (Linux-)Web-Server.
Vor die Bequemlichkeit der Browserbedienung und problemlose Erreichbarkeit vielfältiger Informationen hat der Schöpfer aber die noch vielfältigeren Hürden der Software-Installation gestellt.
1.3 Download und Installation
1.3.1 graphviz-Programm
Das Programmpaket GraphViz lädt man am besten von http://www.graphviz.org herunter. Im Unterverzeichnis „pub/GraphViz/ARCHIVE/“ findet man die Binarys und Sourcen für verschiedene Plattformen und Betriebssysteme.
Ich habe „graphviz-1.10-1“ als rpm heruntergeladen und mit dem üblichen:
rpm -ihv graphviz-1.10-1.i386.rpminstalliert. Bei meinem SuSE 8.1 gab es bis hierher keine Probleme.
1.3.1 GraphViz.pm - PerlModul
Um dynamische Graphen vom Web- oder Intranetserver erstellen zu lassen, benötigt man das Perl-CPAN-Modul GraphViz.pm. Dieses versuchte ich mit folgendem Befehl von CPAN herunterzuladen und zu installieren:
perl -MCPAN -e'install GraphViz'Leider kam nach dem Herunterladen und Aktualisieren meines CPAN und einiger anderer CPAN-Module am Ende eine Fehlermeldung, dass IPC::Run.pm nicht zu finden oder zu verwenden war.
Mit einem kühnen
perl -MCPAN -e'install IPC::Run.pm'versuchte ich das Problem auszumerzen - leider ohne Erfolg. Mein Perl lud alles herunter und kompilierte aber die Installation schlug fehl.
Daraufhin suchte ich unter /root/.cpan/build das Verzeichnis IPC-Run-0.77. Hier lagen unter lib schon die kompilierten Dateien wie sie in das Perl-Verzeichnis (bei mir /usr/lib/perl5/5.0.8) kopiert werden sollten.
Ich kopierte das Verzeichnis „IPC“ mit allen Unterverzeichnissen und Dateien in das Perl-Verzeichnis - voila - schon gelang auch die Installation des GraphViz.pm-Moduls wie oben schon einmal versucht.
1.4 Erster Test
Es war an der Zeit für einen ersten Funktionstest. Dazu kopierte ich das oben heruntergeladenen Perl-Script „malmal“ in das cgi-bin-Verzeichnis meines Intranet-Servers, passte den User und die Gruppe an und machte es ausführbar.
Der Aufruf von [mein-server]/cgi-bin/malmal
im Browser brachte gleich beim ersten Mal ein positives Ergebnis in Form eines HTML-Formulars wie es nachfolgend in Bild 2 dargestellt ist.
Bild 2
Nach einem Klick auf den Zeichnen-Button wird das Fenster Bild 3 neu aufgebaut. Im oberen Teil wird der Graph, entsprechend der Angaben im Textfeld darunter, erstellt. In Form einer png-Grafik ist er in die HTML-Seite eingebunden und kann durch einen Rechtsklick und „Grafik speichern …“ als Grafik-Datei dauerhaft gespeichert werden.
Bild 3
Der am Anfang dieser Seite gezeigte Graph Bild 1 wurde durch Eingabe folgender Angaben in das Textfeld erzeugt:
1 Erster Knoten 2 Zweiter Knoten 3 Knoten Nr. 3 1>2 Kante von Eins nach Zwei 1>3 Kante von Eins nach Drei
Jetzt beginnt die Arbeit erst richtig. Ich muss mich mit dem Perl-Skript beschäftigen und lernen die vielen verschiedenen Optionen zu verwenden wie:
- andere Schriftarten, Farben und Stärken
- andere Linienarten und -farben
- andere geometrische Figuren
- und, und, und …
To be continued …