2012-04-22 240 views
0

我無法控制graphviz的佈局。 試圖製作一個簡單的自動機。 源:如何控制點的邊緣位置和標籤(graphviz)

digraph mygraph { 
rankdir=LR; 
size="13,13" 
node [shape = circle]; 
init -> Ready [ label = "" ]; 

Ready -> P1 [ label = "t<T\n----TexT----" ]; 
P1 -> Ready [ label = "t>T" ]; 
P1 -> B1 [ label = "t<T" ]; 
B1 -> P1 [ label = "----TexT----" ]; 
B1 -> U1 [ label = "----TexT----" ]; 

Ready -> P2 [ label = "t<T\n----TexT----" ]; 
P2 -> Ready [ label = "t>T" ]; 
P2 -> B2  [ label = "t<T" ]; 
B2 -> P2  [ label = "----TexT----" ]; 
B2 -> U2  [ label = "----TexT----" ]; 


U1 -> Ready [ label = "----TexT----", constraint=false]; 
U2 -> Ready [ label = "----TexT----", constraint=false]; 

P1 -> P2 [ label = "t<T\n----TexT----", constraint=false]; 
P2 -> P1 [ label = "t<T\n----TexT----", constraint=false]; 
} 

麻煩的是,標籤相互交織。我可能需要: 1間距較大 2.將一些邊緣向上 3.控制標籤的名次

我該怎麼辦呢? graph.png

回答

1

自衝突上的垂直邊緣上相同的秩(P1 & P2)放置在由點節點之間以相反的方向要發生可以使用垂直秩方向(掉落「rankdir = LR」線),從而使這些特定邊緣的標籤被放置在一個在另一個之下而不是並排放置。當然,這對於這類問題並不是一種普遍的治療方法,但應該在這裏有所幫助,而不會不必要地膨脹圖表(通過「nodesep」增加節點間隔將會這樣做)。

+0

謝謝。刪除rankdir的確改善了一些事情,但這很煩人。我喜歡之前的節點佈局。 – mousomer 2012-06-06 13:51:15