Graph 如何在点中的节点上强制排名?
我有一些相对简单(自动生成)的graphviz点格式的图。这些图显示了通过状态机的路径,但dot有一个稍微令人困惑的习惯,即当我希望图形处于状态顺序时,会决定两个节点必须在同一个列上。我尝试了很多设置(包括下面列出的Graph 如何在点中的节点上强制排名?,graph,graphviz,dot,state-machine,graph-layout,Graph,Graphviz,Dot,State Machine,Graph Layout,我有一些相对简单(自动生成)的graphviz点格式的图。这些图显示了通过状态机的路径,但dot有一个稍微令人困惑的习惯,即当我希望图形处于状态顺序时,会决定两个节点必须在同一个列上。我尝试了很多设置(包括下面列出的:n和:s以及权重),但我无法说服dot将第三种状态置于第四种状态之上 我对很多图都有这个问题:dot内部似乎有某种东西决定了如果两个节点在同一个列上会更好,并且没有什么方法可以覆盖它。我甚至有代码指定一个节点应该是rank=sink,但dot还是决定在它下面放置另一个节点 是否有任
:n
和:s
以及权重),但我无法说服dot将第三种状态置于第四种状态之上
我对很多图都有这个问题:dot内部似乎有某种东西决定了如果两个节点在同一个列上会更好,并且没有什么方法可以覆盖它。我甚至有代码指定一个节点应该是rank=sink
,但dot还是决定在它下面放置另一个节点
是否有任何方法可以向dot建议,节点的有序性比任何其他约束更重要
用于生成图形的代码如下所示:
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"];
}
当前的图形如下所示:
使用“constraint=false”
在图形中:
FourthSTATE -> ThirdSTATE [label="No" constraint=false] ;
您将获得:
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 -> FourthSTATE;
FourthSTATE -> FifthSTATE [label="Yes" ];
FourthSTATE -> ThirdSTATE [label="No" constraint=false] ;
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"];
}