我有这样定义的图:

digraph G {
    rankdir=LR
    node[shape=circle]
    q_[shape=none label=""]
    q3[shape=doublecircle]
    q4[shape=doublecircle]
    q_->q0
    q0->q1[label="λ"]
    q0->q2->q4[label=a]
    q1->q4->q2[label=b]
    q1->q3[label=a]
    q3->q4[label="λ"]
    {rank=same; q4 q3}
    {rank=same; q1 q2}
}

该图输出以下图像:

您可以在此处使用图表:http://graph.gafol.net/derive/effpjWfSD

我的问题是:

为什么q4指向渲染图形中的q3,而不是我在标记中指定的方式?是因为{rank=same; q4 q3}不仅具有定位节点的含义,还具有更多的语义含义吗?在这种情况下,如何在不使用{rank=same; ...}的情况下定位节点,以使输出不像输出那样丑陋?

最佳答案

rank=same中没有隐藏的语义含义,这只是一个错误。

例如,当省略边缘或rankdir=LR的标签时,将正确绘制边缘。

您可以通过将dir属性添加到错误绘制的边缘来更正此特定图形:

q3->q4[label="λ", dir=back]

动态创建图形时,这当然没有帮助。

此错误可能与http://www.graphviz.org:8080/bugs/openbugs.html上报告的由rankdir=LR引起的其他已知错误之一有关。

关于graphviz - 定位具有 `{rank=same ...}`副作用的节点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5233505/

10-09 02:12