NetworkX进阶

NetworkX进阶

算法

近似和启发式

优化问题的图性质和启发式函数的近似。这些函数可以通过 from networkx.algorithms import approximation

连通性

节点连接的快速近似

all_pairs_node_connectivity (g) [, nbunch, cutoff] ) 计算所有节点对之间的节点连接
local_node_connectivity \(G,源,目标[, …] ) 计算源和目标之间的节点连接
local_node_connectivity \(G,源,目标[, …] ) 计算源和目标之间的节点连接

集团

用于计算大集团的函数。

max_clique (g) 找到最大的集团
clique_removal (g) 重复地从图表中删除组
large_clique_size (g) 在图表中找出一个大集团的规模

聚类

average_clustering (g) [, trials, seed] ) 估计G的平均聚类系数

独立集

独立集或稳定集是一个图中的一组顶点,其中没有两个是相邻的。也就是说,它是一组顶点i,因此对于i中的每两个顶点,都没有边连接这两个顶点。同样地,图中的每个边在i中最多有一个端点。独立集的大小是它包含的顶点数。
最大独立集是给定图G的最大独立集,其大小表示为 α(G) 是的。找到这样的集合的问题被称为最大独立集问题,并且是NP难优化问题。因此,不存在有效的算法来寻找图的最大独立集。

maximum_independent_set (g) 返回一个近似的最大独立集

边界

查找一组节点边界的例程。
边边界是一组边,每个边在一组给定的节点中只有一个端点(或者,在有向图中,源节点在集合中的一组边)。

edge_boundary \(G,N按钮1[, nbunch2, data, …] ) 返回的边缘边界 nbunch1 .
node_boundary \(G,N按钮1[, nbunch2] ) 返回的节点边界 nbunch1

聚类

描述图形中三角形数目的算法

triangles (g) [, nodes] 计算三角形的数目
transitivity (g) 计算图的传递性,g中所有可能三角形的分数
clustering (g) [, nodes, weight] ) 计算节点的聚类系数
average_clustering (g) [, nodes, weight, …] ) 计算图G的平均聚类系数
square_clustering (g) [, nodes] ) 计算节点的平方聚类系数
generalized_degree (g) [, nodes] ) 计算节点的广义度

社区

计算和测量社区结构的功能。此类中的函数未导入顶级 networkx 命名空间。通过导入 networkx.algorithms.community 模块,然后访问作为属性的函数 community . 例如:

>>> import networkx as nx
>>> from networkx.algorithms import community
>>> G = nx.barbell_graph(5, 1)
>>> communities_generator = community.girvan_newman(G)
>>> top_level_communities = next(communities_generator)
>>> next_level_communities = next(communities_generator)
>>> sorted(map(sorted, next_level_communities))
[[0, 1, 2, 3, 4], [5], [6, 7, 8, 9, 10]]

双分区

用于计算Kernighan–Lin二部算法的函数

kernighan_lin_bisection (g) [, partition, …] ) 使用Kernighan–Lin算法将图划分为两个块

K集团

k_clique_communities (g,k) [, cliques] ) 利用渗透法在图中寻找K族群落
>>> from networkx.algorithms.community import k_clique_communities
>>> G = nx.complete_graph(5)
>>> K5 = nx.convert_node_labels_to_integers(G,first_label=2)
>>> G.add_edges_from(K5.edges())
>>> c = list(k_clique_communities(G, 4))
>>> sorted(list(c[0]))
[0, 1, 2, 3, 4, 5, 6]
>>> list(k_clique_communities(G, 6))
[]

基于模块化的社区

基于模块化的社区检测功能

greedy_modularity_communities (g) [, weight] ) 使用Clauset Newman-Moore贪婪的模块化最大化在图中查找社区

标签传播

标记传播社区检测算法

asyn_lpa_communities (g) [, weight, seed] ) 返回社区 G 由异步标签传播检测到
label_propagation_communities (g) 生成由标签传播确定的社区集

流动社区

用于社区检测的异步流体社区算法

asyn_fluidc (g,k) [, max_iter, seed] ) 返回社区 G 由流体社区算法检测

测量分区

测量分区质量的功能(进入社区)

coverage \(G,分区) 返回分区的覆盖率
performance \(G,分区) 返回分区的性能

通过中心性度量划分

基于中心性概念的计算社区功能

girvan_newman (g) [, most_valuable_edge] ) 使用girvan–newman方法在图中查找社区

正在验证分区

社区查找算法的助手函数

is_partition \(G,社区) 返回 True 如果 communities 是的节点的分区 G

