Biblioteca para representar gráficos dirigidos (similar a graphviz) en Google App Engine

Estoy buscando una biblioteca de Java o Python que pueda representar gráficos en el lenguaje Dot 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 de texto de un gráfico dirigido en una imagen del gráfico.

Por ejemplo:

Convierte esta lista de borde:

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

En esta imagen:

imagen de ejemplo

Utilicé Graphviz para este ejemplo, pero sé que no puedo usarlo con Google App Engine.

Canviz es lo que está buscando: es una biblioteca de JavaScript para dibujar gráficos de Graphviz en el canvas de un navegador web. Funciona con la mayoría de los navegadores .

El uso de Canviz tiene ventajas para su aplicación web sobre la generación y el envío de imágenes de bitmap y mapas de imágenes al navegador:

  • El servidor solo necesita que Graphviz genere texto xdot; Esto es más rápido que generar imágenes de bitmap.
  • Solo el texto xdot necesita ser transferido al navegador; es más pequeño que los datos de imágenes binarias y, si el navegador lo admite (lo que la mayoría lo hace), el texto puede comprimirse con 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, mira aquí .

La API de Google Charts ahora admite GraphViz de manera experimental . (Tenga en cuenta que todo el proyecto de Gráficos de imágenes está oficialmente en desuso).

Puede mirar el proyecto de perfuse basado en flash 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 este gráfico de dependencia .

No creo que exista una biblioteca Python tan pura, lo mejor que puedes hacer es usar NetworkX , puede dibujar usando matplotlib o pygraphviz. Tal vez usted pueda modificar el código matplotlib de networkx para dibujar en el lado del servidor, aquí está el código

Otro problema es que el motor de aplicaciones de Google no tiene ninguna API de dibujo, pero simplemente puede usar SVG para generar tales gráficos o puede que la API de Google chart tenga algo ya allí.