Graphing Libraries for Java? 51
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, ?"
SVG! (Score:4, Informative)
Check out Batik [apache.org] and see if it can fit your solution.
Re:SVG! (Score:3, Informative)
Re:SVG! (Score:1)
Re:SVG! (Score:3, Informative)
please stop confusing SVG with some other technology that cannot display graphs. In fact my company uses SVG technology to display all kinds of information in graph format, rendering server-side SVG to PNG for display by a web browser using Batik. When browser support is fixed we will be able to simply send the SVG itself and provide more interactivity with the graph (not graphic) by being able to click data points, for example.
Re:SVG! (Score:2)
I think you're talking about the wrong type of graph. This Ask Slashdot is asking about representations of sets of vertices connected (or not) by edges (e.g
yEd (Score:4, Informative)
Re:yEd (Score:2)
Graphviz works pretty well (Score:3, Informative)
Re:Graphviz works pretty well (Score:2, Informative)
Graph vs. Graphing (Score:5, Insightful)
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).
Re:Graph vs. Graphing (Score:1)
Re:Graph vs. Graphing (Score:3, Informative)
The focus of JUNG is on handling graph data structures.
The focus of GraphVIZ is on generating graphical representations of graph structures.
The focus of JGraph, GEF, and others is on creating user interfaces to interact with graph structures.
Indeed, I'm interested in hearing about libraries that address any and all of: rendering graphs, algorithmic graph manipulation, interacting with graphs.
Re:Graph vs. Graphing (Score:3, Informative)
CEWolf (Score:2, Interesting)
gnuplot (Score:3, Informative)
gnuplot is kind in this domain. I don't know how you'd cleanly interface to it from inside a jvm other than spawning a native binary of gnuplot and feeding it text commands.
I do all my Graphs on paper napkins with Java (Score:4, Funny)
Now if I could just stop the shakes and not being able to sleep, I'd be fine.
Finally a Slashdot Article about this! (Score:5, Interesting)
After evaluating many packages (which are listed here [sourceforge.net]) 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 [cytoscape.org] 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
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
Re:Finally a Slashdot Article about this! (Score:2, Interesting)
I'm looking into GINY now and would be interested to hear more about the sub-graphing system that is mentioned on the main GINY page (I will read the detailed documentation, but maybe you can give an overview)?
Looks like it's possible to create so
Re:Finally a Slashdot Article about this! (Score:2)
Re:Finally a Slashdot Article about this! (Score:2)
xmas at u dot washington dot edu
Re:Finally a Slashdot Article about this! (Score:1)
I'm planning on trying the CVS version soon, and see if there's anything fancy going on there.
Re:Finally a Slashdot Article about this! (Score:2)
On graphviz (Score:2, Interesting)
What are you trying to *do*? (Score:4, Interesting)
JFreeChart works for us (Score:3, Interesting)
Why language-specific? (Score:1)
Re:Why language-specific? (Score:1)
Re:Why language-specific? (Score:2)
I'm a mechanical engineer. I can invest the time necessary to brush up on my C/Java/Python to use and implement a specific library, but it is often not the best use of my time.
I'd way rather find a library that works in the environment with which I am most comfortable (VB, if you're interested) and spend my time using it, instead of spending the time figuring out how to use something else.
For me, software is a tool
Any for Python? (Score:2, Interesting)
Simon
Matplotlib (Score:2)
Re:Matplotlib (Score:1)
Workshop on Visualization (Score:5, Informative)
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/ [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/ [sourceforge.net]) and Prefuse (http://prefuse.sourceforge.net/ [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/ [uni-lj.si]) 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.
Ptolemy (Score:2)
Graphs versus Plots (Score:3, Informative)
Just wanted to point this out to anyone new to the area: The graphs being discussed are NOT something you can make in excel, which should really be called plots or charts (in this context). These are not pie charts, or XY scatter plots, there is no least-squares fitting to a Graph.
What is meant by a graph (in this context) is a collection of nodes (aka vertices) and edges (aka links) connecting those nodes. An example graph could be a friendship network: People are represent as nodes and an edge falls between two nodes when those two people are on a first name basis.
So Graph Visualization is not trivial at all. Very complex relationships are modelled as graphs and good software is important. I for one use the graphviz port on OS X (that won an apple developers award) after becoming thoroughly sickened with Pajek in windows!
Better off learning a good graphics API (Java3D) (Score:3, Informative)
On average, producing something that looked great and was exactly what I wanted I would estimate the labour effort at between 3-5 productive days. This is at least comparable to the effort I would have spent learning a graphing library, or working around something that I didn't like with an off the shelf solution.
YMMV.
How about hyberbolic trees? (Score:1)
http://hypertree.sourceforge.net/ [sourceforge.net]
Screenshot
http://hypertree.sourceforge.net/hypertree1.jpg [sourceforge.net]
Sadly the project puts light on some sad consequences of the current EU software patents debate.
What about C/C++ libraries? (Score:1)
Flash and aimchart (Score:2)
I believe that Flash is better for applets than Java, largely because MS tainted the pool of JVMs. I happen to be currently doing quite a bit of work in graphing in Flash at www.aimchart.com and would be happy to help if you're interested in going that route instead.
Diva, Ptolemy II and Ptplot (Score:1)
Diva is used by Ptolemy II [berkeley.edu], a set of Java packages supporting heterogeneous, concurrent modeling and design.
Ptolemy II uses PtPlot [berkeley.edu] to plot 2D signals. Ptplot has a backward compatibilty mode with Xgraph, the signal plotter written by David Harrison for X Windows.
Total disclosure: I'm on the Ptolemy II and PtPlot development teams.
JGo (Score:1)
It too is oriented around nodes and links, but is focused more on interactive editing than just on visualization. You can construct more complicated nodes than just simple shapes and/or images with text. You can embed native controls and manipulate subgraphs. There are native versions for Swing and for SWT.
This is a commercial product, but you do get the sources for the base library. More information is available at http://www.nwoods.com/go/jgo.htm [nwoods.com]