转换为其他数据格式或从其他数据格式转换

到NetworkX图形

用于将NetworkX图形转换为其他格式或从其他格式转换为其他格式的函数。
将数据转换为NetworkX图形的首选方法是通过图形构造函数。构造函数调用to-networkx-graph()函数,该函数尝试猜测输入类型并自动转换。

to_networkx_graph [数据] [, create_using, …] ) 根据已知的数据结构制作NetworkX图

字典

to_dict_of_dicts (g) [, nodelist, edge_data] ) 将图形的邻接表示形式作为字典返回
from_dict_of_dicts \(d) [, create_using, …] ) 返回字典中的图表

列表

to_dict_of_lists (g) [, nodelist] ) 以列表字典的形式返回图形的邻接表示形式
from_dict_of_lists \(d) [, create_using] ) 返回列表字典中的图表
to_edgelist (g) [, nodelist] ) 返回图表中的边列表
from_edgelist (EgGristor) [, create_using] ) 返回边列表中的图形

矩阵

从numpy矩阵创建10节点随机图

>>> import numpy as np
>>> a = np.random.randint(0, 2, size=(10, 10))
>>> D = nx.DiGraph(a)
>>> D = nx.to_networkx_graph(a, create_using=nx.DiGraph)
to_numpy_matrix (g) [, nodelist, dtype, order, …] ) 以numpy矩阵的形式返回图形邻接矩阵
to_numpy_array (g) [, nodelist, dtype, order, …] ) 以numpy数组形式返回图形邻接矩阵
to_numpy_recarray (g) [, nodelist, dtype, order] ) 以numpy recarray形式返回图形邻接矩阵
from_numpy_matrix (a) [, parallel_edges, …] ) 返回numpy矩阵中的图形
from_numpy_array (a) [, parallel_edges, …] ) 返回numpy数组中的图形

scipy

to_scipy_sparse_matrix (g) [, nodelist, dtype, …] ) 以scipy稀疏矩阵的形式返回图形邻接矩阵
from_scipy_sparse_matrix (a) [, …] ) 从给定为scipy稀疏矩阵的邻接矩阵创建新图形

Pandas

to_pandas_adjacency (g) [, nodelist, dtype, …] ) 以熊猫数据帧的形式返回图形邻接矩阵
from_pandas_adjacency (DF) [, create_using] ) 返回熊猫数据帧中的图形
to_pandas_edgelist (g) [, source, target, …] ) 以熊猫数据帧的形式返回图形边缘列表
from_pandas_edgelist (DF) [, source, target, …] ) 从包含边缘列表的熊猫数据帧返回一个图表

绘图

NetworkX提供了图形可视化的基本功能,但其主要目标是启用图形分析,而不是执行图形可视化。
matplotlib

用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, …] ) 在图G上绘制节点标签
draw_networkx_edge_labels (G,POS) [, …] ) 绘制边缘标签
draw_kamada_kawai \(g) * * ) 用Kamada Kawai部队定向布局绘制图G
draw_planar \(g) * * ) 用平面布局绘制平面网络图
draw_random \(g) * * ) 用随机布局绘制图G
draw_spectral \(g) * * ) 用光谱二维布局绘制图G
draw_spring \(g) * * ) 用弹簧布局绘制图G
draw_shell \(g) * * ) 使用外壳布局绘制NetworkX图

图形布局

用于图形绘制的节点定位算法

bipartite_layout \(g,节点) [, align, scale, …] ) 将节点定位在两条直线上
circular_layout (g) [, scale, center, dim] ) 在圆上定位节点
kamada_kawai_layout (g) [, dist, pos, weight, …] ) 使用Kamada Kawai路径长度成本函数定位节点
planar_layout (g) [, scale, center, dim] ) 定位没有边缘交点的节点
random_layout (g) [, center, dim, seed] ) 在单位正方形内均匀随机定位节点
rescale_layout (POS) [, scale] ) 将缩放位置数组返回到所有轴中的(-scale,scale)
shell_layout (g) [, nlist, scale, center, dim] ) 将节点定位在同心圆中
spring_layout (g) [, k, pos, fixed, …] ) 使用Fruchterman-Reingold力定向算法定位节点
spectral_layout (g) [, weight, scale, center, dim] ) 使用图拉普拉斯的特征向量定位节点
spiral_layout (g) [, scale, center, dim, …] ) 在螺旋布局中定位节点
发布了23 篇原创文章 · 获赞 7 · 访问量 1002

猜你喜欢

转载自blog.csdn.net/qq_34356768/article/details/103968913