图形渲染软件,它遵循节点和边缘的相对顺序

时间:2017-07-28 09:16:16

标签: graphviz dot graph-layout

我正在为给定的一组节点和边缘生成(GraphViz)“点”文件。节点按y维排序,秩=相同,排名中的x维。边缘按照应绘制的顺序排序。不幸的是,“点”不符合x维度的顺序。如果可以的话,我会为平面图形实现无交叉布局。无论它们是循环的还是非循环的。

我的问题:

  1. 如何判断“dot”是否遵守节点和边缘的相对顺序
  2. 是否有“dot”的替代方案,它尊重相对顺序,即接受布局,并进行物理渲染。
  3. Sample.dot

    抱歉,无法上传点文件。Sample.dot file

1 个答案:

答案 0 :(得分:0)

非常感谢。我thougt" rank = same; 0; 8;"隐含地表示与" rank = same; 0-> 8 [style = invis];"相同。 无论如何,我关心的不是过境点。这似乎是一个错误,因为有足够的地方留给(6)和(2)画一条线。一个人必须将一切都向右移动。 我的算法生成一个顺序,使得每个树(绿色)边缘可以向下/向右,每个交叉(橙色)边缘向下/向左,每个向后(红色)边缘向上/向左。没有交叉,如果图是平面的。为了实现这一点,必须在(0)的右边绘制(8)。我真的很开心,因为如果我使用你的技术,就会发生这种情况。

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