Python Graph Library [cerrado]

354

Estoy escribiendo una aplicación de Python que hará un uso intensivo de una estructura de datos gráficos. Nada terriblemente complejo, pero estoy pensando que algún tipo de biblioteca de gráficos / algoritmos de gráficos me ayudaría. Busqué en Google, pero no encuentro nada que me salte particularmente.

Alguien tiene alguna buena recomendación?

cpatrick
fuente
¿Qué algoritmos gráficos estás buscando?
Andrew
1
Amoss, estaba buscando una biblioteca de gráficos que pudiera calcular los caminos más cortos dados los pesos. Cosas básicas, de verdad. Terminé yendo con networkx. Funciona bastante bien Sin embargo, no he tocado el proyecto en mucho tiempo. Esta pregunta se hizo hace más de un año.
cpatrick
108
Es sorprendentemente extraño que haya preguntas tan útiles y que obtener muchos votos como este se pueda clasificar como "no constructivo".
Jim Raynor
1
También puede usar "base de datos de gráficos nativos" como neo4j, luego usar un enlace de python para discutir con el db?
A STEFANI
3
@JimRaynor "No constructivo" era una vieja trampa para todos. Las razones cercanas se han actualizado para mejorar (no perfectamente, pero mejor) cubren el uso previsto. Hoy, esto se cerraría como una pregunta de recomendación.
jpmc26

Respuestas:

237

Hay dos excelentes opciones:

NetworkX

y

igraph

Me gusta NetworkX, pero también leo cosas buenas sobre igraph. Rutinariamente uso NetworkX con gráficos con 1 millón de nodos sin ningún problema (se trata del doble de la sobrecarga de un dict de tamaño V + E)

Si desea una comparación de características, consulte esto en la lista de discusión de Networkx

Hilo de comparación de características

Gregg Lind
fuente
44
En particular, lo que me gusta de Networkx ... es principalmente en Python, fácil de editar y entender el código fuente, y se siente principalmente "pitón".
Gregg Lind
1
Me preguntaba, ¿lo has usado con un * o algoritmos similares?
dassouki
44
Acabo de evaluar ambos. networkxes instalable a través de pip, mientras igraphque no lo es. Esto hace que sea igraphmás difícil de usar como dependencias en sus setup.pyarchivos.
exhuma
3
Como una actualización para 2013, voy con networkx solo b / c, tiene un github y se ve más actualizado de todas las opciones en esta respuesta y las demás
Мати Тернер
1
igraph también tiene un github: github.com/igraph/python-igraph
user_1_1_1
105

Me gustaría conectar mi propia biblioteca de gráficos python: graph-tool .

Es muy rápido, ya que se implementa en C ++ con Boost Graph Library, y contiene muchos algoritmos y una extensa documentación.

Tiago Peixoto
fuente
66
La herramienta gráfica es fantástica.
Sean
55
+1 para herramienta gráfica. Lo hemos estado usando en nuestro laboratorio. Es realmente rápido en comparación con otras bibliotecas de Python. Además, dibujar y mostrar gráficos es bastante impresionante en la herramienta de gráficos. ¡Sin embargo, toma mucho tiempo compilar!
Dilawar
55
Desafortunadamente no hay soporte para Windows :(
Mike Chaliy
2
@TiagoPeixoto Esto parece muy prometedor, pero no se puede usar en Windows. Estoy atascado con NetworkX, encontrándolo demasiado lento.
Naman
2
@ColonelPanic Esta es una pregunta frecuente, consulte graph-tool.skewed.de/download : "La respuesta corta es que no se puede hacer, ya que la herramienta gráfica depende de manera crucial de algunas bibliotecas C ++ (excelentes) como Boost, que son no se puede instalar a través de pip ".
Tiago Peixoto
32

¿Has mirado en python-graph ? No lo he usado yo mismo, pero la página del proyecto parece prometedora.

zweiterlinde
fuente
10

Además, es posible que desee echar un vistazo a NetworkX

lmount
fuente
6

Utilice la biblioteca de gráficos Boost: enlaces de Python .

Franco
fuente
1
Buen Dehmann, fui por eso primero (ser un programador de C ++ de oficio y un impulso absolutamente amoroso), pero esto me asusta: los enlaces de BGL-Python ya no se mantienen <a inicio de página>
cpatrick 03 de
3
Mire la herramienta gráfica en su lugar, está basada en bgl y activa.
Sean
0

Estoy teniendo más suerte con pydot. Algunos de los otros son difíciles de instalar y configurar en diferentes plataformas como Win 7.

http://code.google.com/p/pydot/

syvex
fuente
0

Secundo la sugerencia de zweiterlinde de usar python-graph. Lo he usado como base de un proyecto de investigación basado en gráficos en el que estoy trabajando. La biblioteca está bien escrita, es estable y tiene una buena interfaz. Los autores también responden rápidamente a consultas e informes.

jtguerin
fuente