2017-07-28 50 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