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)
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 .
dans le cahier ipython, tapez simplement la magie
%matplotlib inline
ou
%matplotlib notebook
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))
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)
Vous devriez l'essayer et le tracer dans votre cahier pour voir la différence.
Cela fonctionne bien en ajoutant:
import matplotlib.pyplot as plt
plt.show()
à votre code. le mien a bien fonctionné.