pygraphviz: найти узел с самым низким рейтингом в подграфе / графике - PullRequest
2 голосов
/ 17 октября 2019

Я пытаюсь найти узел с самым низким рейтингом, потому что я хочу всегда размещать что-то в самом низу графика. Есть ли способ сделать что-то вроде G.lowest_rank() и он вернул бы строку узла?

Если нет, как мне этого добиться?

1 Ответ

2 голосов
/ 24 октября 2019

На самом деле, существуют специальные значения для подграфа rank атрибута, называемые max и sink, которые позволяют вам поместить узел в самый низкий ранг.

  • Если выиспользуйте rank=max, тогда узел появится в уже существующем низшем ранге.
  • Если вы используете rank=sink, тогда у узла будет свой собственный ранг, который находится ниже самого низкого ранга графа, например:
digraph {
    a -> b -> c
    {
        rank=max
        bottom1 [label="rank=max"]
    }
}

max

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

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