我有点以下图表的源代码:
digraph name {
rankdir="LR";
node [shape="record"];
1 [label="OUTPUT"];
A [label="FWD|<i>i|<r_in>r_in|<r_out>r_out|<o>o"];
B [label="FIFO|<r_in>r_in|<o>o"];
C [label="Cons|<i>i|<r_out>r_out|<o>o"];
A:o:e -> C:i:w;
C:r_out:w -> A:r_in:e;
B:o:e -> A:i:w;
C:o:e -> 1:w;
A:r_out:w -> B:r_in:e;
}
它由4个节点组成,这些节点基本上可以按照B - >的顺序一个接一个地放置。 A - &gt; C - &gt;输出。如果dot将按此顺序放置节点,则只有少数边缘将在两个节点之间交叉。
然而,像这样调用点:
dot mygraph.dot -Tpng -o mygraph.png
造成以下混乱:
编辑:看起来,源中节点的顺序很重要。但是,由于源是从程序生成的,输出其内部信号流结构,我不能依赖它来按正确的顺序放置节点。我想,dot和它的图形布局引擎可以自己弄清楚,哪些节点是第一个,这样导线就不会交叉。