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的四种网络模型相关推荐

  1. Python基础:networkx (图论与复杂网络建模工具)

    图的类型 Graph类是无向图的基类,无向图能有自己的属性或参数,不包含重边,允许有回路,节点可以是任何hash的python对象,节点和边可以保存key/value属性对. 该类的构造函数为Grap ...

  2. pipe建模工具使用_几种常用建模工具核心对比

    几种常用建模工具核心对比 以下是几种常用建模工具核心对比: 1.适用范围 ROSE:需求分析,详细设计,软件框架生成(C++,   Java,   ANSI   SQL,   Oracle) ERWI ...

  3. 使用 Fiddler工具模拟post四种请求数据

    前言: Fiddler是一个简单的http协议调试代理工具,它界面友好,易于操作,是模拟http请求的利器之一. 在接口测试中,接口通常是get请求或者post请求.get请求的测试一般较为简单,只需 ...

  4. 计算机网络设备接地规范,网络机房防雷接地的四种方式及静电要求

    编辑----河南新时代防雷 由于计算机网络系统的核心设备都放置在网络机房内,因而网络机房防雷接地有了较高的环境要求,良好的接地系统是保证机房计算机及网络设备安全运行,以及工作人员人身安全的重要措施. ...

  5. Failed to start LSB 网络服务启动失败的四种解决方法

    1.执行 service network restart 出现以下错误 Restarting network (via systemctl):  Job for network.service fai ...

  6. python下的复杂网络编程包networkx的使用(摘抄)

    原文:http://blog.sciencenet.cn/home.php?mod=space&uid=404069&do=blog&classid=141080&vi ...

  7. 各种复杂网络处理工具

    各种复杂网络处理工具 networkx igraph BGL SNAP 还有matlab的包,软件gephi,基于java等 对于大规模网络,主要问题在于速度! graphs与networks的区别在 ...

  8. Yolov5系列(一)——网络可视化工具netron

    一.介绍 netron:网络可视化工具,使用这个软件可以清晰的展示网络模型的每一层的输入输出,网络的整体的架构,而且支持不同的网络框架. 类似下图: 二.安装步骤(介绍windows系统安装) (其他 ...

  9. docker容器的四种网络模式

    容器的四种网络模式 docker容器的四种网络模式:bridge 桥接模式.host 模式.container 模式和 none 模式 启动容器时可以使用 –net 参数指定,默认是桥接模式. 以下是 ...

  10. 【转】介绍几个图论和复杂网络的程序库 —— BGL,QuickGraph,igraph和NetworkX

    原文来自:http://blog.sciencenet.cn/blog-404069-297233.html 作复杂网络研究离不开对各种实际或模拟网络的统计.计算.绘图等工作.对于一般性的工作,我们可 ...

最新文章

  1. macos降级_macOS Big Sur如何降级
  2. 《Python核心编程 》笔记-第二章+第三章
  3. 2.2.2 操作系统之进程调度的时机(主动放弃与被动放弃)、切换与过程(广义与狭义)、方式(非剥夺与剥夺)
  4. 把HttpClient换成IHttpClientFactory之后,放心多了
  5. win10安装mysql5.7.15_win10上如何安装mysql5.7.16(解压缩版)
  6. synchronized关键字理解
  7. python连接linux后一步一步的操作_Python使用技巧
  8. matlab求解pde,matlab求解pde问题
  9. 运行命令、文件扩展名速查、Windows运行命令大全
  10. 国内知名的java商城系统排名
  11. 迈达斯GTS-NX网格模型(FPN)导入Flac3D 6.0
  12. linux iso镜像安装工具,教你制作属于自己的CentOS 6.4一键自动化安装ISO镜像光盘...
  13. win8打印机显示服务器脱机,Win8连接局域网打印机失败解决方法汇总
  14. 渗透技巧总结、渗透技巧
  15. 理财入门:思维转变和资产理解以及财务自由说明。
  16. MVX-Net论文解读
  17. 开发、测试、测试开发
  18. 交互设计师必须知道的五大交互设计流程
  19. Idea archetype介绍
  20. 主要股东近3年净买入排名

热门文章

  1. NLP - AIML
  2. Ubuntu录屏及gif制作
  3. 高等数学(下)知识点总结
  4. matlab划分训练集验证和测试集代码_训练集、验证集和测试集
  5. Kettle文件下载
  6. python电力系统暂态分析_电力系统暂态计算——时域仿真方法
  7. java从入门到放弃(一)
  8. python连接hive--Pyhive
  9. fltk和glog在mac下的安装与编译
  10. windows 搭建kms服务器激活_搭建kms服务器,自建KMS激活服务器的两种方法