tags:

views:

728

answers:

2

Hello,

I found the following graph libraries, but I am not sure which one I should use. Maybe there are some more...

What it should do:

  • draw a undirected network map
  • come as header only or static lib for Windows
  • the output format should be user editable
  • Visualization is then done by some other application which is capable of the output format

Graphviz is the only one I tried so far, but I found no static lib for it, I failed to build it by my own and the documentation could be better. Therefore I looked around and found these other three libs.
I would be glad to get some recommendations which lib to choose.

Thanks,
/mspoerr

EDIT:
I am not sure which components I need. I want to achieve the following: Network device information is parsed by my application and then it computes a neighborship table of all devices. This neighborship table should then be visualized. It would be nice to get two output formats - a picuture (i.e. png, gif or jpeg...) and a user editable format. For the last mentioned the user will then start a 3rd party application to edit the graph. But graph comutation should be done by the used graph lib.

Maybe I am too naive, but if this the case, please clarify what I am missing.

EDIT #2
Added OGDF

+3  A: 

I think there is no solution for you.

Boost::Graph is the only header only library. And for drawing the graphs, boost relies on graphiz (and requires to be binary built library).

I would suggest to use graphiz as a standalone executable, and your application runs the graphviz executable.

Tristram Gräbener
Thank you for the answer. I thought that the BGL could do thid by its own. What am I missing?
mspoerr
Hello again, I found that BGL is able to produce GraphML and DIMACS Max-flow files; Lemon is able to produce EPS, Lemon Graph Format, DIMACS and Nauty files. igraph can write in GraphML, GML or Pajek
mspoerr
I was thinking of a graphical representation (jpeg, png, whatever). For that GraphML or any format won't help. You still need something for the rendering.
Tristram Gräbener
ah - ok. But Lemon with EPS output would then be an option...
mspoerr
+2  A: 

I now tested the libs mentioned above and decided to use OGDF with GML output.
Reasons why I don't use one of the others:

  • Graphviz: too much overhead. a static lib is mandatory for me and this is hardly possible with Graphviz. There are many additional components needed besides the library. The only functionality of GraphViz I would like to have is the rich number of output formats.
  • Boost Graph Library: Very complicated in my opinion. Normally I like the Boost libs very much.
  • Lemon: There seems to be no layout algorithms.
  • igraph: would also work, but OGDF seems to be easier to use;

Why GML?
There are some free graph applications (yEd, GoVisual Diagramm Editor) which support GML. My tool only generates the graph and it should then be edited elsewhere.

mspoerr