2010-02-15 15 views
18

Estoy buscando una biblioteca Java o Python que pueda representar gráficos en el lenguaje de puntos como archivo de imagen. El problema es que necesito una biblioteca que pueda usar en Google App Engine. Básicamente, estoy buscando una biblioteca que pueda convertir la descripción del texto de un gráfico dirigido en una imagen del gráfico.Biblioteca para renderizar gráficos dirigidos (similar a graphviz) en Google App Engine

Por ejemplo:

encubierta esta lista de aristas:

[A,B] 
[B,C] 
[A,C] 
[C,D] 

En esta imagen:

example image

Solía ​​Graphviz para este ejemplo, pero sé que no es posible para mí usarlo con Google App Engine.

Respuesta

17

Canviz es lo que está buscando: es una biblioteca JavaScript para dibujar gráficos Graphviz en el lienzo de un navegador web. Funciona con most browsers.

Usando Canviz tiene ventajas para su aplicación web a través de la generación y envío de imágenes de mapas de bits y mapas de imágenes en el navegador:

  • El servidor sólo necesita tener Graphviz generar texto xdot; esto es más rápido que generar imágenes de mapa de bits.
  • Solo se debe transferir el texto xdot al navegador; esto es más pequeño que los datos de imagen binarios, y, si el navegador lo admite (que la mayoría lo hace), el texto puede ser comprimido gzip- o bzip2.
  • El navegador web realiza el dibujo, no el servidor; esto reduce la carga del servidor.
  • El usuario puede cambiar el tamaño del gráfico sin necesidad de involucrar al servidor; esto es más rápido que hacer que el servidor dibuje y envíe el gráfico en un tamaño diferente.

Para verlo en acción, look here.

+3

¡Impresionante! Lo tengo trabajando en GAE. ¡Gracias! – rsideb

0

No creo que haya una biblioteca de python tan pura, lo mejor que puedes hacer es usar NetworkX, puede dibujar usando matplotlib o pygraphviz. Tal vez puede modificar el código matplotlib de networkx para dibujar en el lado del servidor, here es el código

Otro problema es que el motor de la aplicación google no tiene API de dibujo, pero puede usar SVG para generar dichos gráficos o puede ser google charts API tiene algo que ya está allí.

0

Puede echar un vistazo al flash basado en perfuse project si solo necesita mostrar un gráfico y no tenerlo incrustado como una imagen es aceptable.

Tienen algunas aplicaciones de ejemplo de la biblioteca como esta Dependency Graph.

12

Google Charts API now supports GraphViz experimentally. (Tenga en cuenta que todo el proyecto de gráficos de imagen está oficialmente obsoleto).

+2

¡Impresionante! Gracias por mencionar esto – rsideb

+0

Esto ya no es cierto. Esta API ha quedado obsoleta – Michael