Spoiler: use Vizdom.dev para representar DAG escritos en lenguaje DOT
Como desarrollador de software, ocasionalmente he trabajado con DAG, la mayoría de los cuales implican visualizarlos. En muchos casos, me resultó difícil obtener un renderizado rápido y me encontré buscando herramientas.
Afortunadamente, existe el confiable
Excepto…
*Bien, técnicamente Graphviz se puede compilar en WebAssembly, y algunas personas talentosas lograron construir algunos proyectos interesantes como el de Dreampuf.
Por ejemplo, quiero almacenar mi gráfico en
Podría usar
Desafortunadamente, tengo que traducir el DOT al tipo de descuento que requiere Mermaid. Para representaciones textuales más pequeñas, puedo usar ChatGPT para convertirlas por mí, pero con frecuencia comete errores gramaticales y el gráfico se negará a representarse, lo que lo hace poco confiable como fuente de automatización.
Entonces hay
Sí, construí un
…Y está construido íntegramente en Rust 🦀 con muchas gracias a
tl;dr : una aplicación sencilla y especialmente diseñada para renderizar DAG en línea de forma rápida
Minimizar los cruces de bordes en la generación de gráficos, un desafío NP-difícil reconocido, es clave para crear gráficos visualmente atractivos. El equipo de Terrastruct ha publicado un excelente
Esta versión es particularmente efectiva para representar gráficos jerárquicos, aprovechando las intrincadas complejidades de este problema.
La renderización de DAG grandes (más de 500 nodos/bordes) tiende a ser algo lenta con Graphviz. Dagre + D3 (
Creo que es un buen compromiso para los tipos de atributos que consumirá el DOT generados mediante programación.
Bueno, es una comparación de manzanas con naranjas. Graphviz todavía produce excelentes visualizaciones y admite más
Sí, sé que es terrible comparar años de experiencia y herramientas en torno a la racha de más de 30 años que es Graphviz, pero para mi caso de uso limitado, es increíblemente rápido. Aquí hay algunos tiempos de pared en mi Macbook Pro M1 para renderizar
* Se bloquea porque el indicador de emscripten, ALLOW_MEMORY_GROWTH=1
, no está configurado, lo que limita la memoria total a 16 MB. Esto se puede solucionar, pero no he encontrado un proyecto en línea que pueda manejar el gráfico en cuestión.
** El gráfico de ejemplo se representa seleccionando Example 14
en la vista del editor. Actualizar la página hará que la actualice y obtenga un 414 porque el URI que persiste en el gráfico es demasiado grande. Estoy trabajando en una mejor solución para almacenar gráficos más grandes.
Notará que cuando realiza cambios en el archivo DOT, la URL actualiza inmediatamente algunos parámetros de consulta para almacenar el gráfico y las opciones de diseño, lo que le permite siempre hacer referencia a una copia de sus datos simplemente almacenando el enlace.
Hay un problema: los gráficos grandes tienden a hacer que el URI sea demasiado grande para AWS (donde
Actualmente estoy trabajando en una solución para manejar gráficos más grandes, pero mientras tanto, he incluido algunas formas de conservar y almacenar gráficos:
A continuación se muestra un ejemplo de cómo se ve la vista del editor del
Vaya a la Vista del editor y cargue Example 42
De vez en cuando, me encontraba tratando de comparar dos gráficos que había generado, así que mientras lo hacía, agregué un
Leyenda de colores:
Aquí hay algunas instantáneas:
Haga clic en mí: cambiar un ID de nodo de “e” a “f”
Haga clic en mí: agregando "cluster=true"
Si tiene algún comentario, no dude en enviarme un mensaje a
Gracias por leer. Si te gustó este artículo, ¡ síguelo !
[1]: ER Gansner, E. Koutsofios, SC North y K. . -PAG. Vo, “Una técnica para dibujar gráficos dirigidos”, en IEEE Transactions on Software Engineering, vol. 19, núm. 3, págs. 214–230, marzo de 1993, doi: 10.1109/32.221135.
También publicado aquí