用途:NetworkX 用于分析社交、生物、基础设施等复杂网络,计算路径指标(最短路径、直径、流量)、节点重要性(中心性、PageRank)、社区与聚类、随机图模型、连通分量与团,以及路由或依赖树优化。
主要能力:支持 Graph(无向)、DiGraph(有向)、MultiGraph、MultiDiGraph 四类图;节点可为任意可哈希 Python 对象,边可存 weight、capacity、label 等属性。内置算法涵盖 Dijkstra 最短路径、最大流/最小割、度中心性、介数中心性、PageRank、特征向量中心性、聚类系数、Girvan-Newman 与 Louvain 社区发现、连通分量、团检测等。支持 GEXF、GraphML、边列表读写,并可与 Pandas、NumPy、SciPy 稀疏矩阵互转。
使用方式:安装命令为 pip install networkx matplotlib scipy;常用导入为 import networkx as nx。基本流程是创建图、用 add_edge 或 add_edges_from 添加边(节点自动创建)、调用算法分析、用 nx.draw 绘图。属性通过 G.nodes[n]['attr'] 或 G.edges[u, v]['attr'] 存取。
适用场景:蛋白质相互作用网络分析、交通路由约束、层级结构可视化等。
限制:nx.draw 仅适合小规模调试绘图,大规模可视化应使用 Gephi 或 Cytoscape;运行假设单一分量的算法前应先用 nx.is_connected 检查连通性;有向交互应使用 DiGraph;重计算可导出 SciPy 稀疏矩阵;节点应保持简单可哈希,避免存放大对象;简单 Graph 中重复添加同一条边会覆盖属性,需多重边时应使用 MultiGraph;遍历时修改图需先转为列表。Louvain 社区发现需额外安装 python-louvain。