skompilować następujące wykres z: dot graph.dot -Tpdf -ograph.pdf
i produkującydokręcić dot wykres czyniąc ją bardziej symetryczny
Wynik jest w porządku, ale przejściowy stan wyglądać dużo jak spagetthi potwora i mam nie mam pojęcia, co mogę zrobić, aby podejść do tego problemu. Próbowałem innych układów: twopi, neato, etc.
Czy są parametry, które pozwalają wymusić na wykresie wygląd nieco bardziej symetryczny? Ponieważ ogólny obraz jest w porządku.
Dla mnie wygląda na to, że krawędzie używają minimalnej dostępnej przestrzeni do oprawienia opisów krawędzi, może to jest problem?
Czy mój projekt wykresu jest wadliwy? Czy powinienem zapisać różne przejścia stanu na jednej krawędzi, używając \ n, aby rozdzielić różne przejścia?
digraph finite_state_machine {
rankdir=LR;
edge [fontsize=26];
node [shape = doublecircle, width=2.0, fontsize=24, fixedsize=true,style=filled, colorscheme=spectral5]; New [fillcolor=3] Terminated [fillcolor=5];
node [shape = circle, width=2.0, fontsize=24, fixedsize=true, colorscheme=spectral5]; Runnable [fillcolor=4] Waiting [fillcolor=2] "Timed\nWaiting" [fillcolor=2] Blocked [fillcolor=1];
New -> Runnable [ label = "Thread.start" ];
Runnable -> Waiting [ label = "Object.wait" ];
Runnable -> Waiting [ label = "Thread.sleep" ];
Runnable -> Waiting [ label = "LockSupport.park" ];
Waiting -> Blocked [ label = "Reacquire monitor lock after\nleaving Object.wait" ]
Waiting -> Blocked [label = "Spurious wake-up"]
"Timed\nWaiting" -> Blocked [ label = "Reaquire monitor lock after\n leaving Object.wait" ]
"Timed\nWaiting" -> Terminated [ label = "Exception" ]
"Timed\nWaiting" -> Blocked [ label = "Spurious wake-up" ]
Runnable -> "Timed\nWaiting" [ label = "Object.wait" ];
Runnable -> Blocked [ label = "Contended Monitor\nEnter" ];
Blocked -> Runnable [ label = "Contended Monitor\nEntered" ];
Runnable -> Terminated [ label = "Thread finishes\nexecution" ]
Runnable -> Terminated [ label = "Exception" ]
Waiting -> Runnable [ label = "Object.notify\nObject.notifyAll" ]
Waiting -> Terminated [ label = "Exception" ]
"Timed\nWaiting" -> Runnable [ label = "Object.notify\nObject.notifyAll" ]
}
To było bardzo pomocne, dzięki. Myślę, że to najlepsze, co możesz dostać. Waga i grupa wydają się być prawdziwą okazją! –