利用python来求解网络的平均路径长度和聚类系数
# -*- coding: utf-8 -*-
"""
Created on Mon Aug 19 13:14:12 2019
@author: Administrator
"""
# -*- coding: utf-8 -*-
"""
Created on Sun Jun 16 20:13:42 2019
@author: Administrator
"""
"""
这个函数的作用是将一个矩阵给转换成一个图,
矩阵以多维列表的形式存在,即列表的列表
此处的转换是针对无向图
根据邻接矩阵得到图之后,我们就可以调用networkx
里面的各种函数来分析图的性质,比如度分布,
平均路径程度,聚类系数等一系列图的拓扑性质
"""
import networkx as nx
def matrix_to_graph():
G = nx.Graph()
filestr = ""
with open("result.txt") as files:
for line in files:
# print(line)
filestr += line.strip()
# print(filestr)
#将字符串转换成列表
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)
position = nx.circular_layout(G)
nx.draw_networkx_nodes(G,position, nodelist=nodes, node_color="r")
nx.draw_networkx_edges(G,position)
nx.draw_networkx_labels(G,position)
#print(nx.to_numpy_matrix(G))
# print(G.degree()) #节点的度
# print(nx.clustering(G))#节点的聚类系数
print(nx.average_clustering(G))#整个图的聚集系数
print("---------------------------------------")
print(nx.average_shortest_path_length(G))#图的平均路径长度
# print(nx.number_connected_components(G))#图的连通分支
# print(nx.to_numpy_matrix(G))
matrix_to_graph()