Graphviz - 定义集群的顺序
Graphviz - define the order of the clusters
我正在 graphviz/dot 中生成集群节点。简化示例:
digraph G {
rankdir=LR
n2a->n3
n1->n2b
n2b->n2a
n2b->n3
n3->n1
subgraph cluster_1 { label="cluster_1" n1 }
subgraph cluster_2 { label="cluster_2" n2a n2b }
subgraph cluster_3 { label="cluster_3" n3 }
}
我想强制 dot 始终将集群从右到左按升序排列(左边是集群 1,接下来是集群 2 等),但要按照 dot 自动指示的方式排列每个集群内的节点。
我试着玩 clusterrank
、rank
、newrank
、constraint=false
,但没能成功。怎么做到的?
您可以通过添加边来“强制”发生这种情况,以建立每个集群中每个节点的等级。 cluster_1 中的每个节点的排名都低于 cluster_2 中的每个节点,等等。像这样:
digraph G {
rankdir=LR
n2a->n3
n1->n2b
n2b->n2a
n2b->n3
n3->n1
subgraph cluster_1 { label="cluster_1" n1 }
subgraph cluster_2 { label="cluster_2" n2a n2b }
subgraph cluster_3 { label="cluster_3" n3 }
// simple-minded solution - force clusters based on (added) rank
edge [style=invis]
{n1} -> {n2a n2b} -> {n3}
}
给予:
我正在 graphviz/dot 中生成集群节点。简化示例:
digraph G {
rankdir=LR
n2a->n3
n1->n2b
n2b->n2a
n2b->n3
n3->n1
subgraph cluster_1 { label="cluster_1" n1 }
subgraph cluster_2 { label="cluster_2" n2a n2b }
subgraph cluster_3 { label="cluster_3" n3 }
}
我想强制 dot 始终将集群从右到左按升序排列(左边是集群 1,接下来是集群 2 等),但要按照 dot 自动指示的方式排列每个集群内的节点。
我试着玩 clusterrank
、rank
、newrank
、constraint=false
,但没能成功。怎么做到的?
您可以通过添加边来“强制”发生这种情况,以建立每个集群中每个节点的等级。 cluster_1 中的每个节点的排名都低于 cluster_2 中的每个节点,等等。像这样:
digraph G {
rankdir=LR
n2a->n3
n1->n2b
n2b->n2a
n2b->n3
n3->n1
subgraph cluster_1 { label="cluster_1" n1 }
subgraph cluster_2 { label="cluster_2" n2a n2b }
subgraph cluster_3 { label="cluster_3" n3 }
// simple-minded solution - force clusters based on (added) rank
edge [style=invis]
{n1} -> {n2a n2b} -> {n3}
}
给予: