newrank=true的graphviz,意外排序

newrank=true的graphviz,意外排序,graphviz,Graphviz,试图使用rank=same来控制graphviz中节点的顺序请参见,例如,我发现了这种异常行为。我想要的是按预期顺序获得节点a、b和c,即a、b、c: digraph foo{ newrank=true "o4"->"x3" "o4"->"x4" "o5"->"x3" "o5"->"x4" subgraph cluster_7 { "a"->"i" "b"->"i" "c"->"i" } {rank="same";"a"->"b";"b"-

试图使用rank=same来控制graphviz中节点的顺序请参见,例如,我发现了这种异常行为。我想要的是按预期顺序获得节点a、b和c,即a、b、c:

digraph foo{
newrank=true
"o4"->"x3"
"o4"->"x4"
"o5"->"x3"
"o5"->"x4"

subgraph cluster_7 {

"a"->"i"
"b"->"i"
"c"->"i"

} 
{rank="same";"a"->"b";"b"->"c"}

}


我看不出graphviz有什么理由不遗余力地扰乱a、b和c的顺序。如果我更改代码的任何方面,例如删除o节点和x节点之间的一条边,问题就会消失。如果我删除
newrank=true
,它也会消失,但我需要它,因为否则
rank=same
规范会将节点移出子图。如果我将子图变成一个普通的簇,它就会消失,也就是说,不要以
cluster\uu
作为名称的开头,但我也需要这个。如果我删除
rank=same
行,它就会消失,但我也需要它。有什么想法吗?

我可以通过关闭两条边上的约束来获得更好的结果:

digraph foo{
newrank=true
"o4"->"x3"
"o4"->"x4"
"o5"->"x3"
"o5"->"x4"

subgraph cluster_7 {

"a"->"i" [constraint=false]
"b"->"i"
"c"->"i" [constraint=false]

} 
{rank="same";"a"->"b";"b"->"c"}

}

然而,我无法解释为什么这会有帮助