python - example - Dibujar gráfico en NetworkX
networkx tutorial plot (3)
Añadir al final:
plt.show()
import networkx as nx
import matplotlib.pyplot as plt
g1 = nx.petersen_graph()
nx.draw(g1)
plt.show()
Cuando se ejecuta desde un shell interactivo donde se ha llamado a plt.show()
no es necesario el plt.show()
. Probablemente esta sea la razón por la que se omite en muchos ejemplos.
Si ejecuta estos comandos desde un script (donde no se ha llamado a plt.show()
se necesita el plt.show()
. plt.ion()
está bien para sesiones interactivas, pero no se recomienda para scripts .
Estoy intentando dibujar cualquier gráfico en NetworkX, pero no obtengo nada, ni siquiera errores:
import networkx as nx
import matplotlib.pyplot as plt
g1=nx.petersen_graph()
nx.draw(g1)
En el cuaderno de ipython, solo escribe magia.
%matplotlib inline
o
%matplotlib notebook
Puedes trazar fácilmente con los gráficos de networkx usando el cuaderno jupyter. Ver primer ejemplo.
O, puedes usar Bokeh
para trazar gráficos, lo que agrega características útiles. El paquete holoviews
hace que sea aún más sencillo trazar gráficos con bokeh. Agrega características como el resaltado automático y la visualización de etiquetas mientras se desplaza sobre los nodos. Sin embargo, la edición de colores, etc. parece ser un problema.
%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))
Y aquí el ejemplo con bokeh y 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)
Deberías intentarlo y trazarlo en tu cuaderno para ver la diferencia.