Pergunta

What is the best tool to use to visualize (draw the vertices and edges) a graph with 1000000 vertices? There are about 50000 edges in the graph. And I can compute the location of individual vertices and edges.

I am thinking about writing a program to generate a svg. Any other suggestions?

Foi útil?

Solução

I also suggest Gephi software (https://gephi.github.io), which seems to be quite powerful. Some additional information on using Gephi with large networks can be found here and, more generally, here. Cytoscape (http://www.cytoscape.org) is an alternative to Gephi, being an another popular platform for complex network analysis and visualization.

If you'd like to work with networks programmatically (including visualization) in R, Python or C/C++, you can check igraph collection of libraries. Speaking of R, you may find interesting the following blog posts: on using R with Cytoscape (http://www.vesnam.com/Rblog/viznets1) and on using R with Gephi (http://www.vesnam.com/Rblog/viznets2).

For extensive lists of network analysis and visualization software, including some comparison and reviews, you might want to check the following pages: 1) http://wiki.cytoscape.org/Network_analysis_links; 2) http://www.kdnuggets.com/software/social-network-analysis.html; 3) http://www.activatenetworks.net/social-network-analysis-sna-software-review.

Outras dicas

I think, that Gephi could face with lack-of-memory issues, you will need at least 8Gb of RAM. Though number of edges is not extremely huge.

Possibly, more appropriate tool in this case would be GraphViz. It's a command line tool for network visualizations, and presumably would be more tolerant to graph size. Moreover, as I remember, in GraphViz it is possible to use precomputed coordinates to facilitate computations.

I've tried to find a real-world examples of using GraphViz with huge graphs, but didn't succeed. Though I found similar discussion on Computational Science.

https://gephi.github.io/ says it can handle a million edges. If your graph has 1000000 vertices and only 50000 edges then most of your vertices won't have any edges anyway.

In fact the Gephi spec is the dual of your example: "Networks up to 50,000 nodes and 1,000,000 edges"

Reporting back: I ended up coding graphml and using yEd for visualization (just because I am familiar with this combination. I bet gephi or graphviz would work fine and might even be better). Since I computed the location of all nodes, memory was not such big of an issue. Coding graphml is a little easier comparing to coding svg, since I don't have to explicitly specify the placement of edges.

PajekXXL is designed to handle enormous networks. But Pajek is also kind of a bizarre program with an unintuitive interface.

I would recommend to use Graphexp. Gephi is highly dependent on the RAM of your computer which is obviously limited. Graphexp on the other hand display's only a limited number of Nodes, through which you can navigate to other nodes. I have visualized a graph with 700 Million vertices using Graphexp as a UI and Janusgraph with HBase as a back-end storage. https://github.com/bricaud/graphexp

Take a look at Graphistry, they can handle 1Mil nodes and edges.

Licenciado em: CC-BY-SA com atribuição
scroll top