最近与几个少年在用C++学习数据结构与算法,讲到图时,总觉得要展示出直观内容才比较好,找到python就可以方便地展示图。(前一阵子还可以找到C++用字符展示树的代码,图要用字符展示,我想还是算了吧)。
不过大部分的代码展示的还是不带权重的图,这个还不够方便,百度多找一会,找到展示权重的方式。
import networkx as nx
import matplotlib.pyplot as plt
# 创建图
G = nx.Graph()
# 增加节点
G.add_nodes_from([1, 2, 3, 4, 5, 6])
# 增加权重,数据格式(节点1,节点2,权重)
e=[(1,2,6), (2,3,2), (1,3,1), (3,4,7), (4,5,9), (5,6,3), (4,6,3)]
for k in e:
G.add_edge(k[0], k[1], weight=k[2])
# 普通的画图方式
#nx.draw(G, with_labels=True)
# 生成节点位置序列
pos = nx.spring_layout(G)
# 重新获取权重序列
weights = nx.get_edge_attributes(G, "weight")
# 画节点图
nx.draw_networkx(G, pos, with_labels=True)
# 画权重图
nx.draw_networkx_edge_labels(G, pos, edge_labels=weights)
# 展示
plt.show()
画出来的图: