在数据科学、社交网络分析、交通系统建模等领域,图论是一种强大的数学工具。而 networkx 是 Python 中最流行的图论库之一,它可以帮助我们轻松创建、操作和研究复杂网络的结构与动态。无论你是编程新手还是有一定经验的数据分析师,这篇 networkx教程 都将带你从零开始掌握图的基本操作。

在图论中,“图”由节点(也叫顶点,Vertex)和边(Edge)组成。节点代表实体(如人、城市、网页),边代表它们之间的关系(如朋友关系、道路连接、超链接)。
例如:社交网络中,每个人是一个节点,好友关系是一条边。
首先,你需要安装 networkx 和用于可视化的 matplotlib:
pip install networkx matplotlib下面是一个简单的例子:创建一个无向图,并添加节点和边。
import networkx as nximport matplotlib.pyplot as plt# 创建一个空的无向图G = nx.Graph()# 添加节点G.add_node("A")G.add_node("B")G.add_node("C")# 或者一次性添加多个节点# G.add_nodes_from(["A", "B", "C"])# 添加边G.add_edge("A", "B")G.add_edge("B", "C")# 绘制图形plt.figure(figsize=(6, 4))nx.draw(G, with_labels=True, node_color='lightblue', node_size=2000, font_size=16, font_weight='bold')plt.show()运行上述代码后,你会看到一个包含三个节点 A、B、C 的简单图,其中 A 连接 B,B 连接 C。
networkx 支持多种图类型:
n x.Graph():无向图(默认)n x.DiGraph():有向图(边有方向)n x.MultiGraph():允许多重边的无向图n x.MultiDiGraph():允许多重边的有向图networkx 提供了丰富的图分析功能。例如:
# 获取节点数和边数print("节点数量:", G.number_of_nodes())print("边数量:", G.number_of_edges())# 查看所有邻居节点print("B 的邻居:", list(G.neighbors("B")))# 计算最短路径shortest_path = nx.shortest_path(G, source="A", target="C")print("A 到 C 的最短路径:", shortest_path)# 计算每个节点的度(连接数)degrees = dict(G.degree())print("各节点的度:", degrees)除了基础绘图,你还可以自定义颜色、布局、标签等。例如使用 spring_layout 自动排布节点:
pos = nx.spring_layout(G) # 自动计算节点位置nx.draw(G, pos, with_labels=True, node_color='orange', edge_color='gray', node_size=1500, font_size=14)plt.title("NetworkX 图可视化示例", fontsize=16)plt.show()通过本篇 networkx入门 教程,你应该已经掌握了如何用 Python 的 networkx图论库 创建、操作和可视化图结构。无论是做学术研究、工程开发还是数据分析,图可视化 和网络分析都是极其有用的技能。
下一步,你可以尝试加载真实数据集(如社交网络、交通网络),或探索 networkx 的高级功能,如社区检测、中心性分析等。
记住:图不仅是数学对象,更是理解复杂系统的一把钥匙。
本文由主机测评网于2025-12-11发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025126002.html