有没有做logo的网站,会计培训机构排名,提升网站流量的方法,wordpress说明文档使用Python中的matplotlib和networkx库来绘制一个有向图#xff0c;并显示边的权重标签。
1. 定义了节点和边#xff1a;节点是一个包含5个节点的列表#xff0c;边是一个包含各个边以及它们的权重的列表。 2. 创建了一个有向图对象 G。 3. 向图中添加节点和边。 4. 设置了…使用Python中的matplotlib和networkx库来绘制一个有向图并显示边的权重标签。
1. 定义了节点和边节点是一个包含5个节点的列表边是一个包含各个边以及它们的权重的列表。 2. 创建了一个有向图对象 G。 3. 向图中添加节点和边。 4. 设置了节点的布局这里使用了Spring布局它会尽可能地使得节点间的边长相等并保持节点间的相对位置k参数是一个布局调整参数。5. 使用 nx.draw() 函数绘制了有向图其中 pos 是节点的位置with_labelsTrue 表示显示节点标签node_size 控制节点的大小node_color 是节点的颜色font_size 是标签的字体大小arrowsTrue 表示显示边的方向。 6. 添加了边的权重标签用以显示每条边的权重。利用 nx.draw_networkx_edge_labels() 函数将权重标签添加到相应的边上并设置了标签的颜色和位置。 7. 最后使用 plt.show() 函数显示绘制好的有向图。 这段代码的核心是使用了 networkx 库来创建和操作图形数据结构并使用 matplotlib 库来进行图形绘制。
import matplotlib.pyplot as plt
import networkx as nx# 节点和边
nodes [0, 1, 2, 3, 4]
edges [(0, 1, {weight: 10}), (0, 3, {weight: 5}), (1, 2, {weight: 1}), (1, 3, {weight: 2}),(2, 4, {weight: 4}), (3, 1, {weight: 3}), (3, 2, {weight: 9}), (3, 4, {weight: 2}),(4, 0, {weight: 7}), (4, 2, {weight: 6})
]# 创建有向图
G nx.DiGraph()# 添加节点和边
G.add_nodes_from(nodes)
G.add_edges_from(edges)# 设置布局
pos nx.spring_layout(G, k0.5)# 绘制有向图确保显示边的方向
nx.draw(G, pos, with_labelsTrue, node_size700, node_colorlightblue, font_size12, arrowsTrue)# 添加权重标签
edge_labels {}
for u, v, data in G.edges(dataTrue):weight data[weight]edge_labels[(u, v)] f{u}-{v}:{weight} # 将节点和权重标签放在一起显示nx.draw_networkx_edge_labels(G, pos, edge_labelsedge_labels, font_colorblack, label_pos0.3)plt.show()