WikiSchool:Graphviz

Aus WikiSchool

(Weitergeleitet von GraphViz)
Hilfe!

Graphviz ist ein plattformübergreifendes freies Programm welches von AT&T und den Bell-Labs entwickelt wurde.

Inhaltsverzeichnis

[bearbeiten] Grundprinzip

Mit GraphViz lassen sich sehr schnell Struktur-Grafiken und Mindmaps erstellen. Verzweigungen lassen sich mit -> erstellen. GraphViz erstellt dann selbstständig eine Grafik daraus:

<graphviz>
digraph G {s
Hallo -> Welt;
Hallo -> Benutzer;
}
</graphviz>

[bearbeiten] Links

um einen Link im Bild zu erstellen geht ihr folgendermaßen vor: entweder

node [URL="http://www.wikischool.de/wiki/\N"];

nach 'digraph G {' einfügen oder falls der Link abweicht könnt ihr ihn auch manuell setzen mit

Unterpunkt [URL="Artikelname"];

Die Links müssen aber einzeln gesetzt werden. Ein nachträglich veränderter Link überschreibt einen node Link ein Punkt1 -> Punkt2 [URL="LINK"] würde einen Link auf dem Pfeil erstellen.

<graphviz>digraph G {
node [URL="http://www.wikischool.de/wiki/\N"]
Punkt1 [URL="Abweichender Punkt"];
Punkt2 [URL="Noch so einer"];
Punkt1 -> Punkt2;
Punkt2 -> Punkt3;
Punkt2 -> Punkt4;
}
</graphviz>

[bearbeiten] Ausrichtung

Die Ausrichtung einer Grafik lässt sich mit rankdir=LR bestimmen. Das LR lässt sich durch 4 Variablen ersetzen:

Von oben nach unten Von unten nach oben Von links nach rechts Von rechts nach links
<graphviz>
digraph G {
rankdir=TB;
A -> B;
}
</graphviz>
<graphviz>
digraph G {
rankdir=BT;
A -> B;
}
</graphviz>
<graphviz>
digraph G {
rankdir=LR;
A -> B;
}
</graphviz>
<graphviz>
digraph G {
rankdir=RL
A -> B;
}
</graphviz>

[bearbeiten] Form und Farbe

Es lassen sich auch Form und Farbe der Knotenpunkte bestimmen, hier die wichtigsten:
Weitere Formen finden sich hier. Die Farben hier

<graphviz>
digraph G {
bgcolor="transparent";
rankdir=LR;
Dreieck [shape=triangle, style=filled, color=blue, fontcolor=white];
Ei [shape=egg, style=filled, color=beige];
Kasten [shape=box, style=filled, color=yellow, fillcolor=green];
Haus [shape=house style=filled, color=gray, fillcolor=red];
Nix [shape=none, fontcolor=red];
Dreieck -> Ei -> Kasten -> Haus -> Nix [color=blue style=bold];
}
</graphviz>

[bearbeiten] Pfeile

Pfeile lassen sich global mit edge beeinflussen. Die Pfeilspitze wird dabei mit arrowhead= definiert.

<graphviz>
digraph G {
node [style=filled, color=black, fillcolor=white shape=triangle];
edge [style=bold color=blue];
bgcolor="transparent";
rankdir=LR;
size ="18,16";
A -> B [arrowhead=none];
B -> C [arrowhead=crow];
C -> D [arrowhead=vee];
D -> A [arrowhead=odot];
}
</graphviz>

<graphviz>
digraph G {
node [style=filled, color=black, fillcolor=white shape=box];
bgcolor="transparent";
edge [arrowhead=none];
A[shape=none label="E1.0" fillcolor=transparent];
B[shape=none label="E1.1" fillcolor=transparent];
C[shape=none label="E1.2" fillcolor=transparent];
D[shape=none label="E1.3" fillcolor=transparent];
X[label=">=1"];
rankdir=LR
size ="18,16";
A -> "&";
B -> "&";
C -> "& ";
D -> "& ";
"&" -> X;
"& " -> X;
X -> "A1.0";
"A1.0" [shape=none fillcolor=transparent];
}
</graphviz>

[bearbeiten] Kombinierte Knoten

Hier ist es nötig, bei den sogenannten Structs shape=record zu verwenden.

