如何使用PyGraphviz在无向图的边上添加和显示权重?

2 投票
1 回答
10739 浏览
提问于 2025-04-17 19:22
import pygraphviz as pgv
A = pgv.AGraph()
A.add_node('Alice')
A.add_node('Emma')
A.add_node('John')
A.add_edge('Alice', 'Emma')
A.add_edge('Alice', 'John')
A.add_edge('Emma', 'John')
print A.string()
print "Wrote simple.dot"
A.write('simple.dot')  # write to simple.dot
B = pgv.AGraph('simple.dot')  # create a new graph from file
B.layout()  # layout with default (neato)
B.draw('simple.png')  # draw png
print 'Wrote simple.png'

我想给图中的边加上权重,这样在图上也能显示出来。

1 个回答

9

你在创建边的时候,可以给它们添加一些属性:

A.add_edge('Alice', 'Emma', weight=5)

或者你也可以在之后再设置这些属性:

edge = A.get_edge('Alice', 'Emma')
edge.attr['weight'] = 5

如果想给边添加一些文字信息,可以给它们一个 label 属性:

edge = A.get_edge('Alice', 'Emma')
edge.attr['label'] = '5'

所有的属性内部都是以字符串的形式存储的,但GraphViz会把这些字符串解释成特定的类型;具体可以查看 属性文档

撰写回答