我有一个简单的垂直图表,看起来漂亮而对称,没有任何标签,使用以下代码:
digraph test_alignment
{
{rank=same; a -> b;}
a -> c;
b -> c;
c -> d;
d -> e;
d -> f;
{rank=same; e -> f;}
}
我想给A和B之间的边以及E和F之间的边贴上标签,并使用相同的字符串来标记。我期望得到相同的输出,只是A->B和E->F边更长,带有相同的标签。
不幸的是,一旦我给这些边之一添加标签,整体布局看起来略微歪斜(如果我给E->F边添加标签,结果会类似):
digraph test_alignment
{
{rank=same; a -> b [label="Label"];}
a -> c;
b -> c;
c -> d;
d -> e;
d -> f;
{rank=same; e -> f;}
}
我对graphviz非常陌生,在Stack Overflow上看了很多问题之后,我尝试使用不同的rank和constraint组合。我尝试使用群集来查看它是否可以将顶部和底部正确地独立对齐,并尝试使用dot、ccomp、gvpack和neato的混合产生了类似的结果。
总是似乎由于在具有相同rank的节点之间的边缘添加标签会以我目前还不理解的方式影响这些节点的位置。
我错过了一些微不足道的东西吗?还是我在尝试一些无用之举而不是让dot自己处理?
我使用的是dot - graphviz版本2.36.0(20140111.2315),链接图片仅使用dot生成(虽然使用:时我获得了类似的结果)。
dot test_alignment.dot -Tpng -O