垂直和水平 headers 与 Graphviz
Vertical and horizontal headers with Graphviz
我需要用 Graphviz 创建一个垂直和水平的 header,但我不知道如何使两个子图具有不同的方向。我试过 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}
}
}
Something like this
你几乎做对了所有事情。只需删除 {rank=same M N O P Q R}
行。
你是对的,rankdir只适用于整个图,它不适用于单独的子图。但是您可以使用以下方法控制节点的位置:
- rank
=same
子图的属性
强制子图中提到的所有节点处于同一级别。
- constraint
=false
边的属性
允许您连接两个节点但不会影响它们的位置。
我需要用 Graphviz 创建一个垂直和水平的 header,但我不知道如何使两个子图具有不同的方向。我试过 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}
}
}
Something like this
你几乎做对了所有事情。只需删除 {rank=same M N O P Q R}
行。
你是对的,rankdir只适用于整个图,它不适用于单独的子图。但是您可以使用以下方法控制节点的位置:
- rank
=same
子图的属性
强制子图中提到的所有节点处于同一级别。
- constraint
=false
边的属性
允许您连接两个节点但不会影响它们的位置。