JUNG cannot display large graphs?

I am using JUNG for a project and when I am displaying relatively large graphs eg 1500 nodes, my pc would not be able to handle it (graphs are rendered but If I want to navigate the graph the system become very slow). Any Suggestions.

Answers


So, there are two things that JUNG visualization doesn't always scale very well right now:

  1. iterative force-directed layouts
  2. interaction: figuring out which node or edge (if any) is being referenced for hover and click events.

It sounds like it's the latter that you're running into right now.

Depending on your requirements, you have a couple of options:

  • (a) turn off mouse events, or at least hover events
  • (b) hack the visualization system so that lookups of event targets aren't O(m+n).

Simple solutions for (b) basically just partition the viewing area into smallish chunks and only sends events to elements that are in the same chunk as the pointer. (Obviously, the smaller you make the chunks, the more memory is required.)

We've had plans to do (b) (and a design sketched out) for some time but have been working on other things. Anyone that wants to help with a more permanent solution, please contact me.


How much memory are you starting your VM with? Assuming your working on windows, looking at the Task Manager, does the VM hit the maximum amount of allocated memory and start using swap?


The problem probably lies with the calculation of your vertices' positions. The only layout that I've found fairly easy to calculate was the Tree Layout and obviously that's not suitable for all data sets.

The solution probably is to write your own custom layout with a lot less calculations than say an FRLayout.


Need Your Help

Can I generate a Flex web and Air desktop app from the same source code?

flex air adobe desktop flexbuilder

I'm new to Air. I've got an existing Flex 2 application which I'm considering bringing into Flexbuilder 3. My question is can I use the same base application (and source code) to make the Air ver...

Finding the position of the max element

c++ algorithm

Is there a standard function that returns the position(not value) of the max element of an array of values?