views:

793

answers:

2

I have noticed that a recurring question is: “What is a good network graph library for language X”. I have played with quite a few of the libraries and I can share my experiences with you.

Python: NetworkX is a robust library which has built-in visualization but also has an interface to Graphviz using pyGraphviz. (pyGraphviz and NetworkX are written by the same author). NetworkX is open source and a very easy to use.

Perl: Circos is developed to visualize genomes and other highly complex datasets. It will always use a circular layout but that it often the most appropriate layout if your network is really large and its ‘modularity’ score is low. Circos is open source.

.Net: NodeXL is developed by Microsoft Research and is both an add-on for Excel and a .Net 3.5 library. It’s pretty open (for Microsoft’s standards) and uses Fruchterman-Reingold algorithm for visualization.

Java: JUNG2 has recently been released and is also a robust library. Has extended visualization and key metrics support. JUNG2 is open source.

UbiGraph: UbiGraph has interfaces to different languages including Python (and NetworkX has UbiGraph support), Ruby, PHP, Java, C, C++, C#, Haskell, and OCaml. It has very neat 3D visualization of network graphs using an XML-RPC server. The basic version is free, you have to pay for the professional version.

Standalone: You can always use an off-the-shelf package such as: Graphviz (Win, Linux, OSX), Pajek (Win), UCINET (Win), or even Visio (Win).

I am sure there are many more packages, but these are the ones that I have used myself. What other libraries or packages are available?

A: 

If you like the examples on this page, take a look at Mathematica’s graph plotting capabilities. The author of the gallery page, Yifan Hu, used to work for Wolfram Research, where he developed graph drawing algorithms for enormous graphs. Those algorithms are now integrated into Mathematica. Depending on how you intend to use the graph drawings, you could get a huge benefit by being able to use Mathematica to analyse your graphs; see for example this blog post.

andrew
+1  A: 

In Java, prefuse is by far the best graph drawing package. It has a very fast force-directed layout algorithm, and since you can tweak the parameters in real time and drag nodes around to get the graph looking the way you want, you’ll be able to explore and arrange much larger graphs than with any non-interactive system.

Try out this demo applet and you’ll fall in love with it too...

andrew