Python 如何对邻接矩阵排序

Python 如何对邻接矩阵排序,python,networkx,adjacency-matrix,Python,Networkx,Adjacency Matrix,Python中是否有方法“排序”邻接矩阵,以便更好地查看不同的连接节点集群 我有一些矩阵,但模式看起来像是随机分布的。例如,在现实世界中,我知道我有N个独立的集群(它们之间没有连接) 所以我希望邻接矩阵看起来像是有N个不同的模式 这是可以实现的吗 更新: 我昨天没有时间,但现在有一些细节: import networkx as nx import numpy as np import matplotlib.pyplot as plt G = nx.Graph() S = {'7064', '70

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)

事实上,我只关心上三角形,因为它是一个对称矩阵(样本与自身)


我希望邻接矩阵看起来像有6个“斑点”(其中两个将是两个孤立点的单像素)。目前,它显示在上面的三角形中,12个视觉上分开的区域(它们只是视觉上分开的,事实上矩阵是可以的,但我想重新排列它,以便更适合现实中的子图数量)

这似乎已经在中得到了回答,但是,没有公认的答案

答案是对热图的行和列进行相似性聚类(例如欧几里德距离),就像seaborn可以自动为您做的那样。
邻接矩阵只是seaborn可以使用的正则矩阵的特例,其中元素为0或1。

在代码中邻接矩阵是如何表示的?你能展示一些你正在使用的代码吗。
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.