5-5-2网络图的生成与绘制教学课件PPT.pptx

上传人:春哥&#****71; 文档编号:25334314 上传时间:2022-07-11 格式:PPTX 页数:18 大小:3.10MB
返回 下载 相关 举报
5-5-2网络图的生成与绘制教学课件PPT.pptx_第1页
第1页 / 共18页
5-5-2网络图的生成与绘制教学课件PPT.pptx_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《5-5-2网络图的生成与绘制教学课件PPT.pptx》由会员分享,可在线阅读,更多相关《5-5-2网络图的生成与绘制教学课件PPT.pptx(18页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、5-5-2网络图的生成与绘制弘 德 明 志 博 学 笃 行第5章 数据可视化-Matplotlib第11讲 网络图的生成及绘制主讲人:刘志远弘 德 明 志 博 学 笃 行Contents目录01生成网络02网络图绘制弘 德 明 志 博 学 笃 行在在NetworkX中,提供了大量的生成不同类型图的方法,而且方法的源代码都中,提供了大量的生成不同类型图的方法,而且方法的源代码都是开放的,我们可以在熟悉复杂网络的基本理论和方法的同时,利用已有的开是开放的,我们可以在熟悉复杂网络的基本理论和方法的同时,利用已有的开源代码,对原有的网络模型进行源代码,对原有的网络模型进行探索和深入分析探索和深入分析,

2、这对我们的学习和研究将是,这对我们的学习和研究将是非常有利的。非常有利的。生成网络弘 德 明 志 博 学 笃 行规则图:规则图:每个节点的邻居数量都是相同的。每个节点的邻居数量都是相同的。生成含有生成含有20个节点,且每个节点有个节点,且每个节点有3个邻居的规则图,个邻居的规则图,示例代码如下示例代码如下。 RG=nx.random_regular_graph(3,20) pos=nx.spectral_layout(RG) #采用采用spectral布局布局 nx.draw(RG,pos,node_size=30) #默认节点无标签,节点的直径为默认节点无标签,节点的直径为30 plt.sh

3、ow()生成网络规则图弘 德 明 志 博 学 笃 行早期研究较多的一类复杂网络,其基本思想是以概率早期研究较多的一类复杂网络,其基本思想是以概率p连接连接n各节点中的每一各节点中的每一对节点。下面的示例代码是生成包含对节点。下面的示例代码是生成包含20个节点,以概率个节点,以概率0.2连接的随机图,生成连接的随机图,生成的图形如的图形如下下所示。所示。 ER=nx.erdos_renyi_graph(20,0.2) pos=nx.shell_layout(ER) #采用采用shell布局布局 nx.draw(ER,pos,node_size=30) plt.show()生成网络ER随机图弘 德

4、 明 志 博 学 笃 行下面的代码示例是生成一个含有下面的代码示例是生成一个含有20个节点,每个节点有个节点,每个节点有4个邻居,且以概率个邻居,且以概率0.3随机化重连边的随机化重连边的WS小世界网络,生成小世界网络,生成如下图形如下图形。 WS=nx.watts_strogatz_graph(20,4,0.3) pos=nx.circular_layout(WS) #采用采用circular布局布局 nx.draw(WS,pos,node_size=30) plt.show()生成网络WS小世界图弘 德 明 志 博 学 笃 行BA无标度网络的基本原理是在网络生长的过程中,不断有新节点加入系

5、统,无标度网络的基本原理是在网络生长的过程中,不断有新节点加入系统,而而新节点与网络中已有节点以一定的概率进行连边新节点与网络中已有节点以一定的概率进行连边。下面的代码示例是生成一。下面的代码示例是生成一个含有个含有20个节点,且每次只加入个节点,且每次只加入1条新边的条新边的BA无标度网络,生成无标度网络,生成如下图形。如下图形。 BA=nx.barabasi_albert_graph(20,1) pos=nx.spring_layout(BA) #采用采用spring布局布局 nx.draw(BA,pos,node_size=30) plt.show()生成网络BA无标度网络弘 德 明 志

6、 博 学 笃 行(1) subgraph(G, nbunch):产生图:产生图G中包含节点列表中包含节点列表nbunch的子图,如:的子图,如: G = nx.path_graph(4) # or DiGraph, MultiGraph, MultiDiGraph, etc H = nx.subgraph(G, 0, 1, 2) list(H.edges)(0, 1), (1, 2)(1) union(G1,G2,rename=(None,None):合并两个不相交的图:合并两个不相交的图G1、G2为一为一个新图。若个新图。若G1、G2相交,则必须使用相交,则必须使用rename参数对参数对G

7、1、G2重命名。重命名。(2) disjoint_union(G1,G2):连接两个不相交的图:连接两个不相交的图G1、G2。要求。要求G1、G2的的类型相同,且如果有相同节点存在,则会自动按数字顺序改变相同的类型相同,且如果有相同节点存在,则会自动按数字顺序改变相同的节点标识,而总结点数保持不变。节点标识,而总结点数保持不变。(3) cartesian_product(G1,G2):返回图:返回图G1、G2的笛卡尔积,即的笛卡尔积,即G1、G2的节的节点依次配对,生成新节点并连边点依次配对,生成新节点并连边。图的相关操作弘 德 明 志 博 学 笃 行(1) compose(G1,G2):合并

8、图:合并图G1、G2中相同的节点,生成一个新图。中相同的节点,生成一个新图。(2) complement(G):图:图G中结点不变,边为原边的补集,即图中原来的连中结点不变,边为原边的补集,即图中原来的连边去除,原来没有连边的节点重新连边。边去除,原来没有连边的节点重新连边。(3) create_empty_copy(G):返回同一个图的空副本,即结点不变,而所:返回同一个图的空副本,即结点不变,而所有的边被删除有的边被删除(4) to_undirected(G):将图:将图G转换为对应的无向图转换为对应的无向图(5) to_directed(G):将图:将图G转换为有向图转换为有向图图的相关

9、操作弘 德 明 志 博 学 笃 行在在NetworkX中生成网络图后,为满足用户的个性化需求,需要选择合适的绘中生成网络图后,为满足用户的个性化需求,需要选择合适的绘图函数,并设置绘图的样式和布局。图函数,并设置绘图的样式和布局。(1) 常用的绘图函数常用的绘图函数 draw(G,pos,ax,hold):用:用Matplotlib的画布绘图,默认没有标签和坐标的画布绘图,默认没有标签和坐标轴。轴。 draw_networkx(G,pos,with_labels):用:用Matplotlib绘图,能够有更多的绘图,能够有更多的选项设置,如节点的位置、标签、标题和其他的绘图特征。选项设置,如节点

10、的位置、标签、标题和其他的绘图特征。 draw_networkx_nodes(G,pos,nodelist):仅绘制网络:仅绘制网络G的节点图。的节点图。 draw_networkx_edges(G,pos,edgelist):仅绘制网络:仅绘制网络G的边图。的边图。 draw_networkx_labels(G,pos,labels,):绘制节点带标签的网络图:绘制节点带标签的网络图G。 draw_networkx_edge_labels(G, pos, .):绘制边上带标签的网络图:绘制边上带标签的网络图G。 其他与布局有关的绘图函数包括其他与布局有关的绘图函数包括draw_circula

11、r(G)、draw_random(G)、draw_spectral(G)、draw_spring(G)、draw_shell(G)、draw_graphviz(G),其作用与下面的布局设置是一样的。其作用与下面的布局设置是一样的。网络图绘制绘图函数弘 德 明 志 博 学 笃 行绘图的样式设置绘图的样式设置NetworkX在绘图时,可以用来设置绘图样式的参数有很多,在此仅描述常用在绘图时,可以用来设置绘图样式的参数有很多,在此仅描述常用的样式参数。的样式参数。 node_size: 指定节点的大小,默认为指定节点的大小,默认为300; node_color: 指定节点的填充颜色,指定节点的填充颜

12、色,(默认为红色,可以用字符串简单标识颜默认为红色,可以用字符串简单标识颜色,例如色,例如r为红色,为红色,b为绿色等;为绿色等; node_shape: 节点的形状,默认为圆形,用字符串节点的形状,默认为圆形,用字符串o标识,其他的标识可参标识,其他的标识可参阅阅Matplotlib部分的内容;部分的内容; alpha: 透明度,默认为透明度,默认为1.0,不透明,不透明,0为完全透明;为完全透明;网络图绘制绘图样式弘 德 明 志 博 学 笃 行(1) 绘图的样式设置绘图的样式设置 width: 边的宽度,默认为边的宽度,默认为1.0; edge_color: 边的颜色,默认为黑色;边的颜色

13、,默认为黑色; style: 边的样式,默认为实线,也可以为边的样式,默认为实线,也可以为solid、dashed、dotted、dashdot等等样式;样式; with_labels: 节点是否带标签,默认为节点是否带标签,默认为False; font_size: 节点标签的字体大小,默认为节点标签的字体大小,默认为12; font_color: 节点标签的字体颜色,默认为黑色节点标签的字体颜色,默认为黑色网络图绘制绘图样式弘 德 明 志 博 学 笃 行布局设置布局设置布局是指节点在图中的排列形式,能够使图更加合理和美观。布局是指节点在图中的排列形式,能够使图更加合理和美观。NetworkX

14、绘图绘图时,可以通过绘图方法的时,可以通过绘图方法的pos参数设置布局。常用的布局方式有:参数设置布局。常用的布局方式有: circular_layout:节点在一个圆环上均匀分布。:节点在一个圆环上均匀分布。 random_layout:节点随机分布:节点随机分布 shell_layout:节点在同心圆上分布:节点在同心圆上分布 spring_layout:用:用Fruchterman-Reingold算法排列节点,呈中心放射状算法排列节点,呈中心放射状 spectral_layout:根据图的拉普拉斯特征向量排列节点:根据图的拉普拉斯特征向量排列节点网络图绘制布局设置弘 德 明 志 博 学

15、 笃 行import networkx as nximport networkx as nximport matplotlib.pyplot as pltimport matplotlib.pyplot as pltimport osimport osdef karate_club_graph(data):def karate_club_graph(data): # #自定义函数自定义函数 返回返回Zacharys Karate俱乐部网络图俱乐部网络图 图中表示成员的每个节点具有属性图中表示成员的每个节点具有属性club,代表成员所属的团体名称,代表成员所属的团体名称 或者为或者为Mr. Hi

16、,或者为,或者为Officer # #创建所有成员的集合和每个俱乐部的成员创建所有成员的集合和每个俱乐部的成员 all_members = set(range(34) all_members = set(range(34) club1=0,1,2,3,4,5,6,7,8,10,11,12,13,16,17,19,21club1=0,1,2,3,4,5,6,7,8,10,11,12,13,16,17,19,21 # club2 = all_members - club1 # club2 = all_members - club1 G = nx.Graph() G = nx.Graph() G.a

17、dd_nodes_from(all_members) G.add_nodes_from(all_members) G.name = Zacharys Karate Club G.name = Zacharys Karate Club网络图绘制karate网络绘制图图5.51 空手道俱乐部网络图空手道俱乐部网络图弘 德 明 志 博 学 笃 行 zacharydat=datazacharydat=data for row, line in enumerate(zacharydat): for row, line in enumerate(zacharydat): thisrow = int(b)

18、for b in line.split() thisrow = int(b) for b in line.split() for col, entry in enumerate(thisrow): for col, entry in enumerate(thisrow): if entry = 1: if entry = 1: G.add_edge(row, col) G.add_edge(row, col) # #添加每个成员的俱乐部名称,作为节点的属性添加每个成员的俱乐部名称,作为节点的属性 for v in G: for v in G: G.nodesvclub=Mr. Hi if v

19、in club1 else Officer G.nodesvclub=Mr. Hi if v in club1 else Officer return G return G# #设置数据文件所在的目录,并打开需要的文件设置数据文件所在的目录,并打开需要的文件os.chdir(ud:VisualizationNetworkX)os.chdir(ud:VisualizationNetworkX)txt(zachary.txt,r,encoding=UTF-8)txt(zachary.txt,r,encoding=UTF-8)lines=txt() #lines=txt() #读取文件中的所有行读取

20、文件中的所有行网络图绘制karate网络绘制弘 德 明 志 博 学 笃 行# #获取第获取第8-42行的数据,并切片掉每行后边的换行符行的数据,并切片掉每行后边的换行符# #之后去除每行的前置空格之后去除每行的前置空格datalist=linesi:-1.lstrip() for i in range(7,41)datalist=linesi:-1.lstrip() for i in range(7,41)H=karate_club_graph(datalist) #H=karate_club_graph(datalist) #调用函数生成图调用函数生成图pos=nx.spring_layou

21、t(H) #pos=nx.spring_layout(H) #布局方式布局方式for v in H.nodes: #for v in H.nodes: #遍历图中节点,按俱乐部设置不同颜色遍历图中节点,按俱乐部设置不同颜色 if H.nodesvclub=Mr. Hi: if H.nodesvclub=Mr. Hi: H.nodesvcolor=pink H.nodesvcolor=pink else: else: H.nodesvcolor=aqua H.nodesvcolor=aquacolors=H.nodesvcolor for v in H.nodes #colors=H.nodesvcolor for v in H.nodes #节点颜色列表节点颜色列表nx.draw(H,pos,node_color=colors,with_labels=True,width=1)nx.draw(H,pos,node_color=colors,with_labels=True,width=1)plt.show()plt.show()网络图绘制karate网络绘制弘 德 明 志 博 学 笃 行谢谢大家

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com