Python使用NetworkX绘制无向图度分布曲线

闻溪
闻溪
发布时间:2026-10-11| 3人浏览过
原创

本文介绍如何使用Python的NetworkX库生成无标度图,并统计节点度序列。通过计算度分布频率,利用Matplotlib在双对数坐标轴上绘制度分布曲线,直观展示网络拓扑特征。

Python绘制无向图度分布曲线示例

在复杂网络分析中,度分布是描述网络结构特征的重要指标。本文基于NetworkX库,展示如何生成无标度图并绘制其度分布曲线。

核心代码实现

#Copyright (c)2017, 东北大学软件学院学生
# All rightsreserved
#文件名称:a.py
# 作  者:孔云
#问题描述:统计图中的每个节点的度,并生成度序列
#问题分析:利用networkx。代码如下:
import matplotlib.pyplot as plt #导入科学绘图包
import networkx as nx
G=nx.random_graphs.barabasi_albert_graph(1000,3)#生成n=1000,m=3的无标度的图
print ("某个节点的度:",G.degree(0))#返回某个节点的度
print("所有节点的度:",G.degree())#返回所有节点的度
print("所有节点的度分布序列:",nx.degree_histogram(G))#返回图中所有节点的度分布序列(从1至最大度的出现频次)
degree=nx.degree_histogram(G)#返回图中所有节点的度分布序列
x=range(len(degree))#生成X轴序列,从1到最大度
y=[z/float(sum(degree))for z in degree]#将频次转化为频率,利用列表内涵
plt.loglog(x,y,color="blue",linewidth=2)#在双对坐标轴上绘制度分布曲线
plt.show()#显示图表

代码首先导入matplotlib.pyplot和networkx库。接着,使用nx.random_graphs.barabasi_albert_graph(1000,3)生成一个包含1000个节点、每个新节点连接3条边的无标度图。通过G.degree(0)和G.degree()分别获取特定节点和所有节点的度。利用nx.degree_histogram(G)计算度分布序列,即不同度数的节点数量。随后,将频次转化为频率,并在双对数坐标轴上绘制度分布曲线。

运行上述代码后,控制台将输出某个节点的度、所有节点的度以及度分布序列。图形窗口将显示一条蓝色的度分布曲线,横轴为度数,纵轴为频率,采用双对数坐标以更好地展示无标度网络的特征。

以上就是Python使用NetworkX绘制无向图度分布曲线示例的详细内容,更多关于Python NetworkX无向图度分布的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。