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.
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.
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
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 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.
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.
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.
Respuestas:
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
fuente
networkx
es instalable a través depip
, mientrasigraph
que no lo es. Esto hace que seaigraph
más difícil de usar como dependencias en sussetup.py
archivos.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.
fuente
¿Has mirado en python-graph ? No lo he usado yo mismo, pero la página del proyecto parece prometedora.
fuente
Además, es posible que desee echar un vistazo a NetworkX
fuente
Utilice la biblioteca de gráficos Boost: enlaces de Python .
fuente
Eche un vistazo a esta página sobre la implementación de gráficos en python .
También puedes echar un vistazo a pygraphlib en sourceforge.
fuente
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/
fuente
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.
fuente