1. 程式人生 > >networkx常用操作記錄

networkx常用操作記錄

地鐵資料分析

g.remove_node()#刪除節點
lst = list(nx.connected_component_subgraphs(G))#提取連通圖,返回一個列表
print(nx.number_of_nodes(G))#節點數
print(nx.number_of_edges(G))#邊數
print(nx.average_shortest_path_length(G)) #平均最短路徑長度
print(nx.average_clustering(G))#平均聚類係數
degree = nx.degree_histogram(G)#度分佈--一個list
print(degree)
print(nx.diameter
(G))#網路直徑
def ave(degree):#平均度計算
    s_um = 0
    for i in range(len(degree)):
        s_um =s_um+i*degree[i]
    return s_um/nx.number_of_nodes(G)
ave(degree)

畫圖

x = list(range(len(degree)))
y = [i for i in degree]
plt.bar(x, y, align='center')#plot、loglog
plt.ylim(0, 300)
plt.title('Distribution of Nodes'
) plt.xlabel('Degree') plt.ylabel('Number of Nodes') for a, b in zip(x,y): plt.text(a, b+2,'%.0f' % b, ha='center') #plt.savefig("degree.png") plt.show()

計算最短路徑概率分佈

dis = nx.all_pairs_shortest_path_length(G)#所有節點最短路徑
def ss():
    for key in dis.keys():
        yield dis[key].values()
freq = [0
for i in range(45)] for i in ss(): for j in i: freq[j] +=1 print(freq)#freq是所有最短路徑的list #計算累計分佈 y_=[] for i in range(len(freq)): j = sum(freq[:i+1]) y_.append(j) y_#最短路徑累計---list