Diagramme generieren mit Graphviz
Posted on August 19th, 2009 in Konsole, Programme, Programmierung, Ubuntu | von Bernhard Essl | 8 Comments »
Nennt mich Nerd, aber ich erfreue mich an automatisch generierten Grafiken wie Diagrammen aus Datenmengen. Ein Tool das genau zu diesen Zweck verwendet werden kann ist Graphviz, damit lassen sich schnell und einfach Diagramme erstellen. Strukturdiagramme, Pfeildiagramme, automatisch erzeugte Diagramme und aufwändig manuell gestaltete Diagramme. Bevor eine Grafik erstellt werden kann wird eine Definitionsdatei erstellt in der Beschreibungssprache DOT.
Im ersten Beispiel soll eine Grafik erzeugt werden, die von “Linux” Verbindungen zu “Debian”, “Gentoo” und “Ubuntu” zeigt.
/* linux_family_1.dot */ digraph G { Linux -> Debian Linux -> Gentoo Linux -> Ubuntu }
Mit dem Kommandozeilenbefehl dot wird nun der Quelltext zu einer Grafik (GIF, PNG, SVG oder PostScript) verarbeitet. In unseren Beispiel wollen wir eine PNG Datei aus dem DOT Quelltext erzeugen.
dot -Tpng linux_family_1.dot > linux_family_1.png
Das ganze kann noch etwas mit Farb- und Font-Definitionen aufgewertet werden.
digraph G { node [fontname=Verdana,fontsize=9] node [style=filled] node [fillcolor="#EEEEEE"] node [color="#EEEEEE"] edge [color="#31CEF0"] node [shape=box] Linux -> Debian Linux -> Gentoo Linux -> Ubuntu Debian -> Ubuntu }
Es lässt sich noch einiges mehr mit Graphviz anstellen, ich möchte hier aber auf die Doku von Graphviz und auf den Wiki-Artikel http://wiki.ubuntuusers.de/Graphviz verweisen.
Zum Schluss noch ein Beziehungsdiagramm das die Tags aus den Bookmarks von meinen delicious.com Account darstellt.
Hier das Skript (Ruby) für Interessierte.
8 Responses
Dann mal noch ein feines Spielzeug und zwar mit der verteilten Suchmaschiene YaCy kann man nicht nur das Web selbst indexieren sondern das ganze auch hübsch als Graph anzeigen lassen http://www.yacy-websuche.de/wiki/index.php/De:Indexing
Graphviz an sich ist ja jetzt nichts neues. Viel interessanter finde ich allerdings das Ruby-Script. Dazu schreibst du leider etwas wenig.
Wie bekomme ich denn eine delicious.xhtml ?
Wenn ich über Settings => Export von Delicious mir das exportieren will, kann ich das nicht so direkt benutzen.
/usr/lib/ruby/1.8/rexml/parsers/treeparser.rb:92:in `parse’: #
/usr/lib/ruby/1.8/rexml/parsers/baseparser.rb:330:in `pull’
/usr/lib/ruby/1.8/rexml/parsers/treeparser.rb:22:in `parse’
/usr/lib/ruby/1.8/rexml/document.rb:228:in `build’
/usr/lib/ruby/1.8/rexml/document.rb:43:in `initialize’
tags.rb:5:in `new’
tags.rb:5
…
Missing end tag for ‘DT’ (got “DL”)
Line: 456
Position: 88497
Last 80 unconsumed characters:
Line: 456
Position: 88497
Last 80 unconsumed characters:
from /usr/lib/ruby/1.8/rexml/document.rb:228:in `build’
from /usr/lib/ruby/1.8/rexml/document.rb:43:in `initialize’
from tags.rb:5:in `new’
from tags.rb:5
hi kb,
meiner Meinung nach und der Meinung von meinen HMLvalidierer ist der Export von delicious kaputt weil einfach tags fehlen. Am besten ist du machst einen export und entfernst alles bis auf die <a href tags, dann sollte das klappen.
LG b23
Vielen dank, werde ich mal probieren!
Es gibt natürlich noch die Programme neato, twopi, circo und fdp, die die Graphen mit einem unterschiedlichen Algorithmus layouten. Sie sind mit bei Graphviz dabei. twopi und circo können bei zu vielen Knoten aber manchmal ewig laufen.
Warum schreibst du immer “Graphiz” obwohl das Programm “Graphviz” heißt?
Nicht aufgefallen, danke Philipp.
[...] Diagramme generieren mit Graphviz Für manche ein alter Hut, ich hab das noch nicht gekannt. [...]