Tangentially, I must highlight the underrecognized gvpr [1], the Graphviz Pattern Scanning and Processing Language and part of any Graphviz installation. In short, it is an AWK-like program to process your .dot files.
Combined with the fact that the DOT syntax allows for gradual precision, in that you can add directives to an existing DOT document to add details (shape, positioning...), and you can do pre-processing of a graph before passing it to the final layout and rendering engine.
(In fact, you could probably implement all of the linked layout engines in gvpr)
I used this at some point to generate a Factorio processing graph, organizing each layer by its minimum production depth (ie ores at layer 1, plates at layer 2, etc...)
I’ve been working in this area recently, none of the layout engine are very good, they essentially apply the same algorithm to all the things when really a graph is often a collection of different patterns and what makes sense is often semantics driven. So yes built my own, the use case is representing cloud and enterprise architectures. Have a decent layout engine now, and created a declarative dsl for the agent to interact with, but the agent sucks, feels like we need to hand roll a lot of features/skills
aezart 3 days ago |
I occasionally use graphviz and pretty much always wind up frustrated with it. The syntax is pedantic and the resulting output is pretty ugly for all but the simplest graphs.
I tried most of these declarative diagrams, while they work to some degree, the best outcome I had was with drawio but you should have the skill installed.
brians 3 days ago |
If you don't even explain neato vs fdp, what's the point?
Combined with the fact that the DOT syntax allows for gradual precision, in that you can add directives to an existing DOT document to add details (shape, positioning...), and you can do pre-processing of a graph before passing it to the final layout and rendering engine.
(In fact, you could probably implement all of the linked layout engines in gvpr)
I used this at some point to generate a Factorio processing graph, organizing each layer by its minimum production depth (ie ores at layer 1, plates at layer 2, etc...)
[1] https://graphviz.org/docs/cli/gvpr/