图论与复杂网络建模工具Networkx的四种网络模型

article/2025/11/7 18:59:21

Networkx的四种网络模型

  • 一. Networkx的下载安装
  • 二. 规则图
  • 三、ER随机图
  • 四、WS小世界网络
  • 五、BA无标度网络
  • 六. 总结

NetworkX提供了4种常见网络的建模方法,分别是:规则图,ER随机图,WS小世界网络和BA无标度网络。

一. Networkx的下载安装

画图之前先将NetworkX装好,直接pip install Networkx的话会特别慢,而且通常会失败,所以我一般都是先把库下载下来,再在本地安装。

1、下载传送门:https://pypi.org/project/networkx/#files
我下载的这个:
在这里插入图片描述2、放到自己指定的文件夹(随意)
3、本地安装
在这里插入图片描述

二. 规则图

规则图差不多是最没有复杂性的一类图,random_graphs.random_regular_graph(d, n)方法可以生成一个含有n个节点,每个节点有d个邻居节点的规则图。
下面一段示例代码,生成了包含20个节点、每个节点有3个邻居的规则图:

import networkx as nx
import matplotlib.pyplot as plt
#生成了包含20个节点、每个节点有3个邻居的规则图
RG = nx.random_graphs.random_regular_graph(3, 20)
#spectral布局
pos = nx.spectral_layout(RG)nx.draw(RG, pos, with_labels = False, node_size = 30)
plt.show()

在这里插入图片描述

三、ER随机图

ER随机图是早期研究得比较多的一类“复杂”网络,模型的基本思想是以概率p连接N个节点中的每一对节点。
用random_graphs.erdos_renyi_graph(n,p)方法生成一个含有n个节点、以概率p连接的ER随机图:

import networkx as nx
import matplotlib.pyplot as plt
#生成一个含有20个节点、以概率p = 0.2连接的ER随机图:
ER = nx.random_graphs.erdos_renyi_graph(20, 0.2)
#shell布局
pos = nx.shell_layout(ER)
nx.draw(ER, pos, with_labels = False, node_size = 30)
plt.show()

在这里插入图片描述

四、WS小世界网络

用random_graphs.watts_strogatz_graph(n, k, p)方法生成一个含有n个节点、每个节点有k个邻居、以概率p随机化重连边的WS小世界网络。

import networkx as nx
import matplotlib.pyplot as plt
#生成一个含有20个节点、每个节点有4个邻居、以概率p=0.3随机化重连边的WS小世界网络
WS = nx.random_graphs.watts_strogatz_graph(20, 4, 0.3)
# circular 布局
pos = nx.circular_layout(WS)
nx.draw(WS, pos, with_labels = False, node_size = 30)
plt.show()

在这里插入图片描述

五、BA无标度网络

用random_graphs.barabasi_albert_graph(n, m)方法生成一个含有n个节点、每次加入m条边的BA无标度网络。

import networkx as nx
import matplotlib.pyplot as plt
#生成一个含有20个节点、每次加入1条边的BA无标度网络。
BA = nx.random_graphs.barabasi_albert_graph(20, 1)
# spring 布局
pos = nx.spring_layout(BA)
nx.draw(BA, pos, with_labels = False, node_size = 30)
plt.show()

在这里插入图片描述

六. 总结

(1)基本绘图流程:
在NetworkX中,绘制一个网络使用nx.draw()方法,它至少接受一个参数:即你希望绘制的网络G。实际上这个方法非常复杂,它可以指定20多个关键字参数,后边会介绍一些常用的参数,我们先从最简单的情况入手,看看下边的例子:

import networkx as nx               #导入networkx包
import matplotlib.pyplot as plt     #导入绘图包matplotlib(需要安装,方法见第一篇笔记)
G =nx.random_graphs.barabasi_albert_graph(100,1)   #生成一个BA无标度网络G
nx.draw(G)                      #绘制网络G
#plt.savefig("ba.png")          #输出方式1: 将图像存为一个png格式的图片文件
plt.savefig("ba_svg.svg")       #svg矢量图通常放入自己的论文中
plt.show()                      #输出方式2: 在窗口中显示这幅图像

在这里插入图片描述
在这里插入图片描述

