Networkx:从

时间:2017-10-12 14:28:21

标签: python pandas dataframe networkx

我有一个余弦距离矩阵作为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矩阵版本添加标签?

1 个答案:

答案 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()