我有以下点文件:
digraph finite_state_machine {
{
rank=same;
node [shape = doublecircle]; q_5;
node [shape = circle];
q_1 -> q_2 [ label = "." ];
q_1 -> q_2 [ label = "\epsilon" ];
q_2 -> q_1 [ label = "\epsilon" ];
q_2 -> q_3 [ label = "a" ];
q_3 -> q_4 [ label = "^\wedge a" ];
q_3 -> q_4 [ label = "\epsilon" ];
q_4 -> q_3 [ label = "\epsilon" ];
q_4 -> q_5 [ label = "b" ];
}
}
Run Code Online (Sandbox Code Playgroud)
我的印象是节点会按照提到的顺序出现.但顺序对我来说似乎是随机的.我希望订单从左到右依次为订阅.此外,边缘穿过标签,我该如何避免?
这是当前图片:

Graphviz确实根据彼此之间的边缘布置节点,而不是按照外观的顺序.如果您希望边缘不影响任何节点的位置,可以通过添加来完成此操作constraint=false.
因此,这个图:
digraph finite_state_machine {
pad=0.2;
{
rank=same;
node [shape = doublecircle]; q_5;
node [shape = circle];
q_1 -> q_2 [ label = "." ];
q_1 -> q_2 [ label = "\epsilon", constraint=false ];
q_2 -> q_1 [ label = "\epsilon", constraint=false ];
q_2 -> q_3 [ label = "a" ];
q_3 -> q_4 [ label = "^\wedge a" ];
q_3 -> q_4 [ label = "\epsilon", constraint=false ];
q_4 -> q_3 [ label = "\epsilon", constraint=false ];
q_4 -> q_5 [ label = "b" ];
}
}
Run Code Online (Sandbox Code Playgroud)
会得到你:

我必须添加pad,以便没有切断一些标签.