I think it’s cool that laying out graphs nicely is so complicated that people just use Graphviz everywhere instead of trying to re-implement it.
Some of us use TikZ.
The problem is that it gives everything a “sameness” that not everybody can see, but when you can it’s kinda annoying, like PDFs produced by Latex.
As someone who doesn’t like Computer Modern, this hits a lot.
Many causalities have happened trying to reproduce the artifacts of Murray Hill.
Adding to the list and tossing out a great tool: PlantUML uses Graphviz for a ton of its visualizations.
Seconded, PlantUML is one of the best tools in my toolbox.
plantuml is fantastic. Learning (some of) it has been one of the best investment in productivity i did in 2020.
Another nice one to add to the list is diagrams. Finally, it’s also worth checking https://ivanceras.github.io/svgbob-editor/
There are lots of implementations of the spring-like graph layout (like neato) because that’s pretty easy to implement (I’ve done it myself). But the cool part of graphviz is that it has so many different layouts and they all use the same input and output formats. And some of the layouts like dot are really challenging to implement correctly.
There’s an article in the November 1986 edition of Byte Magazine that does a similar thing, only with cities and corresponding distances. It did a better job due to the distance constraint on the nodes.
I think that the consistent “flipping” of New England is because neato and fdp internally lay out the graph in some order (which is dependent on the order the nodes appear in the input file) before running the relaxation algorithm. Shuffling the entries in the input might have some effect.
Maybe some kind of additional spring force between centroids of adjacent cycles in the graph? Like, take the dual and use that?
I’m a bit hungover so this is probably wrong. Happy 2021! :D