我有一个如此定义的图表:
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; ...}
?
答案 0 :(得分:5)
rank=same
中没有隐藏的语义含义,这只是一个错误。
例如,省略边缘标签或rankdir=LR
时,正确绘制边缘。
您可以通过将dir
属性添加到错误绘制的边缘来更正此特定图表:
q3->q4[label="λ", dir=back]
在动态创建图表时,这当然无济于事。
此错误可能与rankdir=LR
引起的{{1}}引起的其他已知错误之一相关,<{3}}
答案 1 :(得分:0)
改变{rank = same; q4 q3}到{rank = same; q3 q4}也可以工作(未经测试)。从上到下,从左到右阅读,这些节点(q3和q4)的最新布局指令改变了前一行的排序并覆盖了之前的箭头:
{秩=相同; q4 q3}
也许这不是一个错误。