2009-06-02 20 views
38

He notado que una pregunta recurrente es: "Qué es una buena biblioteca de gráficos de red para el lenguaje X". He jugado con bastantes de las bibliotecas y puedo compartir mis experiencias contigo.¿Qué es una buena biblioteca de gráficos de red para el lenguaje X?

Python: NetworkX es una biblioteca robusto que se ha incorporado en la visualización, pero también tiene una interfaz para Graphviz usando pyGraphviz. (pyGraphviz y NetworkX están escritos por el mismo autor). NetworkX es de código abierto y muy fácil de usar.

Perl: Circos se desarrolla para visualizar genomas y otros conjuntos de datos de alta complejidad. Siempre usará un diseño circular pero a menudo es el diseño más apropiado si su red es realmente grande y su puntaje de 'modularidad' es bajo. Circos es de código abierto.

. Net: NodeXL ha sido desarrollado por Microsoft Research y es tanto un complemento para Excel como una biblioteca .Net 3.5. Es bastante abierto (para los estándares de Microsoft) y utiliza el algoritmo Fruchterman-Reingold para la visualización.

Java: JUNG2 ha sido recientemente publicado y es también una sólida biblioteca. Tiene visualización extendida y soporte de métricas clave. JUNG2 es de código abierto.

UbiGraph: UbiGraph tiene interfaces para diferentes idiomas, incluyendo Python (y NetworkX tiene soporte UbiGraph), Ruby, PHP, Java, C, C++, C#, Haskell, y OCaml. Tiene una visualización en 3D muy clara de gráficos de red usando un servidor XML-RPC. La versión básica es gratuita, tienes que pagar por la versión profesional.

Independiente: Siempre se puede utilizar un paquete off-the-shelf tales como: Graphviz (Win, Linux, OSX), Pajek (Win), UCINET (Win), o incluso de Visio (Win).

Estoy seguro de que hay muchos más paquetes, pero estos son los que yo mismo he usado. ¿Qué otras bibliotecas o paquetes están disponibles?

+0

SO es para preguntas. No hace una pregunta aquí, solo una lista. Si no lo convierte en un wiki comunitario, se cerrará como "no-pregunta" – lothar

+0

secundado - no-a-pregunta –

+1

Añadir "¿Hay otros?" al final ... Hay tu pregunta. ;) – John

Respuesta

0

Si le gustan los ejemplos en this page, eche un vistazo a las capacidades graph plotting de Mathematica. El autor de la página de la galería, Yifan Hu, solía trabajar para Wolfram Research, donde desarrolló algoritmos de dibujo de gráficos para enormes gráficos. Esos algoritmos ahora están integrados en Mathematica. Dependiendo de cómo pretenda utilizar los dibujos de gráficos, puede obtener un gran beneficio al poder usar Mathematica para analizar sus gráficos; ver por ejemplo este blog post.

1

En Java, el prefuse es de lejos el mejor paquete de dibujo de gráficos. Tiene un algoritmo de diseño muy rápido orientado a la fuerza, y como puede ajustar los parámetros en tiempo real y arrastrar los nodos para que el gráfico se vea como quiere, podrá explorar y organizar gráficos mucho más grandes que con cualquier otro. sistema no interactivo.

Prueba este demo applet y te vas a caer en amor con él también ...

8

Usted debe agregar a la lista graph-tool pitón. Es muy completo, y se implementa en C++, con Boost Graph Library, por lo que es mucho más rápido que las alternativas de solo pitón, como NetworkX.

Descargo de responsabilidad: soy el autor de graph-tool. :-)

2

Para Clojure, hay loom. Su WIP pero se ve bien.

2

El Stanford Network Analysis Project (SNAP) se escribió en C++ y se diseñó teniendo en cuenta el rendimiento para analizar grandes conjuntos de datos. El proyecto se ha ampliado con una biblioteca de Python, y tiene una documentación completa.

Tenga en cuenta también que el proyecto es un buen recurso para empirical data sets de una variedad de dominios.

0

yFiles es un conjunto de algoritmos de diseño que ofrece la gama más amplia de diferentes estilos de diseño sofisticados automáticos. Es una oferta comercial y está disponible para varias plataformas e idiomas populares: Javascript, Java, C# y más.

Hay un interactive online demo that shows many of the available algorithms y las bibliotecas se pueden evaluar de forma gratuita.

Descargo de responsabilidad: Trabajo para la compañía que crea estas bibliotecas, sin embargo, en SO no represento a mi empleador. Esta recomendación se basa en mi propia opinión. He visto muchas implementaciones de conjuntos de diseños diferentes para los idiomas anteriores en los últimos 15 años y no conozco ninguna otra implementación disponible que sea tan completa y extensible como esta.

Cuestiones relacionadas