2017-07-28 142 views
1

我爲給定的一組節點和邊緣生成(GraphViz)「點」文件。節點在y維中排序,rank =相同,排名中x維。邊緣按照它們應該繪製的順序排序。不幸的是,「點」不尊重x維中的順序。如果可以的話,我會爲平面有向圖實現無交叉佈局。不管它們是循環的還是非循環的。圖形渲染軟件,尊重節點和邊緣的相對順序

我的問題:

  1. 我怎麼能告訴「點」尊重節點的相對順序和邊緣
  2. 是否有替代「點」,哪些方面的相對順序,即接受佈局,並進行物理渲染。

Sample.dot

對不起,無法上傳文件點。 Sample.dot file

回答

0

非常感謝。我認爲「等級=相同; 0; 8;」隱含意味着與「rank = same; 0-> 8 [style = invis];」相同。無論如何,我的擔憂並不是交叉邊緣。這似乎是一個錯誤,因爲(6)和(2)留下足夠的空間來畫一條線。人們必須把一切都向正確的方向移動。 我的算法會生成一個命令,以便每個樹(綠色)邊緣可以向下/向右,每個十字(橙色)邊緣向下/向左,每個向後(紅色)邊緣向上/向左。如果圖形是平面的,則不使用交叉。爲了實現這一點,(8)必須繪製在(0)的右邊。我真的很開心,因爲如果我使用你的技術,就會發生這種情況。

digraph { 
    graph [charset=latin1, size ="19,46, 11,12"] 
    node [shape=box, fontname="Comic Sans MS", fontsize=8, height=0.2, width=0.2, ordering=out] 
{ rank=same; 0 -> 8 [style=invis]; } 
{ rank=same; 1; } 
{ rank=same; 2; } 
{ rank=same; 5 -> 9; [style=invis]; } 
{ rank=same; 6 -> 7 -> 10; [style=invis]; } 
{ rank=same;3; } 
{ rank=same;4; } 
0 -> 1 [color=green] 
1 -> 2 [color=green] 
8 -> 2 [color=orange] 
2 -> 5 [color=green] 
5 -> 6 [color=green] 
6 -> 2 [color=red, tailport=w, headport=w] 
5 -> 7 [color=green] 
7 -> 4 [color=green] 
2 -> 3 [color=green] 
2 -> 9 [color=green] 
9 -> 10 [color=green] 
10 -> 3 [color=orange] 
3 -> 4 [color=orange] 
} 

和它的佈局1