Pregunta

Estoy intentando hacer algunas visualizaciones de gráficos interactivos en mi aplicación web Django usando Python.Encontré Graphviz y pude generar un gráfico estático (como una imagen .png) en mi aplicación usando Pydot (interfaz Python para el lenguaje de puntos de Graphviz).

Sin embargo, estoy buscando hacer que mis gráficos sean más interactivos, como poder resaltar nodos al pasar el mouse sobre ellos, hacer que se pueda hacer clic en los nodos, arrastrar los nodos a una ubicación diferente y hacer zoom en el gráfico.

¿Hay alguna manera de hacer esto en Graphviz?¿O en general hay alguna manera de hacer un gráfico interactivo para mi aplicación Django sin tener que usar Flash?No quiero usar flash porque no estoy muy familiarizado con él y también porque quiero visualizar un conjunto de datos bastante grande.

¿Fue útil?

Solución

Intentar El kit de herramientas de Javascript Infovis.Todo está implementado en un lienzo de navegador, por lo que no se necesita Flash, sólo un navegador decente con soporte para <canvas> etiqueta.Ejemplos de visualización de gráficos son aquí, aquí y aquí, otras demostraciones son aquí.

Otros consejos

Hay canviz ( Fuente ).Sin embargo, los nodos aún no están mejorados (estaban en una versión anterior que usaban mapas de imagen. La base de códigos ha cambiado y ahora la representación ocurrió el lado del cliente utilizando JavaScript, por lo que aún no está habilitado enlaces.

Esto es lo mejor que encontré, sin embargo, son un montón de otros.

MXGRAPH (NO GRATIS)

Puede usar d3.js para visualización de gráficos (consulte aquí para ejemplos de visualizaciones de gráficos en D3js , y consulte Cómo hacer una visualización de red interactiva ).

para back-end (si es necesario tener algo más que un archivo JSON para representar el gráfico, es decir, si es grande), puede usar un módulo Python para gráficos, NetworkEx .

Nota lateral, aquí es My simple ejemplo de visualización de gráficos interactivos :

ingrese la descripción de la imagen aquí

Puede hacer algo así muy simplemente con DOT y HTML.

Generar mapas del lado del cliente y superponerlos sobre sus imágenes PNG.(Inserte el código del Mapa en la página HTML.)

dot test.dot -Tpng -o test.png -Tcmapx -o test.map

Las exportaciones SVG están conectadas directamente.

Parece que un enfoque que se ajusta a lo que está tratando de hacer podría ser usar SVG en el navegador A / o Javascript.Creo que la mayoría de los navegadores modernos admiten SVG y le permitirían hacer algunos gráficos interactivos bastante frescos.El servidor podría proporcionar una alimentación JSON de los puntos de datos necesarios para representar el gráfico.No conozco la mano las herramientas que están disponibles, pero he visto algunas demostraciones de gráficos bastante geniales construidas sin flash a través de los enfoques del lado del cliente.

Como alternativa, podría pre-renderizar un montón de imágenes de gráficos que el usuario probablemente veía y luego simplemente buscar a quienes el usuario interactúa con el gráfico.Esto podría funcionar si los gráficos no cambian con frecuencia y, si el número de alteraciones que haría el usuario, es pequeño, pero tendría que volver a hacer cada vez que cambie la gráfica.

He hecho lo que estás tratando de hacer hace demasiado tiempo. El contexto fue visualizando un esquema de Salesforce gnarly.

Lo primero, Graphviz es solo bueno para trazar, no realmente para dibujar. Puedes generar SVG, pero no pude ponerlo a trabajar con I.E. después de un esfuerzo considerable de (lo que resultó ser infructuoso).

Encontré este applet Java zgrviewer para ser suficiente, y mientras los applets se sienten un poco anticuado para Mi gusto, funcionó muy bien del navegador.

Básicamente codificado a mano un servicio de invocación de procesos que generó los archivos de puntos y lo hizo pensando (Dotty, ¿se piensa?) - El applet de Visulazation lee el formato de archivo DOT nativo.

También vino algo en lo que pensé para un V2 (que nunca sucedió): es parte del kit de herramientas de control AJAX, seadragon .

Si desea ver el código en ASP.NET, puedo publicarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top