Spoiler: Verwenden Sie Vizdom.dev , um in der DOT-Sprache geschriebene DAGs darzustellen
Als Softwareentwickler habe ich gelegentlich mit DAGs gearbeitet – bei den meisten davon geht es um deren Visualisierung. In vielen Fällen fiel es mir schwer, ein schnelles Rendering zu erhalten, und ich suchte nach Werkzeugen.
Zum Glück gibt es die Vertrauenswürdigen
Außer…
*Okay, technisch gesehen kann Graphviz zu WebAssembly kompiliert werden, und ein paar talentierten Leuten ist es gelungen, ein paar nette Projekte wie Dreampufs zu erstellen
Ich möchte zum Beispiel mein Diagramm in speichern
ich könnte benutzen
Leider muss ich DOT in die Abschlagsvariante übersetzen, die Mermaid benötigt. Für kleinere Textdarstellungen kann ich ChatGPT verwenden, um sie für mich zu konvertieren, aber es macht häufig grammatikalische Fehler und das Diagramm lässt sich nicht rendern – was es als Automatisierungsquelle unzuverlässig macht.
Dann ist da
Ja, ich habe eine gebaut
…Und es ist komplett in Rust gebaut 🦀 vielen Dank an
tl;dr – eine einfache, speziell entwickelte App zum schnellen Online-Rendering von DAGs
Die Minimierung von Kantenüberschneidungen bei der Graphgenerierung, eine anerkannte NP-schwere Herausforderung, ist der Schlüssel zur Erstellung optisch ansprechender Graphen. Das Team von Terrastruct hat eine herausragende Arbeit veröffentlicht
Diese Version ist besonders effektiv für die Darstellung hierarchischer Diagramme und nutzt die komplexe Komplexität dieses Problems.
Das Rendern großer DAGs (mehr als 500 Knoten/Kanten) ist mit Graphviz tendenziell etwas träge. Dagre + D3 (
Ich glaube, es ist ein guter Kompromiss für die Arten von Attributen, die programmgesteuert generiertes DOT nutzen wird.
Nun, es ist ein Vergleich zwischen Äpfeln und Birnen. Graphviz erstellt immer noch großartige Visualisierungen und unterstützt mehr
Ja, ich weiß, es ist schrecklich, jahrelange Erfahrung und Tools mit der über 30-jährigen Erfolgsgeschichte von Graphviz zu vergleichen, aber für meinen engen Anwendungsfall ist es wahnsinnig schnell. Hier sind einige Wandzeiten auf meinem M1 Macbook Pro zum Rendern
* Es stürzt ab, weil das Emscripten-Flag ALLOW_MEMORY_GROWTH=1
nicht gesetzt ist, wodurch der Gesamtspeicher auf 16 MB begrenzt wird. Dies kann behoben werden, aber ich habe kein Online-Projekt gefunden, das mit dem betreffenden Diagramm umgehen kann.
** Das Beispieldiagramm wird durch Auswahl von Example 14
in der Editoransicht gerendert. Das Aktualisieren der Seite führt dazu, dass Sie die Seite aktualisieren und einen 414-Fehler erhalten, da der im Diagramm verbleibende URI zu groß ist. Ich arbeite an einer besseren Lösung zum Speichern größerer Diagramme.
Wenn Sie Änderungen an der DOT-Datei vornehmen, werden Sie feststellen, dass die URL sofort einige Abfrageparameter aktualisiert, um die Diagramm- und Layoutoptionen zu speichern, sodass Sie immer auf eine Kopie Ihrer Daten verweisen können, indem Sie einfach den Link speichern!
Es gibt einen Haken: Große Diagramme neigen dazu, den URI für AWS zu groß zu machen (wo
Ich arbeite derzeit an einer Lösung für den Umgang mit größeren Diagrammen, habe aber in der Zwischenzeit einige Möglichkeiten zum Beibehalten und Speichern von Diagrammen hinzugefügt:
Hier ist ein Beispiel dafür, wie die Editoransicht aussieht
Gehen Sie zur Editor-Ansicht und laden Sie Example 42
Gelegentlich habe ich versucht, zwei von mir erstellte Diagramme zu vergleichen. Während ich dabei war, habe ich noch eines hinzugefügt
Farblegende:
Hier ein paar Schnappschüsse:
Klicken Sie auf mich: Ändern einer Knoten-ID von „e“ in „f“
Klicken Sie auf mich: Hinzufügen von „cluster=true“
Wenn Sie Feedback haben, können Sie mir gerne eine Nachricht senden
Vielen Dank fürs Lesen – Wenn Ihnen dieser Artikel gefallen hat, folgen Sie ihm bitte!
[1]: ER Gansner, E. Koutsofios, SC North und K. . -P. Vo, „Eine Technik zum Zeichnen gerichteter Graphen“, in IEEE Transactions on Software Engineering, Bd. 19, nein. 3, S. 214–230, März 1993, doi: 10.1109/32.221135.
Auch hier veröffentlicht