web-dev-qa-db-fra.com

Dessiner un graphique dans NetworkX

J'essaye de dessiner n'importe quel graphique dans NetworkX, mais n'obtiens rien, pas même des erreurs:

import networkx as nx
import matplotlib.pyplot as plt
g1=nx.petersen_graph()
nx.draw(g1)
31
denfromufa

Ajoutez à la fin:

plt.show()

import networkx as nx
import matplotlib.pyplot as plt
g1 = nx.petersen_graph()
nx.draw(g1)
plt.show()

Lorsqu'elle est exécutée à partir d'un shell interactif où plt.ion() a été appelée, la plt.show() n'est pas nécessaire. C'est probablement pourquoi il est omis dans de nombreux exemples.

Si vous exécutez ces commandes à partir d'un script (où plt.ion() n'a pas été appelé), la plt.show() est nécessaire. plt.ion() convient pour les sessions interactives, mais est non recommandé pour les scripts .

35
unutbu

dans le cahier ipython, tapez simplement la magie

%matplotlib inline

ou

%matplotlib notebook
5
denfromufa

Vous pouvez facilement tracer avec des graphiques networkx en utilisant le notebook jupyter. Voir le premier exemple.

OU, vous pouvez utiliser Bokeh pour tracer des graphiques, ce qui ajoute des fonctionnalités utiles. Le package holoviews rend encore plus simple le tracé d'un graphique avec bokeh. Il ajoute des fonctionnalités telles que la mise en évidence automatique et l'affichage des étiquettes tout en survolant les nœuds. Cependant, l'édition des couleurs, etc. semble être un problème.

%pylab inline  
# `pylab notebook`  # for interactive plots

import pandas as pd
import networkx as nx
import holoviews as hv

G=nx.Graph()
ndxs = [1,2,3,4]
G.add_nodes_from(ndxs)
G.add_weighted_edges_from( [(1,2,0), (1,3,1) , (1,4,-1) , (2,4,1) , (2,3,-1), (3,4,10) ] ) 
nx.draw(G, nx.spring_layout(G, random_state=100))

enter image description here

Et voici l'exemple avec bokeh et holoview:

hv.extension('bokeh')
%opts Graph [width=400 height=400]
padding = dict(x=(-1.1, 1.1), y=(-1.1, 1.1))
hv.Graph.from_networkx(G, nx.layout.spring_layout).redim.range(**padding)

enter image description here

Vous devriez l'essayer et le tracer dans votre cahier pour voir la différence.

3
Sören

Cela fonctionne bien en ajoutant:

import matplotlib.pyplot as plt
plt.show()

à votre code. le mien a bien fonctionné.

0
Mohammad Heydari