私はgraphvizドット形式の比較的単純な(自動生成された)グラフをいくつか持っています。これらはステートマシンを通るパスを示していますが、グラフをステートオーダーにしたい場合、ドットには2つのノードが同じランクにある必要があると判断するという少し紛らわしい習慣があります。私は多くの設定(:n
および:s
とweight
以下にリストされているものを含む)を試しましたが、ドットを説得して第3の状態を第4の状態の上に配置することはできません。
多くのグラフでこの問題が発生します。2つのノードが同じランクにあり、それをオーバーライドするためにできることは何もない場合に、ドットの内部に何かがあるようです。1つのノードをに指定するコードもありますがrank=sink
、ドットはとにかくその下に別のノードを配置することにしました。
他のどの制約よりもノードが整然としていることが重要であることをドットで示す方法はありますか?
グラフの生成に使用されたコードは次のようになります。
digraph {
ERROR [label="Error"];
FirstSTATE [label="Initial State" URL="\ref FirstSTATE"];
FirstSTATE -> SecondSTATE;
SecondSTATE [label="Second State" URL="\ref SecondSTATE"];
SecondSTATE -> ThirdSTATE;
ThirdSTATE [label="Third State" URL="\ref ThirdSTATE"];
FourthSTATE [label="Fouth State?" shape="diamond"];
ThirdSTATE:s -> FourthSTATE:n [weight=50];
FourthSTATE -> FifthSTATE [label="Yes" ];
FourthSTATE -> ThirdSTATE [label="No"];
FifthSTATE [label="Fifth State" URL="\ref FifthSTATE"];
SixthSTATE [label="Sixth State?" shape="diamond"];
SixthSTATE -> ERROR [label="Yes" ];
SixthSTATE -> SeventhSTATE [label="No"];
FifthSTATE -> SixthSTATE;
SeventhSTATE [label="Seventh State" URL="\ref SeventhSTATE"];
SeventhSTATE -> EighthSTATE;
EighthSTATE [label="Eighth State" URL="\ref EighthSTATE"];
NinthSTATE [label="Ninth State?" shape="diamond"];
NinthSTATE -> TenthSTATE [label="Yes" ];
NinthSTATE -> EighthSTATE [label="No"];
EighthSTATE -> NinthSTATE;
TenthSTATE [label="Tenth State" URL="\ref TenthSTATE"];
EleventhSTATE [label="Eleventh State?" shape="diamond"];
EleventhSTATE -> ERROR [label="Yes" ];
EleventhSTATE -> TwelfthSTATE [label="No" ];
TenthSTATE -> EleventhSTATE;
TwelfthSTATE [label="Twelfth State" URL="\ref TwelfthSTATE"];
}
グラフは現在次のようになっています。