【发布时间】:2019-07-16 14:11:29
【问题描述】:
我有一个有向图,已设置为“rankdir=LR;”这样“rank=same”就会从上到下。
我决定在这个图表中添加一些集群,但结果“rank=same”现在变成了自下而上。
一个最小的例子说明了这个问题:
digraph graph {
graph [
rankdir=LR;
nodesep = "0.5 equally",
newrank = true;
];
/* Guide Nodes */
rank1 [style=dotted];
rank2 [style=dotted];
rank1 -> rank2 [style=dotted];
/* Node Clusters */
subgraph cluster1 {
A;
B;
C;
}
/* Node Hierarchy */
A -> Z;
B -> Z;
C -> Z;
/* Node Rank */
{ rank=same;
rank1 -> A -> B -> C [style=dotted];
}
} /* Closes the digraph */
我想要的结果是从上到下:rank1,A,B,C。
我得到的结果是从上到下:C、B、A、rank1——如下图所示。
我怎样才能找回正确的订单?
- 选项 1:不要使用集群。
- 选项 2:重写“rank=same”行以适应从下到上的方向。
鉴于我的图表的大小,选项 2 工作量太大而收获太少。还有其他选择吗?
编辑:marapet 给出的答案是我想要的。但是,该解决方案不适用于以下最小问题:
digraph g {
graph [
rankdir=LR;
nodesep = "0.5 equally",
newrank = true;
];
/* Node Clusters */
subgraph cluster1 {
subgraph cluster2 {
A;
B;
C;
}
P;
subgraph cluster4 {
D;
E;
F;
}
Z;
}
/* Guide Nodes */
rank1 [style=dotted];
rank2 [style=dotted];
/* Guide Nodes Hierarchy */
rank1 -> rank2 [style=dotted];
/* Node Hierarchy */
A -> Z;
B -> Z;
C -> Z;
P -> Z;
D -> Z;
E -> Z;
F -> Z;
/* Rank Constraints */
rank1 -> A -> B -> C -> P -> D -> E -> F [style=dotted, constraint=false];
} /* Closes the digraph */
结果如下图:
我只能得出结论,我遇到的问题是在同一等级边缘中混合集群和非集群的结果。
【问题讨论】: