2015-11-25 73 views
0

我正在使用graphviz(點)來生成時間展開圖,以便在我的碩士論文中使用。但是,我的繪圖結果如下圖所示: Resulting Graph如何強制子圖在Graphviz中的同一水平線上

正如您所看到的,第三行稍微向右移動一點。我希望所有行位於同一水平行。另外我希望每行中的x.th節點保持在其他x.th節點的同一水平線上。改變邊緣重量對我無幫助。

到目前爲止我找不到與此問題相關的任何內容。

我想達到的目標是這樣的: Example Graph

這裏是我的代碼:

digraph G { 
1[label="1"] 
2[label="1"] 
3[label="1"] 
4[label="1"] 
5[label="1"] 
6[label="1"] 
7[label="2"] 
8[label="2"] 
9[label="2"] 
10[label="2"] 
11[label="2"] 
12[label="2"] 
13[label="3"] 
14[label="3"] 
15[label="3"] 
16[label="3"] 
17[label="3"] 
18[label="3"] 
19[label="4"] 
20[label="4"] 
21[label="4"] 
22[label="4"] 
23[label="4"] 
24[label="4"] 

rankdir="LR"; 
node[width=0.15, height=0.15, shape=point]; 
edge[weight=500, label="1"]; 

1 -> 2 -> 3 -> 4 -> 5 -> 6 ; 
7 -> 8 -> 9 -> 10 -> 11 -> 12 ; 
13 -> 14 -> 15 -> 16 -> 17 -> 18 ; 
19 -> 20 -> 21 -> 22 -> 23 -> 24 ; 

edge[weight=3]; 
1 -> 9; 
2 -> 9; 
3 -> 11; 

13 -> 22; 
14 -> 22; 
15 -> 24; 

edge[weight=1]; 
1 -> 14; 
2 -> 15; 
3 -> 17; 

7 -> 21; 
8 -> 23; 
9 -> 22; 
} 

任何幫助,將不勝感激。

回答

1

而不是使用weight嘗試使用屬性constraint=false用於從一個「行」到另一個全力以赴邊緣。

設置constraintfalse使graphviz變爲而不是在佈局圖的節點時考慮這些邊。

另請參閱此very similar question & answer

+0

謝謝,這解決了我的對齊問題。但現在,第二行和第三行交換了。我希望他們按1,2,3,4的順序從上到下。有什麼辦法可以做到這一點? – Makif

+0

一些[看不見的邊緣](http://stackoverflow.com/a/12578764/63733)通常有幫助(一些[其他有用的技術](http://stackoverflow.com/a/25776916/63733))。 – marapet