4
3

What are the best tools for large scale graph visualization for graphs with a few millions of nodes and hundreds of millions of edges?

asked Jul 04 '10 at 06:03

Vaclav%20Petricek's gravatar image

Vaclav Petricek
42031012

edited Jul 04 '10 at 07:09


10 Answers:

Cytoscape is quite routinely used in Bio Informatics, I am not sure if it can scale to few million of nodes though. http://www.cytoscape.org/

answered Jul 04 '10 at 11:37

DirectedGraph's gravatar image

DirectedGraph
56031424

With enough time and RAM, Cytoscape could probably generate something of use.

(Jul 06 '10 at 14:10) Mike Smoot

You may want to look into NetworkX for python. Although I have never used it on 1 million nodes.

answered Jul 04 '10 at 16:48

Mark%20Alen's gravatar image

Mark Alen
1323234146

Network X is useful for manipulating networks/graphs, developing algorithms etc. esp it allows fast development of graph algorithms using python. It can be scaled up to few hundred thousands nodes on a 32 bit machine and even few millions nodes on 64 bit machine. Though at that scale it is better to write main algorithm in C/C++.

Regarding visualization, Network X interfaces with matplotlib: http://networkx.lanl.gov/examples/drawing/index.html

Its a good solution if you want to say extract/manipulate subgraphs and save them as images/Pdfs for visualization.

(Jul 04 '10 at 16:56) DirectedGraph

For Java I'd recommend you JUNG. It's pretty stable, and it has been developing for quite some time.

If you don't use java I'd recommend you graphviz.(Most of the opensource graphing and drawing applications use graphviz at the backend) I think graphviz can handle the job, but it may take some time to process that amount of data.

Edit: Also note that graphiz has a utility called as sfdp which is for multiscale version of fdp for the layout of large graphs.

answered Jul 04 '10 at 16:52

cglr's gravatar image

cglr
1954811

edited Jul 04 '10 at 17:09

The answer depends entirely on what you want to do with the visualization. Can you say more?

At one extreme, maybe you want to draw the entire graph at once in a way that allows you to see certain global properties (namely?), but where you can't really see individual nodes or connections. This is much of the focus of InfoVis, the IEEE Symposium on Information Visualization. Here are some old Internet connectivity maps and some more pretty pictures (not limited to graphs).

At the other extreme, you want a graph browser that lets you navigate around and study local details (namely?) but may not show the whole graph at once. Ben Bederson has done some work in this space and so have I, but I'm not sure whether it's what you want.

The annual International Symposium on Graph Drawing is good, but last I looked, was more focused on smaller graphs (though that can be useful within a graph browser).

answered Jul 05 '10 at 13:30

Jason%20Eisner's gravatar image

Jason Eisner
463

edited Jul 05 '10 at 13:35

Jason's local graph (and hypergraph) browser is called Dynasty: http://www.dyna.org/Dynasty

"Dynasty is our graphical interface for browsing large (possibly infinite) directed graphs and hypergraphs. Dynasty shows only a small local subgraph around the cursor."

Although this might not by what Vaclav wants, it might be what another reader of the question wants.

(Jul 05 '10 at 14:30) Joseph Turian ♦♦

As an alternative to Cytoscape, you could also take a look at Gephi

answered Jul 06 '10 at 12:47

Steve%20Lianoglou's gravatar image

Steve Lianoglou
25055

Also consider Pajek

answered Jul 06 '10 at 13:17

Andrej's gravatar image

Andrej
210114

With the scale of graph you're talking about a visualization won't communicate a whole lot beyond a giant hairball. The other big problem is calculating a nice layout for something that large as most layout algorithms are fairly computationally intensive. You'd be much better off summarizing or in some other way reducing the size of your data and trying to present that instead.

Cytoscape has no built in limits, so with enough RAM (>50G?), you might be able to see something.

One clever idea I've seen implemented is to write PostScript code to iterate over an embedded adjacency list with pre-calculated coordinates. The PS file remained fairly small, but was still able render a giant graph quite nicely.

answered Jul 06 '10 at 14:09

Mike%20Smoot's gravatar image

Mike Smoot
312

Something new on the horizon is the VTK based Titan https://www.kitware.com/InfovisWiki/index.php/Main_Page

answered Jul 06 '10 at 18:43

Paul%20McIntosh's gravatar image

Paul McIntosh
314

edited Jul 06 '10 at 18:43

Just fixing the malformed link http://www.kitware.com/InfovisWiki

(Jul 21 '10 at 15:40) Brian Wylie

You might want to consider rolling your own layout, with Processing, or Python. This might be the long way around, and it may help in other ways in the long run, but it obviously is not a way that would keep you completely focused on your goal and getting a look at the data as fast as possible.

answered Jul 06 '10 at 20:41

th0ma5's gravatar image

th0ma5
463

I don't have any more tools to add to the very complete list above, but I've come across many effective (and not-so-effective) visualizations of large graphs (or whatever data I currently happen to be working with) by keeping up with info viz blogs.

You could try scanning the archives of these for some food for thought:

answered Jul 07 '10 at 13:50

aditi's gravatar image

aditi
85072034

Your answer
toggle preview

powered by OSQA

User submitted content is under Creative Commons: Attribution - Share Alike; Other things copyright (C) 2010, MetaOptimize LLC.