networkx
имеет метод с именем relabel_nodes
, который принимает граф (G
), mapping
(правила перемаркировки) и возвращает новый граф (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
функцию, например:
G = nx.relabel_nodes(G, lambda email: email.split("@")[0], copy=False)