In the past I used Graphviz to create drawing of graphs. It is a nice tools for small graphs.
But unfortunately, for large graphs, Graphviz really sucks:
- It always crossed edges that obviously could be drawn without a cross.
- It superimposes different texts, making them unreadable.
- It has no reusable styling (like CSS), and you need to repeat the same personalizations in nodes and edges over, over, and over again.
- If the user wants to, just say, swap the positions of two nodes. To do so, it is frequently needed to heavily hack the source file, probably screwing unrelated parts of the graph in the process.
- It is very easy that in order to make small changes in one isolated place of the graph, Graphviz forces heavy major changes elsewhere, frequently invalidating hours of working trying to convince it do draw it right.
- It wastes a lot of space in the graph and at the same time overcrowd some places so very tightly.
- Sometimes, some edges makes very tortuous paths to connect the source node with the target node, featuring strange useless curves and a lot of superimposed laterally running edges.
- It features avalanche effects. Trivial modifications somewhere in the graph, might perturb Graphviz heuristics, resulting in a completely different graph.
- A lot of bugs...
I want something that as, a user, I can simply:
- Define what the nodes are, possibly with style to be applied.
- Say what are the edges, possibly with style to be applied.
And then the program gives:
- A graph with the minimum possible number of crossings.
- Pretty aligned nodes are good.
I DO NOT want to:
- Add a lot of hacks on input just because the tool is too stupid to see that it could swap two specific node to remove a crossing.
- Manually need to position edges and nodes.
- Get avalanche effects.
So, what might be a good replacement of Graphviz? I really want it to be a free one.
Note: I don't care much about the format in which the graph should be input'd, as long as I can save and edit a file with the graph description (whatever is the language of such description). So, there is absolutely no need to still be at the dot language or anything similar (in fact, I would be more than happy to throw away my dot files entirely, as there are much more hacks than actual graph-describing there).