(2)运用样式
上边的代码虽然简单,但生成的图形略显单调。NetworkX提供了一系列样式参数,可以用来修饰和美化图形,达到我们想要的效果。常用的参数包括:
- node_size: 指定节点的尺寸大小(默认是300,单位未知,就是上图中那么大的点)
- node_color: 指定节点的颜色 (默认是红色,可以用字符串简单标识颜色,例如’r’为红色,'b’为绿色等,具体可查看手册)
- node_shape: 节点的形状(默认是圆形,用字符串’o’标识,具体可查看手册)
- alpha: 透明度 (默认是1.0,不透明,0为完全透明)
- width: 边的宽度 (默认为1.0)
- edge_color: 边的颜色(默认为黑色)
- style: 边的样式(默认为实现,可选: solid|dashed|dotted,dashdot)
- with_labels: 节点是否带标签(默认为True)
- font_size: 节点标签字体大小 (默认为12)
- font_color: 节点标签字体颜色(默认为黑色)
灵活运用上述参数,可以绘制不同样式的网络图形,例如:nx.draw(G,node_size = 30,with_labels = False) 是绘制节点尺寸为30、不带标签的网络图。

(3)运用布局
NetworkX在绘制网络图形方面提供了布局的功能,可以指定节点排列的形式。这些布局包括:
circular_layout:节点在一个圆环上均匀分布
random_layout:节点随机分布
shell_layout:节点在同心圆上分布
spring_layout: 用Fruchterman-Reingold算法排列节点(这个算法我不了解,样子类似多中心放射状)
spectral_layout:根据图的拉普拉斯特征向量排列节点?我也不是太明白
布局用pos参数指定,例如:nx.draw(G,pos = nx.circular_layout(G))。

我的第二篇博客,部分参考了他人的,参考链接在底部。初学者,欢迎交流!
参考:https://www.cnblogs.com/forstudy/archive/2012/03/20/2407954.html
https://www.cnblogs.com/gispathfinder/p/5790949.html


http://chatgpt.dhexx.cn/article/pvA4rpaF.shtml

相关文章

社交网络分析算法应用,社交网络分析算法

社交网络的起源,发展历程及未来的发展趋势。越详细越好啊,多谢了各位 社交网络的起源六度分割原理及社交网络的兴起与发展有一个数学领域的猜想,名为Six Degrees of Separation,中文翻译包括以下几种: 六度分割理论或…

PageRank与社交网络模型评估

 SNS社交网络在近几年流行起来,并呈现出火爆的增长趋势。在仿制国外Facebook、twitter等成功先例的基础上,国内的人人网、新浪微博等一系列社交网络正风生水起。  这些社交网站表面上看起来十分普通和其他网站别无二…

基于社交网络的推荐

论文题目:Graph Neural Networks for Social Recommendation 文章解决的challenge: 1.We propose a novel graph neural network GraphRec, which can model graph data in social recommendations coherently; 将用户与物品交互矩阵,用户与用…

社交网络分析之关系图(原理+Python代码)

数据来源于天池赛题:零基础入门数据分析-学术前沿趋势分析 地址:https://tianchi.aliyun.com/competition/entrance/531866/information 一、原理介绍 社交网络分析是图关系挖掘的一个分支,通常以关系图的形式来展示人与人之间的关系网络。…

python绘制社会关系网络图_python画社交网络图

在图书馆的检索系统中,关于图书的信息里面有一个是图书相关借阅关系图。跟这个社交网络图是一样的,反映了不同对象间的关联性。利用python画社交网络图使用的库是 networkx import networkx as nx import matplotlib.pyplot as plt G nx.Graph() G.…

《关于动态社交网络建模和分析的教程》的读书笔记

** 一、The French-DeGroot model ** 1.模型介绍 描述了一个有n个个体的团体的意见形成的离散时间过程。 模型: x(k1)Wx(k),k0,1…(2)(French提出) (3) 参数含义: x1、x2、…xn&am…

社交网络模型

社交网络模型 1.空手道俱乐部模型 1.1 模型概述 空手道俱乐部模型是以一个34人的团体构成的网络拓扑模型,由于俱乐部创始人与空手道教练就学员学费产生分歧,导致俱乐部形成以这两人为首的两个团体。 1.2 俱乐部裂变前的图形和矩阵表示 1.2.1 俱乐部…

社交网络分析——信息传播模型(附带三个模型的python实现)

摘要:主要讲解一些基本的信息传播模型,以及IC模型、SI模型和SIR模型的python实现及可视化。 2021.10.06更新有需要的可以点击传送门 2020.09.26更新更新了SIR模型的实现,请点击传送门,就不放在这篇博客里了 2020.09.03更新更新了S…

MOODLE安装

https://baijiahao.baidu.com/s?id1648898834478394333&wfrspider&forpc

Moodle 安装的时候提示 original IP

在安装 Moodle 的时候提示下面的错误,导致安装不能进行。 Installation must be finished from the original IP address, sorry 这是因为第一次安装的时候访问的 IP 地址与系统中记录的不一致。 你可以登录使用的数据库后运行下面的 SQL UPDATE mdl_user set la…

Wamp5与Moodle安装

最近在更改本科同学关于MOODLE平台的安装的实验报告的时候,发现他们大部分都是用easyphp安装的,他们在报告中体现出来一些的问题,如:日历产生乱码、安装不了中文版本、无法打开http://localhost/mysql/ 等问题,于是我…

linux安装moodle最新版,在linux下安装moodle

上两篇文章介绍了虚拟机中安装linux server 及相关服务,有了这些基础后,安装一个应用服务 moodle 2.7 是使用最广的网络课程平台。 在安装moodle之前,需要支持软件有mysql phpmyadmin apache php5 1.下载moodle安装文件,moodl…

linux安装moodle最新版,于linux已安装moodle

本文介绍了两个虚拟机的安装linux server 及相关服务,随着后这些基础。安装应用程序服务 moodle 2.7 它是使用最广泛的平台,网络课程。 在安装过程中moodle之前,需要支持软件mysql phpmyadmin apache php5 1.下载moodle安装文件&#xff…

phpstudy环境下安装部署moodle平台

引言: 最近尝试在自己电脑上安装部署一个moodle学习平台,因为之前学习对phpstudy比较熟悉,它是Apache MySQL PHP的集成的开发包,所以打算利用phpstudy集成开发包搭建平台。搭建安装环境可以通过单个软件的安装,但是利…

备忘--moodle安装

php -v //查看版本 sudo apt-get --purge remove php5.5* //删除旧版本 sudo add-apt-repository ppa:ondrej/php //添加源 sudo apt-get update //更新源 sudo apt-get install php7.2 //安装 php -v //查看版本 sudo apt-get install php7.2-my…

Moodle安装教程以及phpMyAdmin无法访问解决

这几天我在使用moodle的框架开发一个教务系统,在安装Moodle环境过程中出现了很多问题: 1. 首先是使用官网集成包,按照说明一步步走结果总是出错。 2. 接着尝试使用xammp安装,结果安装成功之后,第二次无法打开MySQL&a…

Moodle 安装出现访问空白和open_basedir问题

首先要感谢,使用Moodle 的前辈,写下问题处理的办法 最近需要使用Moodle,安装Moodle,先装XAMPP,后将下载的Moodle解压后拷贝到xampp/htdocs下,访问http://localhost/moodle,开始安装Moodle, 一开始都挺顺,可…

阿里云CentOS下搭建LNMP环境和Moodle安装

阿里云CentOS下搭建LNMP环境和Moodle安装 Moodle是一个开源课程管理系统,采用PHPMySQL方式运行的自由开源软件,遵循GNU公共许可协议。世界各地教育工作者越来越喜欢使用Moodle为学生建立网上动态网站。Moodle平台界面简单、精巧,您可以根据需…

moodle安装时出现时间超限,无法进行安装

今天突然想起来,安装moodle时遇到的一个问题:时间超限。我觉得这个对某些读者有帮助,so 就想把它分享出来。 当时,我根据网页上的错误提示,找到了出错文件的位置,但是发现这个文件根本不是“案发现场”&am…

Moodle安装步骤

1、安装xampp 2、关闭IIS,如果不关闭,就修改端口号80为别的,避免与Apache服务器端口冲突。 3、修改httpd-ssl.conf