2015-02-16 30 views
14

NetworkX jest potężny, ale próbowałem wykreślić wykres, który domyślnie pokazuje etykiety węzłów i byłem zaskoczony, jak nudne to, z pozoru proste, zadanie może być dla kogoś nowego w Networkx. Istnieje przykład pokazujący, jak dodawać etykiety do fabuły.Wykreślanie wykresu sieciowego z etykietami węzłów z domyślną nazwą węzła

https://networkx.github.io/documentation/latest/examples/drawing/labels_and_colors.html

Problem z tym przykładzie jest to, że używa zbyt wielu etapów i metod, kiedy wszystko, co chcesz zrobić, to po prostu pokazać etykiety, które są takie same jak nazwy węzła podczas rysowania wykresu.

# Add nodes and edges 
G.add_node("Node1") 
G.add_node("Node2") 
G.add_edge("Node1", "Node2") 
nx.draw(G) # Doesn't draw labels. How to make it show labels Node1, Node2 along? 

Czy istnieje sposób, aby pokazać nx.draw(G) domyślne etykiety (node1, NODE2 w tym przypadku) inline na wykresie?

Odpowiedz

26

tl/dr: po prostu dodaj with_labels=True do połączenia nx.draw.

Główną przyczyną dodatkowej złożoności na that page było pokazanie, jak ustawić wiele różnych rzeczy jako etykiety, a także różne kolory węzłów i zapewnić dokładną kontrolę nad położeniami węzłów. Wydaje się, chcesz tylko nazwę, która została mu nadana gdy węzeł został stworzony, i jesteś zadowolony z domyślnego koloru i domyślnej pozycji

import networkx as nx 
import pylab as plt 

G=nx.Graph() 
# Add nodes and edges 
G.add_edge("Node1", "Node2") 
nx.draw(G, with_labels = True) 
plt.savefig('labels.png') 

enter image description here

Jeśli chciał zrobić coś tak, że Etykiety węzłów były inne, więc możesz wysłać dykt jako argument. Tak na przykład,

labeldict = {} 
labeldict["Node1"] = "shopkeeper" 
labeldict["Node2"] = "angry man with parrot" 

nx.draw(G,labels=labeldict, with_labels = True) 

enter image description here

+0

doskonały, że działa! Parametr 'with_labels' nie jest nigdzie wspomniany w pomocy nx.draw, tzn. >>>' help (nx.draw) 'ale działa. Dzięki! –

+0

Tak jest w dokumentacji, ale nie bezpośrednio: '** kwds: opcjonalne słowa kluczowe Zobacz networkx.draw_networkx() dla opisu opcjonalnych słów kluczowych." – Joel