That's right. The initial layout in neato (which is really statistical multidimensional scaling) treats nodes as points, then draws shapes on top of the points without considering overlap. overlap=false or overlap=prism invokes a second layout phase as described in this report: https://link.springer.com/content/pdf/10.1007/978-3-642-0021...
There may be better methods by now - it would be a good intern project to look at that.
It would be a good idea to simply take the state centroids as an initial placement and onyl run the overlap removal phase.
There may be better methods by now - it would be a good intern project to look at that.
It would be a good idea to simply take the state centroids as an initial placement and onyl run the overlap removal phase.
In edge routing, we were really impressed with the "repulsive curve" work by Keenan Crane at CMU, https://www.cs.cmu.edu/~kmcrane/Projects/RepulsiveCurves/ind... - scroll halfway down for the graph layout examples.