我有这样定义的图:
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/