📜  networkx 用权重绘制图形 - Python (1)

📅  最后修改于: 2023-12-03 15:17:51.556000             🧑  作者: Mango

Networkx 用权重绘制图形

介绍

Networkx 是一个用于创建、操作和研究复杂网络的 Python 库。它支持多种类型的图形,包括无向图、有向图和多重图,并提供了许多算法用于分析网络结构。本文将介绍如何使用 Networkx 通过权重绘制图形。

准备工作

首先需要安装 Networkx,可以使用以下命令:

pip install networkx

安装完成后,在 Python 文件中导入库:

import networkx as nx
创建带权图

首先,我们需要创建一个带权图。可以使用 Graph()DiGraph() 函数创建无向图或有向图。然后使用 add_edge() 方法向图中添加边,并使用 weight 参数设置边的权重。

G = nx.Graph()   # 创建无向图
G.add_edge(1, 2, weight=0.5)
G.add_edge(1, 3, weight=1.0)
G.add_edge(2, 3, weight=0.3)
绘制图形

接下来,使用 draw() 函数绘制图形。这里有许多不同的布局可供选择,每个布局都会将节点放置在不同的位置。在本文中,我们将使用 spring_layout() 布局。该布局模拟弹簧系统,并尝试将相连的节点靠近彼此。

pos = nx.spring_layout(G)
nx.draw(G, pos)
添加权重标签

默认情况下,节点和边没有权重标签。可以使用 draw_networkx_edge_labels() 方法在图形上添加权重标签。

labels = nx.get_edge_attributes(G, 'weight')
nx.draw_networkx_edge_labels(G, pos, edge_labels=labels)
整个程序

整个程序如下:

import networkx as nx

# 创建带权图
G = nx.Graph()
G.add_edge(1, 2, weight=0.5)
G.add_edge(1, 3, weight=1.0)
G.add_edge(2, 3, weight=0.3)

# 绘制图形
pos = nx.spring_layout(G)
nx.draw(G, pos)

# 添加权重标签
labels = nx.get_edge_attributes(G, 'weight')
nx.draw_networkx_edge_labels(G, pos, edge_labels=labels)

# 显示图形
import matplotlib.pyplot as plt
plt.show()
结论

在本文中,我们介绍了如何使用 Networkx 创建带权图,并使用 spring_layout() 布局和 draw_networkx_edge_labels() 方法绘制图形和添加权重标签。使用这些技巧可以更好地理解和分析复杂网络的结构。