[1]: https://bramp.github.io/js-sequence-diagrams/ [2]: http://flowchart.js.org [3]: https://mermaidjs.github.io/
Originally what spurred me towards text based diagram generation was a visceral hatred for out of date visio network maps, so I wrote a script to automatically update network maps and diffarchive old ones so I could walk back in time on the network.
It was something that could be put in a report and look nice (due to manual layout control) vs the automap generation of things like LibreNMS/Zabbix/Nagios.
It provides bunch of types of diagrams, including GUI mockups (salt), gantt charts, all UML types, time diagrams etc.
It can also export to ASCII art, totally awesome.
Plugins are there for everything, such as Gitlab, VSCode, Redmine etc. and you can easily integrate it otherwise.
Highly recommended.
It seems to me that the syntax is rather simple and minimal.
- scoping for node and edge styles (among other things, this would help
towards copy-pasting graphs into subgraphs)
- named styles (e.g. define *”shape=foo”* as red rectangles with italic
text)
- more consistency in graph attributes across layout engines
- more intuitive effect of graph attributes on layout
- easier way to style node content (the ‘old’ way was ugly, but the
restricted subset of html isn’t that nice, either)
- ability to switch layout engines in subgraphs (among other things,
this would help towards copy-pasting graphs into subgraphs)
Also (from the article) ”If your rankdir is vertical, then you need to use {} to change the record type’s direction.”, IMO, is not what most users would expect, and is a pain in the ass when experimenting to find an optimal layout engine/graph attributes pair.I haven't thought about it enough but I am a big fan of Elm's declarative graphics [1]. I think starting with something like that would be interesting.
n1 = circle "node 1"
n2 = square "node 2" |> outlined red
main = graph [edge n1 n2, edge n2 n1]
[1]: https://csmith111.gitbooks.io/functional-reactive-programmin...For graph layout, tools worth looking at include OGDF (an open source C++ library), the commercial yFiles Java library with free yEd editor/layout tool (includes support for GraphML attributes), and Gephi (an open source Java-based graph layout/visualization tool).
If your graph represents some type of directed dataflow, then maybe Google's Tensorboard graph visualizer (intended primarily for neural nets) is of interest - it's open source and very slick (esp. wrt subgraph collapsing/expanding), but you'd be on your own in terms of importing a foreign graph format.