通过网络可视化节点及其连接x

问题描述 投票:0回答:1

我有两个节点之间的连接列表,描述数据集中条目的相似性。

我正在考虑对条目及其连接进行可视化,以显示存在非常相似的条目的集群。

每个元组代表一对非常相似的节点。我为所有这些选择了权重为 1,因为这是必需的,但我希望所有边缘都同样厚。

我已经从

networkx
开始,问题是我现在不知道如何以有用的方式将相似的节点聚集在一起。

我有数据框中的连接列表:

smallSample = 
[[0, 1492, 1],
 [12, 937, 1],
 [16, 989, 1],
 [18, 371, 1],
 [18, 1140, 1],
 [26, 398, 1],
 [26, 1061, 1],
 [30, 1823, 1],
 [33, 1637, 1],
 [54, 1047, 1],
 [63, 565, 1]]

我按以下方式创建图表:

import networkx as nx
import matplotlib.pyplot as plt
G = nx.Graph()
for index, row in CC.iterrows():
      G.add_edge(CC['source'].loc[index],CC['target'].loc[index], weight =1)
pos = nx.spring_layout(G, seed=7)
nx.draw_networkx_nodes(G, pos, node_size=5)
nx.draw_networkx_edges(G, pos, edgelist=G.edges(), width=0.5)
pos = nx.spring_layout(G, k=1, iterations=200)
plt.figure(3, figsize=(2000,2000), dpi =2) 

使用上面提供的小样本,结果如下所示:

我的真实 df 结果由数千个点组成:

Big Sample

如何将链接的节点分组在一起,以便更好地看到每个集群中有多少个节点?我不想让它们重叠得那么厉害,要掌握在大样本中到底有多少个真的不是那么容易。

python pandas matplotlib visualization networkx
1个回答
0
投票

我曾经使用 networkx + 导出

gml
文件来制作这些图表,以解决您使用名为 Cytoscape 的免费软件询问的问题。它有一堆不同的可视化设置,可以很好地组织节点/边。

使用

nx.write_gml(G, "your_filename.gml")
输出到文件。然后,您可以将该文件导入 Cytoscape 并使用自动布局使节点很好地组织起来。我真的很喜欢
Prefuse Force Directed Layout
。然后将最终结果导出到图像以便在您需要的地方使用。

这有点笨重,但我发现这是获得最好看的最终结果的方法。

© www.soinside.com 2019 - 2024. All rights reserved.