pygraphviz:在子图/图中找到最低排名的节点

问题描述 投票:1回答:1

我试图找到排名最低的节点,因为我总是希望在图表的最底部放置一些内容。有没有办法做类似G.lowest_rank()的操作,它将返回节点的字符串?

如果没有,我该如何实现?

graphviz pygraphviz
1个回答
0
投票

实际上,subraph rank属性有特殊的值,称为maxsink,可让您将节点置于最低等级。

  • 如果使用rank=max,则该节点将出现在已经存在的最低等级上。
  • 如果使用rank=sink,则节点具有自己的等级,该等级低于图形的最低等级,例如:
digraph {
    a -> b -> c
    {
        rank=max
        bottom1 [label="rank=max"]
    }
}

max

digraph {
    a -> b -> c
    {
        rank=sink
        bottom1 [label="rank=max"]
    }
}

sink

我对PyGraphviz不太熟悉,但是要获得相同的结果,您可以执行以下操作:

G = pgv.AGraph(directed=True)
G.add_node('a')
G.add_node('b')
G.add_node('c')
G.add_node('bottom1', label="rank=sink")
G.add_edge('a','b')
G.add_edge('b','c')
G.add_subgraph(['bottom1'], name='s1', rank='sink')
© www.soinside.com 2019 - 2024. All rights reserved.