Вертикальные и горизонтальные заголовки с Graphviz

#graph #orientation #graphviz

#График #ориентация #graphviz

Вопрос:

Мне нужно создать вертикальный и горизонтальный заголовок с Graphviz, но я не знаю, как сделать так, чтобы два подграфа имели разную ориентацию. Я пробовал использовать rankdir, но, по-видимому, это не работает с подграфами. Я понятия не имею, как поступить. Я ценю любую помощь.

 digraph Table{
    node[shape=box style=filled fillcolor=olivedrab2]
    //rankdir=TB
    subgraph Rows{
     rankdir=TB
     A[label="A"]
     B[label="B"]
     C[label="C"]
     D[label="D"]
     E[label="E"]
     F[label="F"]       
     A->B
     B->A
     B->C
     C->B
     C->D
     D->C
     D->E
     E->D
     E->F
     F->E
     {rank=same A B C D E F}
 }
subgraph Column{
    rankdir=LR
    M[label="M"]
    N[label="N"]
    O[label="O"]
    P[label="P"]
    Q[label="Q"]
    R[label="R"]        
    M->N
    //N->M
    N->O
    //O->N
    O->P
    //P->O
    P->Q
    //Q->P
    Q->R
    //R->Q
    {rank=same M N O P Q R}
  }
 }
  

Что-то вроде этого

Ответ №1:

Вы почти все сделали правильно. Просто удалите {rank=same M N O P Q R} строку.

Вы правы, rankdir работает только для всего графика, он не будет работать для подграфов отдельно. Но вы можете контролировать положение узлов с помощью:

который заставляет все узлы, упомянутые в подграфе, находиться на одном уровне.

который позволяет вам соединять два узла, но не влияет на их положение этим соединением.