我有一个图形定义如下:
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}
}
Run Code Online (Sandbox Code Playgroud)
该图输出以下图像:

你可以在这里玩图:http://graph.gafol.net/derive/effpjWfSD
我的问题是:
为什么q4在渲染图中指向q3而不是我在标记中指定它的方式?是因为它{rank=same; q4 q3}具有比定位节点更多的语义含义吗?如果是这种情况,我如何定位节点,以便输出不像输出没有使用那样可怕{rank=same; ...}?
没有隐藏的语义含义rank=same,这只是一个错误.
例如,省略边缘标签或边缘时,边缘被正确绘制rankdir=LR.
您可以通过将dir属性添加到错误绘制的边缘来更正此特定图形:
q3->q4[label="?", dir=back]
Run Code Online (Sandbox Code Playgroud)
在动态创建图形时,这当然没有帮助.
此错误可能与http://www.graphviz.org:8080/bugs/openbugs.html上rankdir=LR报告的其他已知错误有关.