来自此图表:
digraph G {
a0 -> a1 -> a2;
x0 -> x1;
b0 -> b1 -> b2;
}
给出了这种图形表示:
a 0 x 0 b 0
| | |
a 1 x 1 b 1
| |
a 2 b 2
我想将a2连接到x1,将x1连接到b2。
所以我试过了:
digraph G {
a0 -> a1 -> a2;
x0 -> x1;
b0 -> b1 -> b2;
a2 -> x1 [constraint=false];
x1 -> b2 [constraint=false];
}
我的期望是:
a 0 x 0 b 0
| | |
a 1 x 1 b 1
| / \ |
a 2 b 2
但不幸的是,它被渲染成这样,我不知道为什么。
a 0 b 0 x 0
| | |
| | |
| | |
a 1 b 1 x 1
| | _ / /
| + /
| _/ | /
a 2 b 2
我怎样才能更好地理解为什么会这样,并帮助我保持x0 - > x1在图的中间?
答案 0 :(得分:2)
在图表中添加{rank=same; a0 -> x0 -> b0 [style=invis];}
会得到所需的结果 - 这会强制顶级节点按特定顺序排列,但会隐藏添加的边以执行此操作。但是,我完全不知道为什么这是必要的。
答案 1 :(得分:0)
使用constraint = false似乎会导致“特殊”结果。
下图给出了所需的结果。 看起来像在自然排名中构造节点,并且使用dir = back效果更好。
digraph G {
a0 -> a1 -> a2;
x0 -> x1;
b0 -> b1 -> b2;
x1 -> a2 [dir=back];
x1 -> b2;
}