digraph { graph [nodesep=1, ranksep=1]; {rank = same; unknown; "running"; "dead";} //{rank = same; cooling; paused; warming;} unknown -> "running" [label="eXecute *"]; "running" -> "cooling" [label="Cool"]; "cooling" -> "paused" [label="* Pause"]; "running" -> "paused" [label="* Pause"]; "paused" -> "running" [label="Resume *"]; "paused" -> "warming" [label="Warm *"]; "warming" -> "running" [label="Resume"]; "running" -> "dead" [label="* End"]; }