Slashdot Mirror


Graphing Libraries for Java?

Node and Edge asks: "Many interesting problem domains involve some form of graph-based or graph-like information: network activity visualizations; social software; workflow management; P2P software development; and version control with branching, just to name a few. It is notoriously difficult for people to visualize a graph structure - unless it happens to be a strictly hierarchical tree-like structure, such as what we know from file-system explorers. Now, with all of that said, what graph libraries can you recommend? The following criteria apply, though they're not absolute: Java or Java bindings; simple to use for simple applications; and polished, extensible UI components. I'm familiar with JGraph, JUNG, Prefuse, OpenJGraph, Tigris GEF, Eclipse GEF, Graphviz, but have not had a chance to evaluate them all. Have you used any of these extensively? If so, can you provide any constructive advice? If not, can you recommend something else, ?"

3 of 51 comments (clear)

  1. Graph vs. Graphing by xocp · · Score: 5, Insightful

    I think there are two issue here: a data structure called by the name "graph" (http://en.wikipedia.org/wiki/Graph_(data_structur e)), and a means to visualize these structures.

    A library could address one or both of these topics. The title of this article is therefore somewhat misleading (i.e. just focusing on the graphical display of a graph).

  2. Finally a Slashdot Article about this! by rowanxmas · · Score: 5, Interesting
    It just so happens that I have done a lot of work in this area. Specifically in the business of making a good Open Source Java Graph library. For me there were several concerns.
    1. Open Source, Free
    2. Really Cool Looking Display
    3. Easy to add to
    4. Easy to use API
    5. Suited to my work ( Biology )
    At the time we were using yFiles, but it has several problems. Mainly, it is pay-for-it software, and hard to extend (i.e. no Interfaces, Node and Edge are final, not Open Source, so no custom code was possible.) However, yFiles has better layout than anyone else in this field.

    After evaluating many packages (which are listed here) which include the ones you have listed. We decided that our needs were not met and built our own. (First one on the preceding link) The main thing that I needed was a flexable UI, for showing Multi-Dimensional Data, and support for subgraphs, in a way that makes lots of sense in how I work, but I am not sure if it is suitable elsewhere yet, or not.

    The integrated software that uses my Graph Library is called Cytoscape and while still a work in progress is getting way better every release. In terms of the Graphing support, I think we are top notch, but we need to spend more time on algorithms and layouts ;) In addition we have an active development team that is well funded from MSKCC, UCSD, ISB, Agilent, and support from Unilever.

    I will be checking this thread throughout the weekend, so please reply if I can be of more help. And thanks for getting this onto Slashdot! I hope that more people will becocem involved in graphing, and especially in making file formats standard ;)
  3. Workshop on Visualization by jdfekete · · Score: 5, Informative

    Katy Börner and I have been organizing a workshop on Information Visualization Infrastructures, including graph drawing packages. The results are available at http://vw.indiana.edu/ivsi2004/

    There are lots of different tradeofs involved. One being interactive vs. static graphics. Another being the size of the graphs.

    For static graphs, such as class hierarchies and such, Graphviz (http://www.graphviz.org/ works fine and is easy to integrate in a system. For some graphs, Graphviz will not work at all so you need to try first.

    For large or dense graphs, above 1000 nodes or more than 4 times more edges than vertices (5n etc), node-link diagrams don't work at all. You could use a matrix but people are not used at reading matrices.

    For interactive visualization of graphs, Jung (http://jung.sourceforge.net/) and Prefuse (http://prefuse.sourceforge.net/) are fine if you have small graphs ()

    If you are a graph wizard and want to analyze large social networks, you can take a look at Pajek (http://vlado.fmf.uni-lj.si/pub/networks/Pajek/) but it is not a free software and runs mostly on Windows.

    Other packages are ok for simple things, stereotyped things or more experimental things. You need to try them on your own problem to decide.