Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graph 如何在点中的节点上强制排名?_Graph_Graphviz_Dot_State Machine_Graph Layout - Fatal编程技术网

Graph 如何在点中的节点上强制排名?

Graph 如何在点中的节点上强制排名?,graph,graphviz,dot,state-machine,graph-layout,Graph,Graphviz,Dot,State Machine,Graph Layout,我有一些相对简单(自动生成)的graphviz点格式的图。这些图显示了通过状态机的路径,但dot有一个稍微令人困惑的习惯,即当我希望图形处于状态顺序时,会决定两个节点必须在同一个列上。我尝试了很多设置(包括下面列出的:n和:s以及权重),但我无法说服dot将第三种状态置于第四种状态之上 我对很多图都有这个问题:dot内部似乎有某种东西决定了如果两个节点在同一个列上会更好,并且没有什么方法可以覆盖它。我甚至有代码指定一个节点应该是rank=sink,但dot还是决定在它下面放置另一个节点 是否有任

我有一些相对简单(自动生成)的graphviz点格式的图。这些图显示了通过状态机的路径,但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"];
}