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...)
Thanks! I've used graphviz for more than a decade and had never learned of gvpr.