0

In the following example, the nodes in the subgraphs are ordered from the bottom to the top instead of from top to bottom. How can that be reversed, so that the start is top-left and the nodes in the subgraphs are ordered from top to bottom (A1-A4 and B1-B4)?

digraph ab
{
  rankdir=LR
  splines=ortho
  ranksep=1
  node[shape = record]

  subgraph cluster_0 
  {
    label="A"
    { 
      rank = "same"
      state0_anchor [label="", style=invis, width=0]
      state0_step0 [label="A1"]
      state0_step1 [label="A2"]
      state0_step2 [label="A3"]
      state0_step3 [label="A4"]
    }
    state0_anchor->state0_step0[style = invis]
    state0_step0 -> state0_step1 -> state0_step2 -> state0_step3
  }

  state0_step3 -> state0_step0 [constraint=false]
  state0_step3 -> state1_step0 [constraint=false]

  subgraph cluster_state1 
  {
    label="B"
    { 
      rank = "same"
      state1_anchor [label="", style=invis,  width=0, height=0]
      state1_step0 [label="B1"]
      state1_step1 [label="B2"]
      state1_step2 [label="B3"]
      state1_step3 [label="B4"]
    }
    state1_anchor->state1_step0[style = invis]
    state1_step0 -> state1_step1 -> state1_step2 -> state1_step3
  }
  state1_step3 -> state0_step0 [constraint=false]

  state0_anchor -> state1_anchor[style = invis]
  start -> state0_step0
}

enter image description here

Michael Gehling
  • 569
  • 5
  • 12
  • You may find some related information in [this answer](https://stackoverflow.com/a/9592856/63733) – marapet Oct 09 '19 at 14:49

1 Answers1

1

In your example, when direction of the edges within the subgraphs are reversed, the nodes will be ordered the way you'd like. Something like this:

state0_step3 -> state0_step2 [dir=rev]
state0_step2 -> state0_step1 [dir=rev]
state0_step1 -> state0_step0 [dir=rev]
state0_step0 -> state0_anchor [style = invis]

The same for state1-nodes.

Details about transformations when going LR can be found in https://stackoverflow.com/a/9592856/63733

marapet
  • 54,856
  • 12
  • 170
  • 184