在Graphviz中对齐等级

3
这是一个关于 如何实现Graphviz Dot的严格逆排名 的后续问题,但更为简单。这个图表是人为构造的,但展示了问题:
digraph nfa {
    A -> B
    B -> C
    C -> D
    D -> E
    A -> F
    F -> E
}

节点B和F的排名相同,但它们的显示排名不同。如何实现这一点?

enter image description here

2个回答

2

我使用了带有 rank = same 的子图,并手动计算了排名并将它们分组到这些子图中。

digraph {
    { rank = same; A }
    { rank = same; B; F }
    { rank = same; C }
    { rank = same; D }
    { rank = same; E }
    A -> B
    B -> C
    C -> D
    D -> E
    A -> F
    F -> E
}

1
一种“更简单”的解决方案是使用新的TBbalance属性(http://www.graphviz.org/docs/attrs/TBbalance/)。TBbalance可以完全满足您的需求。
digraph nfa {
  TBbalance=min
    A -> B
    B -> C
    C -> D
    D -> E
    A -> F
    F -> E
}

给予:
enter image description here

不错的解决方案,你写道“使用新的TBbalance属性”,你知道从哪个版本开始可用吗? - albert
1
我不确定。我相信它大约在4年前首次推出,但存在缺陷。改进版本是在大约1年前推出的。 - sroush

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接