Python数模笔记-(1)NetworkX 图的操作 (3)

本系列拟对图和网络的可视化作一个专题,在此只简单介绍基于 Matplotlib 的基本绘图函数。基本绘图函数使用字典提供的位置将节点放置在散点图上,或者使用布局函数计算位置。

方法 说明
draw(G[,pos,ax])   基于 Matplotlib 绘制 图 G  
draw_networkx(G[, pos, arrows, with_labels])   基于 Matplotlib 绘制 图 G  
draw_networkx_nodes(G, pos[, nodelist, . . . ])   绘制图 G 的顶点  
draw_networkx_edges(G, pos[, edgelist, . . . ])   绘制图 G 的边  
draw_networkx_labels(G, pos[, labels, . . . ])   绘制顶点的标签  
draw_networkx_edge_labels(G, pos[, . . . ])   绘制边的标签  

其中,nx.draw() 和 nx.draw_networkx() 是最基本的绘图函数,并可以通过自定义函数属性或其它绘图函数设置不同的绘图要求。常用的属性定义如下:

'node_size':指定节点的尺寸大小,默认300

'node_color':指定节点的颜色,默认红色

'node_shape':节点的形状,默认圆形

''alpha':透明度,默认1.0,不透明

'width':边的宽度,默认1.0

'edge_color':边的颜色,默认黑色

'style':边的样式,可选 'solid'、'dashed'、'dotted'、'dashdot'

'with_labels':节点是否带标签,默认True

'font_size':节点标签字体大小,默认12

'font_color':节点标签字体颜色,默认黑色

Python数模笔记-(1)NetworkX 图的操作

3.2 图的分析

NetwotkX 提供了图论函数对图的结构进行分析:

子图
子图是指顶点和边都分别是图 G 的顶点的子集和边的子集的图。
subgraph()方法,按顶点从图 G 中抽出子图。例程如前。

连通子图
如果图 G 中的任意两点间相互连通,则 G 是连通图。
connected_components()方法,返回连通子图的集合。

G = nx.path_graph(4) nx.add_path(G, [7, 8, 9]) # 连通子图 listCC = [len(c) for c in sorted(nx.connected_components(G), key=len, reverse=True)] maxCC = max(nx.connected_components(G), key=len) print('Connected components:{}'.format(listCC)) # 所有连通子图 # Connected components:[4, 3] print('Largest connected components:{}'.format(maxCC)) # 最大连通子图 # Largest connected components:{0, 1, 2, 3}

** 强连通**
如果有向图 G 中的任意两点间相互连通,则称 G 是强连通图。
strongly_connected_components()方法,返回所有强连通子图的列表。

# 强连通 G = nx.path_graph(4, create_using=nx.DiGraph()) nx.add_path(G, [3, 8, 1]) # 找出所有的强连通子图 con = nx.strongly_connected_components(G) print(type(con),list(con)) # <class 'generator'> [{8, 1, 2, 3}, {0}]

弱连通
如果一个有向图 G 的基图是连通图,则有向图 G 是弱连通图。
weakly_connected_components()方法,返回所有弱连通子图的列表。

# 弱连通 G = nx.path_graph(4, create_using=nx.DiGraph()) #默认生成节点 0,1,2,3 和有向边 0->1,1->2,2->3 nx.add_path(G, [7, 8, 3]) #生成有向边:7->8->3 con = nx.weakly_connected_components(G) print(type(con),list(con)) # <class 'generator'> [{0, 1, 2, 3, 7, 8}]

=== 关注 Youcans 原创系列(https://www.cnblogs.com/youcans/)
版权说明:
参考文献声明:本文部分内容参考了 NetworkX 官网介绍:https://networkx.org/documentation/stable/
YouCans 原创作品
Copyright 2021 YouCans, XUPT
Crated:2021-05-16

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zygjxf.html