#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 работает только для всего графика, он не будет работать для подграфов отдельно. Но вы можете контролировать положение узлов с помощью:
- атрибут ранга
=same
подграфа
который заставляет все узлы, упомянутые в подграфе, находиться на одном уровне.
- ограничивающий
=false
атрибут ребра
который позволяет вам соединять два узла, но не влияет на их положение этим соединением.