|
|
|
|
|
by _Robbie
3443 days ago
|
|
Graphviz is only used to find the positions for the nodes using Graphviz's Neato algorithm. The nodes and the lines themselves are all rendered using the Haskell library Diagrams [0]. The next step for the project is to improve graph layout (see Glance issue here [1]), which likely means moving away from Graphviz. What tools to use for interactivity or an editor is still up in the air. [0] http://projects.haskell.org/diagrams/ [1] https://github.com/rgleichman/glance/issues/1 |
|
GraphViz's "dot" algorithm (i.e., Sugiyama-style graph drawing algorithm) [2] should give a fairly compact representation that is organized into layers, and avoids crossing edges in at least simple cases, but rotating the nodes would again "spread out" the layout by forcing increasing height of each layer.
Under "Possible solutions" you mention "create a better graph layout algorithm" - that sounds quite ambitious, wouldn't this be a PhD-thesis-level research task in itself?
The only graph drawing library I'm aware of that might be competitive with GraphViz's algorithms is MSAGL [3] but that's a .NET library.
[1] https://github.com/rgleichman/glance/issues/1
[2] https://en.wikipedia.org/wiki/Layered_graph_drawing
[3] https://www.microsoft.com/en-us/research/project/microsoft-a...