tutorial - networkx python
Visualización de gráficos grandes con python y networkx. (1)
from matplotlib import pylab
import networkx as nx
def save_graph(graph,file_name):
#initialze Figure
plt.figure(num=None, figsize=(20, 20), dpi=80)
plt.axis(''off'')
fig = plt.figure(1)
pos = nx.spring_layout(graph)
nx.draw_networkx_nodes(graph,pos)
nx.draw_networkx_edges(graph,pos)
nx.draw_networkx_labels(graph,pos)
cut = 1.00
xmax = cut * max(xx for xx, yy in pos.values())
ymax = cut * max(yy for xx, yy in pos.values())
plt.xlim(0, xmax)
plt.ylim(0, ymax)
plt.savefig(file_name,bbox_inches="tight")
pylab.close()
del fig
#Assuming that the graph g has nodes and edges entered
save_graph(g,"my_graph.pdf")
#it can also be saved in .svg, .png. or .ps formats
Esto responde a su primer problema. Networkx no tiene la facilidad de hacer zoom en los nodos. Usa Gephi para esta funcionalidad. Gephi acepta una lista de borde en formato CSV y produce una visualización, donde el zoom se puede hacer de forma interactiva.
Estoy teniendo problemas con la visualización de gráficos grandes en python y networkx . El gráfico que se desea visualizar está dirigido y tiene un tamaño de conjunto de bordes y vértices de 215,000. Desde la documentación (que está vinculada en la página superior) está claro que networkx admite el trazado con matplotlib
y matplotlib
. En matplotlib
y networkx el dibujo se realiza de la siguiente manera:
import
networkx as nx
import matplotlib.pyplot as plt
#Let g be a graph that I created
nx.draw(g)
Recibo un error de memoria después de nx.draw(g)
, luego, normalmente haría plt.show()
o plt. [Some_function] para guardar el archivo en un formato eficiente, etc.
A continuación probé GraphViz. Desde la página de wikipedia, el formato de dot
se usa para los gráficos dirigidos y creé un archivo de puntos:
nx.write_dot(g, "g.dot")
Esto funcionó bien y tenía un archivo de puntos en mi directorio actual de 12 megabytes. Luego ejecuté el programa dot
(parte de graphviz para crear un archivo postscript):
dot -Tps g.dot -o g.ps
Esto ralentiza mi computadora, se ejecuta durante unos minutos y luego aparece Killed
en la terminal. Por lo tanto, nunca pudo ejecutarse ... Al leer la documentación de graphviz, parece que solo los gráficos no dirigidos fueron compatibles con la visualización de gráficos grandes.
Pregunta : Con estos dos intentos fallidos, ¿puede alguien mostrarme cómo visualizar mi gran gráfico utilizando python y networkx con aproximadamente 215,000 vértices y 215,000 bordes? Sospecho que con Graphviz tendré que generar en un formato intermedio (aunque esto no debería ser tan difícil, no será tan fácil como una función incorporada) y luego usar otra herramienta para leer el formato intermedio y luego generar una visualización. .
Por lo tanto, estoy buscando lo siguiente:
- Gráfico de salida de networkx en un formato intermedio
- Con el nuevo paquete / software / herramienta (idealmente interactiva con Python), lea el formato intermedio y visualice el gráfico grande
Si necesitas mas informacion dejame saber!