利用networkx里面的函数degree_centrality(G)来求解图的度中心性。
代码如下:
# -*- coding: utf-8 -*-
"""
Created on Sat Sep 14 18:01:27 2019
@author: Administrator
"""
'''
程序的算法思想:需要读入一个邻接矩阵,存储在TXT文本中,
然后读入程序里面。使用图的邻接矩阵来还原成一个图,
然后使用networkx里面的函数degree_centrality(G)
来求解图的度中心性。
'''
import matplotlib.pyplot as plt
import networkx as nx
import operator
def matrix_to_graph():
G = nx.Graph()
filestr = ""
with open("mlMatrix.txt") as files:
for line in files:
filestr += line.strip()
#将字符串转换成列表
matrix = eval(filestr)
nodes = range(len(matrix))
G.add_nodes_from(nodes)
for i in range(len(matrix)):
for j in range(len(matrix)):
if(matrix[i][j] == 1):
G.add_edge(i, j)
dc = nx.algorithms.centrality.degree_centrality(G)
print(dc)
print("----------------------------------------")
#将字典的形式转化成按照value从小到大排序
list_dc = sorted(dc.items(), key=operator.itemgetter(1))
print(list_dc)
matrix_to_graph()
结果如下: