图论与复杂网络建模工具Networkx的四种网络模型
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
图论与复杂网络建模工具Networkx的四种网络模型相关推荐
- Python基础:networkx (图论与复杂网络建模工具)
图的类型 Graph类是无向图的基类,无向图能有自己的属性或参数,不包含重边,允许有回路,节点可以是任何hash的python对象,节点和边可以保存key/value属性对. 该类的构造函数为Grap ...
- pipe建模工具使用_几种常用建模工具核心对比
几种常用建模工具核心对比 以下是几种常用建模工具核心对比: 1.适用范围 ROSE:需求分析,详细设计,软件框架生成(C++, Java, ANSI SQL, Oracle) ERWI ...
- 使用 Fiddler工具模拟post四种请求数据
前言: Fiddler是一个简单的http协议调试代理工具,它界面友好,易于操作,是模拟http请求的利器之一. 在接口测试中,接口通常是get请求或者post请求.get请求的测试一般较为简单,只需 ...
- 计算机网络设备接地规范,网络机房防雷接地的四种方式及静电要求
编辑----河南新时代防雷 由于计算机网络系统的核心设备都放置在网络机房内,因而网络机房防雷接地有了较高的环境要求,良好的接地系统是保证机房计算机及网络设备安全运行,以及工作人员人身安全的重要措施. ...
- Failed to start LSB 网络服务启动失败的四种解决方法
1.执行 service network restart 出现以下错误 Restarting network (via systemctl): Job for network.service fai ...
- python下的复杂网络编程包networkx的使用(摘抄)
原文:http://blog.sciencenet.cn/home.php?mod=space&uid=404069&do=blog&classid=141080&vi ...
- 各种复杂网络处理工具
各种复杂网络处理工具 networkx igraph BGL SNAP 还有matlab的包,软件gephi,基于java等 对于大规模网络,主要问题在于速度! graphs与networks的区别在 ...
- Yolov5系列(一)——网络可视化工具netron
一.介绍 netron:网络可视化工具,使用这个软件可以清晰的展示网络模型的每一层的输入输出,网络的整体的架构,而且支持不同的网络框架. 类似下图: 二.安装步骤(介绍windows系统安装) (其他 ...
- docker容器的四种网络模式
容器的四种网络模式 docker容器的四种网络模式:bridge 桥接模式.host 模式.container 模式和 none 模式 启动容器时可以使用 –net 参数指定,默认是桥接模式. 以下是 ...
- 【转】介绍几个图论和复杂网络的程序库 —— BGL,QuickGraph,igraph和NetworkX
原文来自:http://blog.sciencenet.cn/blog-404069-297233.html 作复杂网络研究离不开对各种实际或模拟网络的统计.计算.绘图等工作.对于一般性的工作,我们可 ...
最新文章
- macos降级_macOS Big Sur如何降级
- 《Python核心编程 》笔记-第二章+第三章
- 2.2.2 操作系统之进程调度的时机(主动放弃与被动放弃)、切换与过程(广义与狭义)、方式(非剥夺与剥夺)
- 把HttpClient换成IHttpClientFactory之后,放心多了
- win10安装mysql5.7.15_win10上如何安装mysql5.7.16(解压缩版)
- synchronized关键字理解
- python连接linux后一步一步的操作_Python使用技巧
- matlab求解pde,matlab求解pde问题
- 运行命令、文件扩展名速查、Windows运行命令大全
- 国内知名的java商城系统排名
- 迈达斯GTS-NX网格模型(FPN)导入Flac3D 6.0
- linux iso镜像安装工具,教你制作属于自己的CentOS 6.4一键自动化安装ISO镜像光盘...
- win8打印机显示服务器脱机,Win8连接局域网打印机失败解决方法汇总
- 渗透技巧总结、渗透技巧
- 理财入门:思维转变和资产理解以及财务自由说明。
- MVX-Net论文解读
- 开发、测试、测试开发
- 交互设计师必须知道的五大交互设计流程
- Idea archetype介绍
- 主要股东近3年净买入排名