graphviz 渲染的循环很乱

Loops rendered by graphviz are messy

我正在尝试生成一个具有单一状态和 4 个自边的自动机。基本点代码如下所示:

digraph G {
splines=true;
overlap=scalexy;
rankdir="BT";
T[label="0" shape=doublecircle]
T -> T [label="a:a"];
T -> T [label="b:b"]; 
T -> T [label="a:"];
T -> T [label="a:"];
}

输出非常混乱,尝试 minlen 之类的参数没有帮助(它似乎没有改变任何东西)。我还希望边缘显示在 top/in 垂直方向上,但 graphviz 将它们显示在一侧。我该如何解决?

当前输出:

我需要这样的东西:

感谢任何帮助!

通过使用 rankdir="RL" 并从东向西连接 (T:e -> T:w),您将非常接近您要查找的内容:

digraph G {
  splines=true;
  overlap=scalexy;
  rankdir="RL";
  T[label="0" shape=doublecircle]
  T:e -> T:w [label="a:a"];
  T:e -> T:w [label="b:b"]; 
  T:e -> T:w [label="a:ε"];
  T:e -> T:w [label="b:ε"];
}