Skip to content

Graph visualization #
Find similar titles

There are several visualization methods. For example, you can visualize the adjacency matrix or visualize nodes and links directly (node-link diagram). Node-link diagrams are in general more beautiful but they are not necessarily the best method.

Techniques and tools #

Web #

Python #

Desktop #

Recommended #

  • Gephi - has cool demos but hard to use.
  • Cytoscape - Better than Pajek. Probably one of the best solutions to draw a standard 2D graph figure. Still it is painful to use.
  • graph-tool - Analysis & visualization in a single framework. Can be difficult to install.

Maybe for some special occasions #

Dynamic network #

Visualizing large graphs #

Usually upper limit for the simple node-link viz is an order of 1k, when the graph is sparse. 500 or less is better. Cytoscape & Gephi are usually the standard tools (Gephi seems to be a bit faster but not well maintained) but it will be hard to visualize a graph with 10k or 100k nodes with these tools. Be sure to clarify what information you want to get from the visualization. Even if you can "visualize" it somehow, most likely you will just get a Ridiculogram. So, I'd strongly urge you to:

  1. Clarify what you really want to get from the visualization.
  2. Try to reduce the graph. There are two main approaches: coarse-graining (e.g. finding Community structure and consider each community as a node) or removing less important nodes and edges (e.g. applying k-core filtering with small k value, such as 1 or 2, may already give you a small enough network that you can visualize).
  3. Iterate.

If the network density is a problem, not the number of nodes, then you may think about filtering edges. If the network is weighted, one can filter weak edges to remove clutters. Probably the most ruthless filtering is Minimum spanning tree or maximum relatedness graph (see Googling social network paper). There are several methods available: see Weighted network.

If you still want to cram in as many nodes as possible, I think you may want to take the similar approach to the Paperscape visualization — forget about the edges and try to position the nodes based on whatever connections you end up. (you can show 'backbone' edges maybe) You may want to have some notion of clusters for the nodes to have a relevant annotation (Community structure).

File formats #

  • .dot: developed by Graphviz project. Simple. OmniGraffle can read it.
  • .net (pajek)
  • edgelist: probably the simplest and the most common format. You list edges (nodefrom and nodeto) with a separator (e.g. a tab)

Links #

Articles #

Examples #


Incoming Links #

Related Articles #

Suggested Pages #