社会网络的中心性分析
import networkx as nx
import matplotlib.pyplot as plt
#无向图的中心性分析
#构建网络图
G=nx.Graph()
G.add_nodes_from([1,2,3,4,5])
G.add_edges_from([(1,2),(1,3),(2,3),(3,4),(4,5)])
#绘制网络图
nx.draw(G,with_labels=True,font_size=20,node_size=2000,pos=nx.kamada_kawai_layout(G))
plt.show()
#计算中心性指标
print(nx.degree_centrality(G))#点度中心度
print(nx.closeness_centrality(G))#接近中心度
print(nx.betweenness_centrality(G))#中介中心度
#有向图的中心性分析
#构建有向图网络
G_di = nx.DiGraph()
G_di.add_nodes_from([1,2,3,4,5])
G_di.add_edges_from([(1,2),(1,3),(2,3),(3,4),(4,5)])
#绘制网络图
nx.draw(G_di,with_labels=True,font_size=20,node_size=2000,pos=nx.kamada_kawai_layout(G_di))
plt.show()
#有向图的绝对点度中心度
print(G_di.in_degree(1)) #点1的入度
print(G_di.out_degree(1)) #点1的出度
#通过列表形式显示点1、2、3、4、5的入度
print(list(G_di.in_degree([1,2,3,4,5])))
#通过列表形式显示点1、2、3、4、5的出度
print(list(G_di.out_degree([1,2,3,4,5])))
print(G.number_of_nodes()) #查看一共有多少节点
print(G.number_of_edges()) #查看一共有多少边
#有向图的相对点度中心度
print(nx.in_degree_centrality(G_di))
print(nx.out_degree_centrality(G_di))
#有向图的接近中心度
print(nx.closeness_centrality(G_di))
#有向图的中介中心度
print(nx.betweenness_centrality(G_di))