如何理解graphviz点边和节点行为?
从这个图表中可以看出:如何理解graphviz点边和节点行为?,graphviz,dot,Graphviz,Dot,从这个图表中可以看出: 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; x
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?<添加>代码> {Laq=相同;A0->X0>B0[style=vIs];}到您的图给出了期望的结果-这迫使顶部节点处于特定的顺序,但是隐藏了添加的边缘来做这件事。然而,我完全不知道为什么这是必要的
使用constraint=false似乎会导致“特殊”结果 下图给出了所需的结果。 看起来在它的自然排名中构造节点,使用dir=back工作得更好
digraph G {
a0 -> a1 -> a2;
x0 -> x1;
b0 -> b1 -> b2;
x1 -> a2 [dir=back];
x1 -> b2;
}
谢谢,这对这个案子很有帮助。但是加上一个关卡,我就不会再发疯了。请尝试有向图G{a0->a1->a2->a3;b0->b1;c0->c1->c2->c3;a3->b1[constraint=false]b1->c3[constraint=false]{rank=same a0->b0->c0[style=invi];}}哇,那一定是个bug。。。添加
spline=“line”代码>在这种情况下似乎有效;在其他布局中可能需要“正交”或“曲线”。