我有一个余弦距离矩阵作为pandas数据帧。如果我将它转换为numpy矩阵并执行以下操作,我可以将其可视化为网络:
DistMatrix = cosine1
G = G=nx.from_numpy_matrix(DistMatrix)
nx.draw(G , with_labels=True)
plt.show()
问题是我丢失了节点的标签。然而,这些标签在大熊猫数据框中。作为距离矩阵,列标签当然与索引标签相同,并且矩阵的对角线具有0的条目(它们完全相同)。
如何从我的pandas数据框中绘制网络并包含标签以正确标记节点?
DistMatrix = pd.DataFrame( data = cosine , index = label_list , columns = label_list)
是否可以只为numpy矩阵版本添加标签?
答案 0 :(得分:1)
您可以使用功能relabel_nodes手动添加标签,方法是添加带有编号到标签的映射的字典。
G = nx.from_numpy_matrix(DistMatrix.values)
labels = DistMatrix.columns.values
G = nx.relabel_nodes(G, dict(zip(range(len(labels)), labels)))
nx.draw(G, with_labels=True)
plt.show()