I was building some improvements into my desktop text analysis software “Thoth” this weekend, and thought it was a good time to review my options for generating publication-quality network diagrams from the output. I’ve written my own tools in the past for generating a variety of network graph layouts (force-directed, kamada kawai, layered hierarchical, radial hierarchical, force-directed with geodesic grids, etc., all in my Network Insight software). However, getting them to export in a nice vector format for use in publications or the Adobe suite was always a tricky part, and I prefer to take advantage of the great layout tools already available rather than recreating the wheel.

Since I’m using these tools to customize and create professional-quality graph diagrams, using data auto-generated from another application, it means I’m reviewing these tools from a pretty specialized perspective. However, maybe my thoughts can help guide your own, or at least let you know about some of the great tools out there.

yEd

My current favorite still remains yEd from yWorks. It’s completely free for non-commercial, and cross-platform.

Strengths: It offers an amazingly comprehensive set of layout options and import options from numerous graphing languages (GML, GraphML, yWorks’ proprietary YGF, XML, GedCom, TGF, and GraphViz .DOT with a little work). It provides a lot of options for node / connection graphics, shapes, fills, and even has some node auto-sizing and auto-coloring algorithms based upon network metrics like centrality. Via SVG, it can export fully vectorized images for publication or import into your Adobe suite. It’s free, did I mention that? It has a customized dock that will let you create a window of your favorite layout settings for quick re-application, and every layout method has lots of options for you to tweak.

I’m particularly fond of the annular (circular) and force-directed layouts, although the software’s ability to layout connections in a variety of methods (curved, organic, orthogonal, circuit-style) is pretty impressive too. You can interface directly with the nodes/connections to manually touch up your layout, and have yEd perform layouts on only sections of the entire graph (although I have yet to be happy with the results of this option).

yEd also lets you export to a small number of other graphics formats, giving it some functionality for use with other graphics programs.  It also has a few random network generation algorithms, a lot of editing / formatting toolsets (rotations, fit-to-label, grids and aligning) and even some basic analytical tools (centralities, clustering).

Weaknesses: It’s a java-based app, so it’s interface looks and feels clunky. The app never remembers my preferences, so it’s not native and tends to eat a lot of memory. There are unintuitive UI elements; I constantly end up accidentally creating new nodes when all I wanted to do was move a node or add a connection. While the software has a random graph generator (grid, hierarchical, planar), the planar networks it creates are pretty sad and aren’t complete (connected) even if you select the “complete” box; graph generation algorithms are well documented, so it’s disappointing they can’t do better here.

Omnigraffle

I’ve used Omnigraffle in the past for its integration with Applescript, and it definitely has the best OSX GUI integration of the bunch. The $200 professional version has additional options for subgroups and group layouts, as well as SVG export.

Strengths: OmniGraffle offers a wide variety of image export options including EPS, PDF, SVG, and a variety of bitmap image formats too; so, publication quality export is definitely available. While the suite of layout methods is limited (force-directed, radial, hierarchical, and some sort of force-directed circular), the algorithms do a decent job of making pretty graphs. There’s a lot of control over graphics and shapes for your nodes and connections, including shadowing, gradient fills, and 3D effects which are quite nice.

ogog2

Weaknesses: Like yEd, its GUI can be unintuitive at times and requires a learning curve. It has few graph import options, but they do exist; I work with the GraphViz .DOT format to import into Omnigraffle successfully, and will probably experiment with OmniGraffle’s own “gdiagramstyle” format since it’s a pretty structured XML based format that seems to support complex features like opacities. OmniGraffle only saves to its own graph formats.

GraphViz

GraphViz is sort of the big name in the area of network diagramming, and you’ll find a lot of academic work that used GraphViz visualizations. It’s open source, and you have to love that. It has versions compiled for all major platforms. However, it really fails for me in terms of flexibility and ease-of-use.
Strengths: It has a solid suite of layout algorithms.

GraphViz natively exports to something like 40 formats, including PDF, SVG, and EPS vector formats. So, whatever you can generate, you can use in high-resolution publications or scale up as large as you like without losing detail.

Weaknesses: If I said the other tools had unintuitive interfaces, it’s not by comparison to GraphViz. You can’t manually interact with nodes or connections, and all of your editing options are limited to a single tool window with “graph, node, connection” settings shown in one long, unexplained list. GraphViz is very limited in terms of graphics; no 3D features to speak of, and all graphs end up looking somewhat boxy and flat. The toolbar does have built-in “what is this?” descriptions, but they often aren’t very helpful, eg: “Packmode: This indicates the granularity and method used for packing (cf. packMode). Note that defining packmode will automatically turn on packing as though one had set pack=true.” After playing around with it for 20 minutes, I still couldn’t make a complex graph I imported layout using a force-directed algorithm. I also wasn’t able to create nodes or connections manually.

AiSee

AiSee is another cross-platform tool that looks to have the broad capabilities of GraphViz; it has an impressive gallery of different layout types. Once imported, you have some interaction capability with nodes and edges. Overall, I found it more intuitive and useful than GraphViz, especially the Layout menu was easy to interact with. However, it was far less easy to use than yEd or OmniGraffle.  Like Tom Sawyer Software, AiSee seems focused on providing graph visualization libraries for integration into commercial software libraries.
Strengths: AiSee offers an unusual set of network navigation tools, such as “show neighbors”. It has a reasonable selection of output formats, including PDF, SVG, and EPS vector graphics and the usual bitmap image options. The software is free for non-commercial use.  Of the four tools I’ve looked at, it’s the only one that has a built-in layout animation capture option, if you want to demonstrate changes to your graph.

Weaknesses: Like GraphViz, I wasn’t able to create nodes or connections manually.  The limited formatting options means the graphs looked flat and boxy; I couldn’t find any 3D, shading, or shadowing options.  As far as I can tell, AiSee only imports its GDL data format.

Summary

I think for some applications I’m going to have to stick to yEd, but I’m going to implement some export options that will allow me to work with OmniGraffle for a additional variety and flexibility.  I’m sure I missed some details since this post was based only on a couple hours’ mucking about with the various packages I could find; I invite corrections from those who know better, but perhaps even my errors will be an indication of the learning curves you might expect with each package.

In the future, I may review network animation visualization tools like SkyRails…. those are always splashy!


Share/Save/Bookmark Subscribe | Permalink | Trackback

 

 Next Post: Social Media Analytics Profiling: Toward Machine Learning

 


Leave a new comment

(required)
(required)