networkx常用操作汇总(整理自用)

目录

1. 创建图

2. 计算图的拓扑特征

3. 网络节点的个数、边的条数

4. 某个节点的邻居

5. 可视化网络

6. 网络最长路径


1. 创建图

import networkx as nx

# 无向图
G = nx.Graph()

# 有向图
G = nx.DiGraph()

# 添加边,temp是DataFrame
for i in tqdm(range(len(temp))):
    G.add_edge(temp['prevshareuuid'][i], temp['shareuuid'][i])

# 添加边,data是dict
G.add_edges_from(data.items())

# 根据邻接矩阵生成无向图
G = nx.from_numpy_matrix(np.array(data))

# 根据邻接矩阵生成有向图
G = nx.from_numpy_matrix(np.array(data), create_using=nx.DiGraph)

# 根据连边列表生成有向图
G = nx.from_pandas_edgelist(data[['source', 'target']], source='source', target='target', create_using=nx.DiGraph)

2. 计算节点的拓扑特征

下面的计算默认是对无权网络,如果是有权网络,可以加一个参数 weight='weight'

# 度
nx.degree(G)

# 入度
nx.in_degree_centrality(G)

# 出度
nx.out_degree_centrality(G)

# 接近中心性(对于有向图,默认是入度接近中心性)
nx.closeness_centrality(G)

# 接近中心性(对于有向图,如果想计算出度接近中心性)
nx.closeness_centrality(G.reverse())

# 特征向量中心
nx.eigenvector_centrality(G)

# 介数
nx.betweenness_centrality(G)

# 集聚系数
nx.clustering(G)

# pagerank
nx.pagerank(G)

3. 计算网络的拓扑特征

下面的计算默认是对无权网络,如果是有权网络,可以加一个参数 weight='weight'

# 网络节点的个数
G.number_of_nodes()

# 网络边的条数
G.number_of_edges()

# 网络的密度
nx.density(G)

# 传递性
nx.transitivity(G)

# 同配性
nx.degree_assortativity_coefficient(G)
nx.degree_pearson_correlation_coefficient(G)

# 集聚系数
nx.average_clustering(G)

# 返回最长路径,一个node的list
nx.dag_longest_path(G)

4. 某个节点的邻居

# 返回的全部是dict
# 无向图
G[node]

# 有向图
G.degree()
G.out_degree()
G.in_degree()

5. 可视化网络

nx.draw_networkx(G)

如果报错“module 'matplotlib.cbook' has no attribute 'iterable'”可能是版本的问题。networkx==2.6.1是可以画的。

你可能感兴趣的:(Python,python,networkx,网络拓扑,复杂网络)