有向图中的边缘方向取决于标签的存在?可能是一个错误?

时间:2014-03-07 22:58:39

标签: graphviz

我注意到一个小图表非常奇怪。它似乎只存在于所述图形的某个特定配置中(我可以找到)。即:取决于标签的存在,其中一个边缘的方向翻转。如果标签存在,则边缘走错,如果不存在,则边缘指向正确的方向。

以下是图表的两个版本:

Correct version Incorrect version

如您所见,标题为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)

我是否误解了这些图表从点文件构建方式的基本原理?我认为箭头位置应该受到标签存在的影响似乎是不合理的。

1 个答案:

答案 0 :(得分:3)

这是indeed a bug。它已在2.28版本中修复,因此升级应该足够了。