我注意到一个小图表非常奇怪。它似乎只存在于所述图形的某个特定配置中(我可以找到)。即:取决于标签的存在,其中一个边缘的方向翻转。如果标签存在,则边缘走错,如果不存在,则边缘指向正确的方向。
以下是图表的两个版本:
如您所见,标题为foobar
的边缘上的箭头会在标签出现时立即反转方向。定义说4 -> 3
,所以,据我所知,头部应该是3,尾部来自4。但是,只要我添加标签,情况就相反了。除了代码中的label=foobar
属性外,其他任何内容都已更改。
我必须为图表的大小道歉。我通常会尝试找到一个最小的例子,但在这种情况下,更改关于节点布局的最微小的事情会改变结果,并且无论是否存在标签,边缘都会正确显示。
代码在这里:
digraph G {
2;
3;
6;
red;
11;
4;
8;
brown;
1;
ne2;
12;
two;
one;
yellow;
e2;
10;
5;
green;
four;
three;
7;
9;
1 -> 2 [style=bold];
1 -> 4 [style=bold];
1 -> 5 [style=bold];
1 -> 3 [style=bold];
2 -> ne2 [style=bold];
2 -> e2 [style=bold];
4 -> 6 [style=bold];
4 -> 7 [style=bold];
6 -> 10 [style=bold];
6 -> 9 [style=bold];
6 -> 8 [style=bold];
7 -> 11 [style=bold];
7 -> 12 [style=bold];
5 -> one [style=bold];
5 -> two [style=bold];
5 -> three [style=bold];
5 -> four [style=bold];
3 -> green [style=bold];
3 -> red [style=bold];
3 -> yellow [style=bold];
3 -> brown [style=bold];
4 -> 3 [constraint=false
,style=dotted
,label=foobar
,arrowhead=odot];
ne2 -> 4 [constraint=false
,label=head
,style=dotted
,arrowhead=odot];
7 -> four [constraint=false
,label=baz
,style=dotted
,arrowhead=odot];
6 -> two [constraint=false
,label=baz
,style=dotted
,arrowhead=odot];
4 -> 5 [constraint=false
,label=baz
,style=dotted
,arrowhead=odot];
ne2 -> 2 [constraint=false
,label=tail
,style=dotted
,arrowhead=odot];
}
我目前的graphviz版本是:
dot - graphviz version 2.26.3 (20100126.1600)
我是否误解了这些图表从点文件构建方式的基本原理?我认为箭头位置应该受到标签存在的影响似乎是不合理的。