【问题标题】:graphviz with newrank=true, unexpected ordering带有 newrank=true 的 graphviz,意外排序
【发布时间】:2016-11-12 13:44:39
【问题描述】:

尝试使用 rank=same 来控制 graphviz 中节点的顺序,请参见例如e.g. 我发现了这种非同寻常的行为。我想要的是按预期顺序获取节点 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_ 开头的名称,但我也需要这个。如果我删除 rank=same 行,它就会消失,但我也需要这个。有什么想法吗?

【问题讨论】:

    标签: graphviz


    【解决方案1】:

    我可以通过关闭几个边缘的约束来获得更好的结果:

    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"}
    
    }
    

    但是,我无法解释为什么这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      • 2019-02-17
      • 2014-10-09
      • 2021-11-22
      • 2011-11-29
      • 2013-04-05
      • 1970-01-01
      相关资源
      最近更新 更多