2016-01-26 15 views
10

Mam następujący plik .dot.Siła narożników kwadratowych na krawędziach z grafviz

digraph 
{ 
    node [color=Limegreen,fontcolor=Limegreen,shape=oval] 
    ilocus [label="iLocus"] 
    gilocus [label="giLocus"] 
    pilocus [label="piLocus"] 
    nilocus [label="niLocus"] 
    silocus [label="siLocus"] 
    cilocus [label="ciLocus"] 
    filocus [label="fiLocus"] 
    iilocus [label="iiLocus"] 

    node [color=Blue,fontcolor=Blue,shape=diamond] 
    containgene [label="Contains gene(s)?"] 
    proteincoding [label="Protein coding?"] 
    multiplegenes [label="Multiple genes?"] 
    geneflank [label="Flanked by genes\non both sides?"] 

    ilocus -> containgene 
    containgene:e -> geneflank [xlabel="No"] 
    geneflank:e -> filocus [xlabel="No"] 
    geneflank:w -> iilocus [xlabel="Yes"] 
    containgene:w -> gilocus [xlabel="Yes"] 
    gilocus -> proteincoding 
    proteincoding:e -> nilocus [xlabel="No"] 
    proteincoding:w -> pilocus [xlabel="Yes"] 
    pilocus -> multiplegenes 
    multiplegenes:e -> silocus [xlabel="No"] 
    multiplegenes:w -> cilocus [xlabel="Yes"] 
} 

Rendering z graphviz Otrzymuję następujące.

Graphviz take 1

Czy jest jakiś sposób mogę zmusić krawędzie mają kwadratowe narożniki zamiast zaokrąglone narożniki? Atrybut splines=ortho z dokumentacji wydaje się być przeznaczony do tego w zasadzie, ale w praktyce otrzymuję proste linie, gdy dodaję graph [splines=ortho] do mojego digrafu.

Graphviz take 2

jakikolwiek sposób mogę dostać kwadratowe narożniki na krawędziach graphviz? Coś jak następuje:

------ Multiple genes? ----- 
    |       | 
    | N      Y | 
    |       | 
    v       V 
siLocus     ciLocus 

Odpowiedz

0

Być może po prostu użyć splines=false (link to GraphvizFiddle).

+0

Może moje wyjaśnienie nie było jasne. Zaktualizowałem, aby dokładnie pokazać, co rozumiem przez "kwadratowe rogi". –

+0

Ach, przepraszam, źle mnie zrozumiałem. Niestety orto rzadko robi to, na co ma ochotę ... – marapet

3

Może rozpocząć się za pomocą splines=line

digraph 
{ 
    splines=line 
    ... 

które daje ten wykres:

Graph using splines=line

Stamtąd może trzeba ręcznie ustawić węzły lub włóż ukryte węzły i krawędzie, takie jak

digraph 
{ 
    splines=line 

    node [color=Limegreen,fontcolor=Limegreen,shape=oval] 
    ilocus [label="iLocus"] 
    gilocus [label="giLocus"] 
    pilocus [label="piLocus"] 
    nilocus [label="niLocus"] 
    silocus [label="siLocus"] 
    cilocus [label="ciLocus"] 
    filocus [label="fiLocus"] 
    iilocus [label="iiLocus"] 

    node [color=Blue,fontcolor=Blue,shape=diamond] 
    containgene [label="Contains gene(s)?"] 
    proteincoding [label="Protein coding?"] 
    multiplegenes [label="Multiple genes?"] 
    geneflank [label="Flanked by genes\non both sides?"] 

    spacer1 [label="xxxx",style=invis] 
    {rank=same gilocus spacer1 geneflank} 
    gilocus -> spacer1 -> geneflank [style=invis] 

    ilocus -> containgene 
    containgene:e -> geneflank [xlabel="No"] 
    geneflank:e -> filocus [xlabel="No"] 
    geneflank:w -> iilocus [xlabel="Yes"] 
    containgene:w -> gilocus [xlabel="Yes"] 
    gilocus -> proteincoding 
    proteincoding:e -> nilocus [xlabel="No"] 
    proteincoding:w -> pilocus [xlabel="Yes"] 
    pilocus -> multiplegenes 
    multiplegenes:e -> silocus [xlabel="No"] 
    multiplegenes:w -> cilocus [xlabel="Yes"] 
} 

która produkuje

enter image description here

Alternatywnie, można wstawić spacje w najlepszych etykiet, aby dolne węzły kolejce lepiej:

digraph 
{ 
    splines=line 

    node [color=Limegreen,fontcolor=Limegreen,shape=oval] 
    ilocus [label="iLocus"] 
    gilocus [label="giLocus"] 
    pilocus [label="piLocus"] 
    nilocus [label="niLocus"] 
    silocus [label="siLocus"] 
    cilocus [label="ciLocus"] 
    filocus [label="fiLocus"] 
    iilocus [label="iiLocus"] 

    node [color=Blue,fontcolor=Blue,shape=diamond] 
    containgene [label=" Contains gene(s)? "] 
    proteincoding [label="Protein coding?"] 
    multiplegenes [label="Multiple genes?"] 
    geneflank [label="Flanked by genes\non both sides?"] 

    ilocus -> containgene 
    containgene:e -> geneflank [xlabel="No"] 
    geneflank:e -> filocus [xlabel="No"] 
    geneflank:w -> iilocus [xlabel="Yes"] 
    containgene:w -> gilocus [xlabel="Yes"] 
    gilocus -> proteincoding 
    proteincoding:e -> nilocus [xlabel="No"] 
    proteincoding:w -> pilocus [xlabel="Yes"] 
    pilocus -> multiplegenes 
    multiplegenes:e -> silocus [xlabel="No"] 
    multiplegenes:w -> cilocus [xlabel="Yes"] 
} 

która produkuje

enter image description here

+0

Zdecydowanie pomocny, ale frustrujący, że nie mogę uzyskać kąta 90 °, na przykład "Nie" między "Zawiera gen (y)?" i "Osierocone przez geny po obu stronach?". –

Powiązane problemy