简化networkx节点标签

时间:2018-12-13 07:57:31

标签: python networkx

%matplotlib inline
import networkx as nx
import matplotlib.pyplot as plt

G = nx.Graph()
G.add_node('abc@gmail.com')
nx.draw(G, with_labels=True)
plt.show()

输出数字是

enter image description here

我想要的是

enter image description here

我在csv文件中有从数千名电子邮件记录到person@email.com到another@email.com,我使用G.add_node(email_address)G.add_edge(from, to)来构建G。我想保留整个电子邮件地址在图G中显示,但以简化的字符串显示。

1 个答案:

答案 0 :(得分:1)

networkx有一个名为relabel_nodes的方法,该方法获取一个图(G),一个mapping(重新标记规则)并返回一个新图({{1} }),并重新标记节点。

也就是说,在您的情况下:

new_G

这样,您就可以保持import networkx as nx import matplotlib.pyplot as plt G = nx.Graph() G.add_node('abc@gmail.com') mapping = { 'abc@gmail.com': 'abc' } relabeled_G = nx.relabel_nodes(G,mapping) nx.draw(relabeled_G, with_labels=True) plt.show() 完整并具有简化的标签。

您可以选择在适当的位置修改标签,而无需创建新副本,在这种情况下,您只需致电G

如果您事先不知道电子邮件地址,则可以向G = nx.relabel_nodes(G, mapping, copy=False)传递一个函数,如下所示:

relabel_nodes