Michael Gehling
Michael Gehling

Reputation: 647

When rankdir is LR, why are the nodes in the same rank ordered bottom to top instead of top to bottom?

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

Upvotes: 1

Views: 273

Answers (1)

marapet
marapet

Reputation: 56476

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

Upvotes: 1

Related Questions