networkx Dodaj węzeł o określonej pozycji
Nadal jestem początkujący z networkx Chcę dodać wiele typów węzłów w różnych pozycjach, użyłem następującego kodu
pos = {0: (40, 20), 1: (20, 30), 2: (40, 30), 3: (30, 10)}
X=nx.Graph()
nx.draw_networkx_nodes(X,pos,node_size=3000,nodelist=[0,1,2,3],node_color='r')
Ale kiedy chcę uzyskać dostęp do wykresu X, jeśli wpiszę X. węzeł zwróci pustą listę a jeśli chcę dodać więcej węzłów, muszę ustawić ich pozycje na początku używając słownika pos.
Jak mogę dodać węzły do wykresu w określonym miejscu x i y używając add_node ()
2 answers
Nie jestem do końca pewien, co chcesz osiągnąć, ale interpretuję to tak, jak chcesz dodać węzły do wykresu, narysować je w pożądanych pozycjach i nadal mieć do nich dostęp w obiekcie graph.
Ponieważ nie dodajesz węzłów do wykresu, to byłby początek:
X.add_nodes_from(pos.keys())
Wtedy nie musisz określać listy węzłów podczas rysowania wykresu, a tym samym nie musisz zmieniać kodu w dwóch różnych miejscach podczas dodawania nowych węzłów.
Jeśli chcesz położenie węzła jako atrybutu węzła, można też to zrobić:
for n, p in pos.iteritems():
X.node[n]['pos'] = p
Zauważ, że te pozycje nie będą używane jako pozycja podczas rysowania wykresu, musi być ustawiona jawnie. Można następnie narysować i wyświetlić wykres za pomocą:
nx.draw(X, pos)
plt.show()
Zakładając, że dokonałeś importu from matplotlib import pyplot as plt
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-04 07:35:04
Możesz użyć następującego podejścia, aby ustawić poszczególne pozycje węzłów, a następnie wyodrębnić słownik " pos " do użycia podczas rysowania.
In [1]: import networkx as nx
In [2]: G=nx.Graph()
In [3]: G.add_node(1,pos=(1,1))
In [4]: G.add_node(2,pos=(2,2))
In [5]: G.add_edge(1,2)
In [6]: pos=nx.get_node_attributes(G,'pos')
In [7]: pos
Out[7]: {1: (1, 1), 2: (2, 2)}
In [8]: nx.draw(G,pos)
UPDATE
Dodaj rysunek
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-27 18:37:45