2017-06-14 342 views
0

有沒有在Python辦法「排序」的鄰接矩陣,以更好地看到連接節點的不同集羣?如何排序的鄰接矩陣

我有一些矩陣還,但圖案看起來像隨機分佈的就可以了。在現實世界中,我知道例如我有N個獨立的羣集(中間沒有連接)。

所以我想鄰接矩陣看起來像有N個不同的模式。

這是可以實現的嗎?

更新: 昨天我沒有時間,但這裏是現在的一些細節:

import networkx as nx 
import numpy as np 
import matplotlib.pyplot as plt 
G = nx.Graph() 
S = {'7064', '7065', '7066', '7067', '7068', '7069', '7070', '7071', '7072', '7073', '7074', '7075', '7076', '7077', '7078', '7079', '7080'} 
E = [('7064', '7065'), 
('7067', '7068'), 
('7067', '7076'), 
('7067', '7077'), 
('7067', '7078'), 
('7067', '7079'), 
('7067', '7080'), 
('7067', '7081'), 
('7068', '7076'), 
('7068', '7077'), 
('7068', '7078'), 
('7068', '7080'), 
('7068', '7081'), 
('7069', '7075'), 
('7070', '7072'), 
('7070', '7074'), 
('7071', '7074'), 
('7076', '7077'), 
('7076', '7078'), 
('7076', '7079'), 
('7076', '7080'), 
('7076', '7081'), 
('7077', '7078'), 
('7077', '7079'), 
('7077', '7080'), 
('7077', '7081'), 
('7078', '7079'), 
('7078', '7080'), 
('7078', '7081'), 
('7079', '7080'), 
('7079', '7081'), 
('7080', '7081')] 
G.add_nodes_from(S) 
G.add_edges_from(E) 
adj_matrix = nx.adjacency_matrix(G).toarray() 

plt.imshow(adj_matrix) 

adjacency matrix

在事實,我只關心上三角,因爲它是一個對稱矩陣(樣品與他們自己)。

sub_graphs = list(nx.connected_components(G)) 
nb_clusters = len(sub_graphs) # total number of sub graphs, including isolated points, there is here 2 isolated points. All other are at least linked with min 1 other point. 

我想鄰接矩陣看起來像有6「斑點」(其中兩個將是兩個孤立點單個像素)。目前,它在其上部三角形中顯示了12個視覺上分離的區域(它們僅被視覺分離,實際上矩陣是確定的,但我想重新排列它以更適合子圖的實際數量)

+3

如何鄰接矩陣代碼中的代表?你能展示一些你正在使用的代碼嗎? – mkrieger1

+0

主文編輯。 –

回答