<graphviz>
digraph G {
node [style=filled, color=black, fillcolor=ghostwhite shape=record];
bgcolor="transparent";
rankdir=BT;
struct1 [label="<f0> E|<f1>   0. |<f2> 0", shape=record]; 
Adresstyp -> struct1:f0;
Byteadresse -> struct1:f1[label="0 bis ..."];
Bitadresse -> struct1:f2[label="0 bis 7"]; 
}
</graphviz>

<graphviz>
digraph G { 
bgcolor="transparent"
node [style=filled, color=black, fillcolor=white shape=record]; 
struct1 [label="<f0> left|<f1> mid\ dle|<f2> right"]; 
struct2 [label="<f0> one|<f1> two"]; 
struct3 [label="hello\nworld |{ b |{c|<here> d|e}| f}| g | h"]; 
struct1:f1 -> struct2:f0; struct1:f2 -> struct3:here; 
}
</graphviz>

[bearbeiten] Zeilenumbruch

Zeilenumbrüche können manchmal sehr nützlich sein. In Graphviz erstellt man solche mit \n.

<graphviz>
digraph G { 
bgcolor="transparent"
node [style=filled, color=black, fillcolor=white shape=box]; 
"So passt \n er viel \n besser..."; 
}
</graphviz>

<graphviz>
digraph G { 
bgcolor="transparent"
node [style=filled, style=bold, color=black, fillcolor=white shape=box]; 
"Rauchen gefährdet die Gesundheit\nund verkürzt die Lebenserwartung"; 
}
</graphviz>

[bearbeiten] Beispiele

Hier ein paar Beispiele zum sehen wie GraphViz funktioniert ist garnicht so schwer :)

<graphviz>
digraph G {
size ="18,16";
main [shape=box]; /* this is a comment */
main -> parse [weight=8];
parse -> execute;
main -> init [style=dotted];
main -> cleanup;
execute -> { make_string; printf}
init -> make_string;
edge [color=blue]; // die folgenden Pfeile in blau
main -> printf [style=bold,label="100 times"];
make_string [label="make a\nstring"];
node [shape=box,style=filled,color=".7 .3 1.0"];
execute -> compare;
}
</graphviz>

[bearbeiten] Weiteres Beispiel

<graphviz>
digraph G {
node [style=filled, color=black, fillcolor=ghostwhite];
bgcolor="transparent";
node [URL="http://www.wikischool.de/wiki/\N"]; 
size ="8,8";
Grundschule[shape=box, style=filled, fillcolor=lightblue];
Berufsausbildung [style=filled, fillcolor=lightblue];
Grundschule -> Realschule [weight=8] [label="4"];
Grundschule -> Hauptschule [weight=8][label="4"];
Grundschule -> Gymnasium [weight=8][label="4"];
Hauptschule -> BVJ[label="5"];
Hauptschule -> Berufsfachschule [label="5"];
Hauptschule -> Berufsausbildung [label="5"];
BVJ -> Berufsausbildung [label="1"];
Berufsfachschule -> Berufsausbildung [label="1 oder 2"];
Berufsfachschule -> Oberstufe [label="1 oder 2"];
Realschule -> Oberstufe [label="6"];
Realschule -> Berufsausbildung [label="5"];
Gymnasium -> Studium [label="3 bis 5"];
Gymnasium -> Oberstufe [label="6"];
Gymnasium -> Berufsausbildung [label="9"];
Oberstufe -> TG [label="3"];
Oberstufe -> WG [label="3"];
Oberstufe -> EG [label="3"];
TG -> Berufsausbildung [label="3"];
WG -> Berufsausbildung [label="3"];
EG -> Berufsausbildung [label="3"];
TG -> Studium [label="3 bis 5"];
WG -> Studium [label="3 bis 5"];
EG -> Studium [label="3 bis 5"];
Studium -> Berufsausbildung [label="3"];
}
</graphviz>


[bearbeiten] Erzeugt wird das eigentliche Bild mit folgenden Befehl:

png-Format:

$ dot -Tpng nichtvorhanden.dot -o nichtvorhanden.png

postscript-Format:

$ dot -Tps nichtvorhanden.dot -o nichtvorhanden.eps

svg-Format:

$ dot -Tsvg nichtvorhanden.dot -o nichtvorhanden.svg

jpeg-Format:

$ dot -Tjpeg nichtvorhanden.dot -o nichtvorhanden.jpeg

gif-Format:

$ dot -Tgif nichtvorhanden.dot -o nichtvorhanden.gif

[bearbeiten] Siehe auch

Eingeloggt werbefrei.



Links

Originelle Geschenke und Geschenkideen online finden.
Persönliche Werkzeuge