Это легко маркировать узлы графа, используя NetworkXЭтикетировочные узлы в NetworkX графа, когда узлы являются объектами
import networkx as nx
import matplotlib.pyplot as plt
G1 = nx.Graph()
a = "A"
b = "B"
G1.add_nodes_from([a, b])
G1.add_edge(a, b)
nx.draw_networkx(G1) # default with_labels=True
plt.show()
Если узлы являются объектами, а не строки, я понимаю, что it's possible к создать дополнительный словарь и использовать его для ярлыков узлов, но можно ли использовать элемент объекта (name
) непосредственно в качестве метки?
class Breakfast:
def __init__(self, name):
self.name = name
spam = Breakfast("Spam")
eggs = Breakfast("Eggs")
G2 = nx.Graph()
G2.add_nodes_from([spam, eggs])
G2.add_edge(spam, eggs)
nx.draw_networkx(G2, with_labels=True)
plt.show()
Что случилось с G2.add_nodes_from ([spam.name, eggs.name]) G2.add_edge (spam.name, eggs.name)? – MathBio
@MathBio Проблема состоит в том, что узлы представляют собой строки, а не объекты «Завтрак», и доступ к другим атрибутам объекта-узла потребует установки дополнительного словаря (и ограничивает имена уникальными). – Calaf