3 Ocak 2018 Çarşamba

Graphviz

Giriş
Aşağıda Graphviz ile ilgili aldığım notlar var.

Node Tanımlamak
Önce düğümler tanımlanır. Düğümlere
color= ile renk verilir.
shape=circle,oval, point gibi şekiller verilebilir.
label= ile isim verilir.

Örnek
Şöyle yaparız.
digraph G {
A [color=gray];
B [color=red];
C [color=green];
D [color=green];
A->B ;
A->C ;
C->D ;
}
Örnek
Şöyle yaparız.
digraph
{
  node [color=Limegreen,fontcolor=Limegreen,shape=oval]//Renk,font,şekil ver
  ilocus [label="iLocus"] //Düğüme isim ver
  ...
}
Aynı özelliklere sahip düğümler node [...] ile başlayan satırdan sonra tanımlanır. Tekrar node [..] ile başlarsak bir özelliği değiştiririz.
digraph
{
  node [color=Limegreen,fontcolor=Limegreen,shape=oval]
  ilocus [label="iLocus"]
  ...
  node [color=Blue,fontcolor=Blue,shape=diamond]
  containgene [label="Contains gene(s)?"]
  ...
}

Örnek
Node'lara circle, doublecircle,point gibi şekiller verilebilir. Şöyle yaparız.
digraph G {
  office1 [label="Building office1", shape=circle];
  office2 [label="Building office2", shape=circle];
  warehouse1 [label="Building warehouse1", shape=circle];
  contract1 [label="Contract contract1", shape=diamond];
  contract2 [label="Contract contract2", shape=diamond];
  office1->office2 ;
  warehouse1->contract1 ;
  contract2->contract1 ;
}
Örnek
Node'lara etiket verilebilir. Şöyle yaparız.
digraph finite_state_machine {
    pad=0.2;
    {
        rank=same;
        node [shape = point, style = invis]; q_0;
        node [shape = doublecircle, style = solid]; q_5;
        node [shape = circle];
        q_1 [ label = <<i>q<sub>1</sub></i>> ];
        q_2 [ label = <<i>q<sub>2</sub></i>> ];
        q_3 [ label = <<i>q<sub>3</sub></i>> ];
        q_4 [ label = <<i>q<sub>4</sub></i>> ];
        q_5 [ label = <<i>q<sub>5</sub></i>> ];
        q_0 -> q_1;
        q_1 -> q_2 [ label = "." ];
        q_1 -> q_2 [ label = <&epsilon;>, constraint=false ];
        q_2 -> q_1 [ label = <&epsilon;>, constraint=false ];
        q_2 -> q_3 [ label = <<i>a</i>> ];
        q_3 -> q_4 [ label = <<i>^a</i>> ];
        q_3 -> q_4 [ label = <&epsilon;>, constraint=false ];
        q_4 -> q_3 [ label = <&epsilon;>, constraint=false ];
        q_4 -> q_5 [ label = <<i>b</i>> ];
    }
}
2. Bağlantıları Tanımlamak
Düğümler bittikten sonra bağlantılar tanımlanır. Sadece basit bir çizgi istiyosak şöyle yaparız.
ilocus -> containgene
Eğer düğümden iki çizgi çıkıyorsa sağdaki (east) ve soldaki (west) çizgileri şöyle tanımlarız.
containgene:e -> geneflank [xlabel="No"]
containgene:w -> gilocus [xlabel="Yes"]
Çıktı olarak şuna benzer bir şey alırız.
  ------ Multiple genes? -----
  |                          |
  | N                      Y |
  |                          |
  v                          V
siLocus                   ciLocus
spline
Çizgilerin görünüşünü kontrol eder. Yuvarlak hatlı çizgiler yerine düz çizgiler istiyorsak şöyle yaparız.
digraph
{
  splines=line
  ...
}
3. Subgraph
Şöyle yaparız.
digraph G
{
    graph [compound = true];
    splines = false;
    node [style = bold, shape = record, fontcolor = magenta];

    subgraph cluster0
    {
        style = bold; label = “Mac”;
        edge [style = invisible, arrowhead = none];
        “Finder” -> “Terminal” -> “Safari”;
    }

    subgraph cluster1
    {
         style = bold; label = “Windows”;
         node_1 [label = “<f0> Start|<f1> Command Prompt”];
    }

    subgraph cluster2
    {
         style = bold; label = “Linux”;
         node_1 [label = “<f0> Start|<f1> Konsole”];
    }
}

Hiç yorum yok:

Yorum Gönder