Frage

Ich habe eine Reihe von relativ einfachen (automatisch generierte) Graphen in graphviz Punktformat. Diese zeigen den Weg durch eine Zustandsmaschine, aber Punkt hat eine etwas verwirrende Gewohnheit, zu entscheiden, dass zwei Knoten auf dem gleichen Rang sein muss, wenn ich die Grafik möchte in staatlicher Ordnung zu sein. Ich habe eine Menge von Einstellungen ausprobiert (einschließlich der :n und :s und den weight unten aufgeführt), aber ich kann Punkt nicht überzeugen, den dritten Zustand zu platzieren oben der vierte Zustand.

Ich habe dieses Problem mit einer Menge von Graphen: es scheint etwas intern zu Punkt zu sein, dass es besser wäre, entscheidet, ob zwei Knoten auf dem gleichen Rang waren und es gibt nichts, was getan werden kann, um es zu überschreiben. Ich habe auch Code, der angibt, dass ein Knoten ein rank=sink sein sollte, aber Punkt hat sich entschieden, trotzdem darunter einen weiteren Knoten zu setzen.

Gibt es eine Möglichkeit Punkt zu legen nahe, dass es wichtiger ist, dass die Knoten, um als jede andere Einschränkung sind?

Der Code, der verwendet wurde, um die Grafik zu erzeugen sieht wie folgt aus:

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"];
}

Die Grafik sieht derzeit wie folgt aus: Dot Graph

War es hilfreich?

Lösung

Mit "Constraint = false".

http://www.graphviz.org/doc/info/ attrs.html # d: Einschränkung

In Ihrem Diagramm:

FourthSTATE -> ThirdSTATE [label="No" constraint=false] ;

Sie erhalten:

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"];
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top