Spoiler : utilisez Vizdom.dev pour restituer les DAG écrits en langage DOT
En tant que développeur de logiciels, j'ai parfois travaillé avec des DAG, la plupart impliquant leur visualisation. Dans de nombreux cas, j’ai eu du mal à obtenir un rendu rapide et je me suis retrouvé à chercher des outils.
Heureusement, il y a le fidèle
Sauf…
*D'accord, techniquement , Graphviz peut être compilé dans WebAssembly, et quelques personnes talentueuses ont réussi à construire quelques projets intéressants tels que celui de dreampuf.
Par exemple, je souhaite stocker mon graphique dans
je pourrais utiliser
Malheureusement, je dois traduire DOT dans la saveur de démarque requise par Mermaid. Pour les représentations textuelles plus petites, je peux utiliser ChatGPT pour les convertir à ma place, mais il commet fréquemment des erreurs grammaticales et le graphique refusera de s'afficher, ce qui le rend peu fiable en tant que source d'automatisation.
Ensuite il y a
Ouais, j'ai construit un
…Et il est entièrement construit en Rust 🦀 avec un grand merci à
tl;dr — une application simple et spécialement conçue pour restituer rapidement les DAG en ligne
Minimiser les croisements de bords dans la génération de graphiques, un défi NP-difficile reconnu est essentiel pour créer des graphiques visuellement attrayants. L'équipe de Terrastruct a publié un remarquable
Cette version est particulièrement efficace pour le rendu de graphiques hiérarchiques, exploitant la complexité complexe de ce problème.
Le rendu de grands DAG (plus de 500 nœuds/bords) a tendance à être quelque peu lent avec Graphviz. Dagré + D3 (
Je pense que c'est un bon compromis pour les types d'attributs générés par programme que le DOT consommera.
Eh bien, c'est une comparaison entre des pommes et des oranges. Graphviz produit toujours d'excellentes visualisations et prend en charge davantage
Oui, je sais que c'est terrible de comparer des années d'expérience et d'outils autour de la séquence de plus de 30 ans qu'est Graphviz, mais pour mon cas d'utilisation restreint, c'est très rapide. Voici quelques temps de mur sur mon Macbook Pro M1 pour le rendu
* Il plante car l'indicateur emscripten, ALLOW_MEMORY_GROWTH=1
, n'est pas défini, limitant ainsi la mémoire totale à 16 Mo. Cela peut être corrigé, mais je n'ai pas trouvé de projet en ligne capable de gérer le graphique en question.
** L'exemple de graphique est rendu en sélectionnant Example 14
dans la vue de l'éditeur. L'actualisation de la page entraînera l'actualisation de la page et l'obtention d'un 414 car l'URI qui persiste dans le graphique est trop grand. Je travaille sur une meilleure solution pour stocker des graphiques plus grands.
Vous remarquerez que lorsque vous apportez des modifications au fichier DOT, l'URL met immédiatement à jour quelques paramètres de requête pour stocker les options de graphique et de mise en page, vous permettant de toujours référencer une copie de vos données simplement en stockant le lien !
Il y a un hic : les graphiques de grande taille ont tendance à rendre l'URI trop grand pour AWS (où
Je travaille actuellement sur une solution pour gérer des graphiques plus grands, mais en attendant, j'ai inclus quelques façons de conserver et de stocker des graphiques :
Voici un exemple de ce à quoi ressemble la vue de l'éditeur du
Accédez à la vue Éditeur et chargez Example 42
Parfois, je me suis retrouvé à essayer de comparer deux graphiques que j'avais générés, alors pendant que j'y étais, j'ai ajouté un
Légende des couleurs :
Voici quelques clichés :
Cliquez-moi : changer un ID de nœud de « e » à « f »
Cliquez-moi : ajout de « cluster=true »
Si vous avez des commentaires, n'hésitez pas à m'envoyer un message sur
Merci d'avoir lu — Si vous avez apprécié cet article, suivez-le !
[1] : ER Gansner, E. Koutsofios, SC North et K. . -P. Vo, « Une technique pour dessiner des graphiques orientés », dans IEEE Transactions on Software Engineering, vol. 19, non. 3, pp. 214-230, mars 1993, doi : 10.1109/32.221135.
Également publié ici