目录
1. 创建图
2. 计算图的拓扑特征
3. 网络节点的个数、边的条数
4. 某个节点的邻居
5. 可视化网络
6. 网络最长路径
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)
下面的计算默认是对无权网络,如果是有权网络,可以加一个参数 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)
下面的计算默认是对无权网络,如果是有权网络,可以加一个参数 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)
# 返回的全部是dict
# 无向图
G[node]
# 有向图
G.degree()
G.out_degree()
G.in_degree()
nx.draw_networkx(G)
如果报错“module 'matplotlib.cbook' has no attribute 'iterable'”可能是版本的问题。networkx==2.6.1是可以画的。