Когда rankdir равен LR, почему узлы в одном и том же ранге упорядочены снизу вверх, а не сверху вниз? - PullRequest
0 голосов
/ 09 октября 2019

В следующем примере узлы в подграфах упорядочены снизу вверх, а не сверху вниз. Как это можно повернуть вспять, чтобы начало было слева вверху, а узлы в подграфах упорядочены сверху вниз (A1-A4 и 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

1 Ответ

1 голос
/ 09 октября 2019

В вашем примере, когда направление ребер внутри подграфа меняется на противоположное, узлы будут упорядочены так, как вы хотите. Примерно так:

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

То же самое для узлов state1.

Подробную информацию о преобразованиях при переходе LR можно найти в https://stackoverflow.com/a/9592856/63733

...