What good graph layouting, editing & drawing tools are there?
While doing software development I periodically come across the need to draw some graphs for my own use. Sometimes they illustrate relationships in a DB, sometimes they illustrate relationships of code files or classes, other times there are other objects... Anyway, the basic need is the same - I've got some set of nodes & edges that I would like to lay out neatly, add some informative colors/texts/styles and optionally print it out in the end (over several pages if necessary).
Is there a tool that would allow me to do this easily? Features that I would expect:
- Import basic node/edge information from a file (the raw data that I have extracted from the DB/code/whatever);
- Automatically layout some or all nodes in the graph;
- Allow to manually adjust node and edge placements;
- Node group manipulation features (relayout, rotate, scale) would also be very nice;
- Ability to manipulate visual aspects of the picture - change lines, colors and fonts; add arbitrary texts and pictures (possibly attaching them to nodes/edges);
- Ability to modify node contents (sometimes I need just a simple text; sometimes it's a little table; sometimes it's a bulleted list; etc.)
- Save/load/print (including to several pages with overlapping areas for gluing together)/export to image (both vector and raster with anti-aliasing).
Added: Here is a sample graph I tried to visualise most开发者_如何学JAVA recently. I'd like to get a useable layout that needs minimal tweaking before it can be printed.
Graphviz is a long-standing popular one. I really like yEd's layout engine, which I feed GML data to (but it supports other formats).
You can use Cytoscape, that's a graph visualization tool. I like the forced directed lay out.
I find Gephi very nice, mainly for two tasks:
- Browsing the graph, i.e. hidding some parts, moving nodes, trying to understand its properties by playing with it.
- Rendering it to export it for a presentation or article?
There are nice layout algorithms included by default, and you can easily install plugins from within the tool.
And if your goal is to get an informative and readable representation of your graph, you might consider using hive plots. Description, examples and tools are available from this page. The basic idea is to use a deterministic method (by opposition to force-based layouts) to place nodes, based on a few attributes or topological measures. The resulting representation allow efficiently comparing different graphs, or even the same graph considered from different perspectives.
精彩评论