¿Herramientas de Python para visualizar 100k Vertices y 1M Edges?

Estoy mirando para visualizar los datos, espero que sean interactivos. En este momento estoy usando NetworkX y Matplotlib, que maximiza mi 8gb cuando bash “dibujar” el gráfico. No sé qué opciones y técnicas existen para manejar un grupo * * de datos tan grande. Si alguien pudiera apuntarme en la dirección correcta, sería genial. También tengo una tarjeta GFX habilitada para CUDA si eso podría ser de utilidad.

En este momento estoy pensando en dibujar solo los nodos más conectados, digamos el 5% superior de los vértices con la mayoría de los bordes y luego rellenar los nodos menos conectados a medida que el usuario se acerca o hace clic.

No tengo ninguna experiencia con eso, pero el tulipán parece estar hecho para eso.

Debe preguntar en la lista de correo oficial de wxPython. Hay gente allí que probablemente pueda ayudarte. Me sorprende que matplotlib no sea capaz de hacer esto. Puede que solo requiera que reestructure su código de alguna manera. En este momento, las principales formas de dibujar en wxPython son a través de varios DC, uno de los widgets de FloatCanvas o para gráficos, wx.Plot o matplotlib.

Tal vez PyOpenGL ? Se puede utilizar junto con wxPython.

Edición: solo probé el rendimiento sin ninguna optimización, se necesitan 0.2s para dibujar vértices de 100k y 4s para dibujar bordes de 1M.

¿Has considerado graphviz ? No es interactivo, aunque fue diseñado desde el principio para manejar gráficos muy grandes (aunque los bordes de 1M pueden estar más allá de sus capacidades).

Hay un módulo de python ( pydot ) que hace que la interacción con graphviz sea simple. Nuevamente, no puedo decir con seguridad que se escalará a tus niveles. Sin embargo, debería ser fácil de descubrir: la instalación de ambos es simple.

hth

¿Has considerado usar ParaView o VisIt ? Estos son dos progtwigs de trazado interactivo que están diseñados para tratar y trazar (¡muy!) Grandes conjuntos de datos. Ambos también tienen una interfaz de scripts de Python, por lo que puede automatizar / controlar sus visualizaciones desde el intérprete de Python.

¿Has probado Gephi ?

Creo que se escala muy bien.