jason
jason

Reputation: 4449

pygraphviz: find the lowest ranking node in the subgraph / graph

I'm trying to find the lowest ranking node because I want to always put something at the very bottom of the graph. Is there a way to do something like G.lowest_rank() and it would return the string of the node?

If not, how do I achieve this?

Upvotes: 2

Views: 129

Answers (1)

Dany
Dany

Reputation: 4730

Actually, there are special values for subraph rank attribute called max and sink which allow you to put a node in the lowest rank.

  • If you use rank=max then the node will appear on the already existing lowest rank.
  • If you use rank=sink then the node have its own rank which is below the lowest rank of the graph, example:
digraph {
    a -> b -> c
    {
        rank=max
        bottom1 [label="rank=max"]
    }
}

max

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

sink

I am not too familiar with PyGraphviz, but to achieve the same result there you can do something like this:

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')

Upvotes: 2

Related Questions