Pomoč:Graphviz

Iz E-študij, proste zakladnice študentskega znanja

Skoči na: navigacija, iskanje
Orodje za risanje vsmerjenih grafov in diagramov

Graphviz je dodatek e-studij.si, ki omogoča da s pisanjem besedila podobno kot formule lahko rišemo tudi grafe.


[uredi] Dot jezik

Atribute se grafom določa v dot jeziku, za katerega je na voljo tudi dober vodič. Brez prebiranja tega vodiča bo izdelava grafov zelo neintuitivna ker se grafi brez znanja dot jezika kaj kmalu začno obnašati "po svoje".

[uredi] Atributi

Atributi so lastnosti posameznih elementov grafa (konice puščic, debeline črt, pisave, oblike okvirčkov, barve okvirčkov itd...) in so dokumentirani.

orientation=land
vertikalni napis (berljiv z desne)
size=
todo
center=true
centralna poravnava


shape=oblika vozlišča

shapes

arrowtail=oblika puščice
ranksep="razmik med nivoji"
rank="nivo"

[uredi] Risanje grafov

V splošni dokumentaciji graphviz-a je napisano mnogo o risanju, za začetnike pa bo najlažje če si ogledajo kodo sledečih primerov.

Zapomnimo si najprej to, da se grafi vedno začnejo in končajo z oznakama:

<graphviz> digraph G {
  koda grafa
} </graphviz>

Enostaven usmerjen graf bi ustvarili z ukazom...

digraph G {
  Hello->World
}



Enostaven neusmerjen graf bi ustvarili z ukazom...

graph G {
  Hello--World
}

Zahtevnejši primer bi bil graf različnih variant stavka, kateri vsebuje tudi presledke in pike...

digraph G {
  "Dober dan"->"otroci."
  "Dober dan"->"dame."
  "Dober dan"->"gospodje."
}

Včasih pri zaporedju elementov, ki si sledijo, koda grafa izgleda enostavnejša, pa še napiše se hitreje, če jih zapišemo enostavno v zaporedju. Ker pa izgleda tak kratek graf lepše če je zapisan vodoravno lahko uporabimo ukaz rankdir ter mu nastavimo LR (left-right)...

digraph G {
  rankdir = "LR"
  a -> b -> c -> d
  a -> 1 -> 2 -> 3 -> d
  b -> 2
}

Lahko se zgodi, da bomo imeli dve enaki besedi, kateri ne želimo da bi bili združeni v eno kot je praksa pri zgornjih grafih. To dosežemo tako da kreiramo 2 objekta z različnimi imeni in istim besedilom.

digraph G {
  a [label="foo"]
  b [label="foo"]
  a -> bar
  b -> bar
}

S spreminjanjem parametrov lahko narišemo tudi zahtevnejše grafe:

digraph G {
  size ="4,4";
  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=red]; // so is this
  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;
}

S poznavanjem dot jezika lahko tudi dodamo v grafe podgrafe in jih povežemo skupaj:

digraph G {
  compound=true;
  subgraph cluster0 {
    a -> b;
    a -> c;
    b -> d;
    c -> d;
  }
  subgraph cluster1 {
    e -> g;
    e -> f;
  }
  b -> f [lhead=cluster1];
  d -> e;
  c -> g [ltail=cluster0,
  lhead=cluster1];
  c -> e [ltail=cluster0];
  d -> h;
}

Za več primerov si oglejte povezavo pri dot jeziku v začetku članka.

Osebna orodja
Imenski prostori
Različice
Dejanja
navigacija
orodja