views:

739

answers:

6

I would like to create a graph (set of vertices connected with edges) and I'm looking for tools or libraries that can help me.

The graph is composed of at least 1000 nodes. Although it may be a little ambitious, I'd like to create one that has 60k nodes.

Obviously the resulting graph is meant to be artistic more than functional. For example, I've seen graphics illustrating a huge graph of IP addresses (would be convenient if I could remember where I had seen it).

Any suggested software or libraries or frameworks?

+8  A: 

Try Graphviz: it's a portable toolkit perfectly suited to the task you describe.

It provides a bunch of command-line tools among which a program named dot. You feed it with a simple description:

# This is MyGraph.dot
graph MyGraph {
  Node1 -> Node2;
  Node2 -> Node3;
  Node3 -> Node1;
};

Then run:

dot -Tpng -o MyGraph.png MyGraph.dot

And you get a picture. Layout is automatic.

This tool is also used by some freewares you may already know such as:

  • Doxygen, a documentation generator for C/C++ code (and others).
  • Cameleon 2, an IDE for OCaml.
  • Ragel, a state machine compiler.
  • The graph library available in Boost.
bltxd
+1  A: 

http://blog.gungfu.de/uploads/internetStructure.jpg

That image? You could use GraphViz, for which you'd generate no more than a simple textfile, and have that run over night.

Jasper Bekkers
What is this I don't even
Thomas Owens
no... not that image.
carrier
I think this is something cute the hosting website does for hotlinking its hosted images.
Aardvark
Aardvark is right... Jasper, unfortunately I think you're being down-voted as a result of this.
carrier
Removed hotlink :-)
Jasper Bekkers
yeah actually, that is the type of image i was talking about
carrier
+1  A: 

I have good experience with yEd and large graphs.

Gamecat
+1  A: 

There is Open Graph Drawing Framework if you want to code something in C++ yourself and the community edition of the GoVisual Editor of the commercial GoVisual libraries.

TheMarko
+6  A: 

I think that for very large graph layouts you might find that general purpose libraries like GraphViz will not be up to the task. This is because the layout algorithms they use, while appropriate for smaller graphs, fail miserably once your graph gets large enough. What you need is 'dirtier' layout algorithm. Maybe these links might help

and finally, especially:

Scott
+2  A: 

Check out "TextArc". It's a visual representation of a concordance and can display thousands of objects on screen using a triple-buffer (if I recall correctly).

alt text

Walrus seems to create some very nice-looking results (using hyperbolic space): alt text

Fernando