web-dev-qa-db-fra.com

Tracer un graphique networkx avec des étiquettes de noeud par défaut sur le nom du noeud

NetworkX est puissant mais j'essayais de tracer un graphique qui montre les étiquettes des nœuds par défaut et j'ai été surpris de voir à quel point cette tâche apparemment simple pouvait être fastidieuse pour quelqu'un de nouveau sur Networkx. Il y a un exemple qui montre comment ajouter des étiquettes au tracé.

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

Le problème avec cet exemple est qu'il utilise trop d'étapes et de méthodes lorsque tout ce que je veux faire est simplement d'afficher des étiquettes identiques au nom du nœud lors du dessin du graphique.

# 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?

Existe-t-il un moyen de faire en sorte que nx.draw(G) affiche les étiquettes par défaut (Node1, Node2 dans ce cas) en ligne dans le graphique?

34
Pranjal Mittal

tl/dr: ajoutez simplement with_labels=True au nx.draw appel.

Le page que vous regardiez est quelque peu complexe car il montre comment définir beaucoup de choses différentes comme étiquettes, comment donner différentes couleurs aux différents nœuds et comment fournir des positions de nœuds soigneusement contrôlées. Il se passe donc beaucoup de choses.

Cependant, il semble que vous souhaitiez simplement que chaque nœud utilise son propre nom, et vous êtes satisfait de la couleur et de la position par défaut. Alors

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

Si vous vouliez faire quelque chose pour que les étiquettes des nœuds soient différentes, vous pourriez envoyer un dict comme argument. Ainsi, par exemple,

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

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

enter image description here

64
Joel