From: Joshua O'M. <jos...@gm...> - 2010-09-21 23:46:58
|
On Fri, Sep 17, 2010 at 2:08 AM, Klaas De Craemer < kla...@es...> wrote: > Ok, good news, it works great now! > > As suggested, I increased the size of the VisualisationViewer and > decreased the repulsion multiplier to 0.1: > > http://img693.imageshack.us/img693/4164/jungfrlayout.png Glad that worked for you. > > I have two more questions however: > 1) I'm a bit annoyed by the fact that I have to define the size of the > VisualisationViewer first. With big graphs, I can't know in advance > what dimensions I will need, so I end up entering 3000x3000 for > example. This makes the window react slightly sluggish. Is there a way > to have the VisualisationViewer choose it's own dimensions? > To illustrate, I'm using a JSplitPane with a > GraphZoomScrollPane/VisualisationViewer in it. Resizing the window > does not seem to resize the VisViewer (or is it the size of the > layout?) If I increase the VisViewer size with an actionListener, it > begins to overlap the GraphZoomScrollPane scrollbars... > The size of the view is up to you. The size of the layout will depend on how big the graph is, and the layout algorithm used, so it's really hard to estimate up front how big the layout will need to be. You can certainly do a pass over the coordinates assigned by the layout--assuming that you iterate it until it's done--and figure out the size that the view needs to be in order to encompass the entire layout without scrolling. (And then pass that information to the VV instance as the size.) But this kind of thing is one reason why the layout size and view size are intentionally distinct. > 2) I'm doing some basic animation in the graph to illustrate where > messages are flowing in a network. Is it possible to change the > direction of an edge? > No, but you can remove an edge and reinsert it with the incident vertices in the reverse order. If you're asking if you can change how the direction of an edge is _rendered_ (i.e., where the arrows go) then the answer is still more or less "no" but there are different ways to get around it (in addition to the one I mentioned above, i.e., changing the data model). Joshua > > Thanks a lot for your help! > Klaas > > 2010/9/16 Joshua O'Madadhain <jos...@gm...>: > > Another off-list response has suggested that it may be that the fact that > > the graph is tree-structured that's causing the problem. That would make > > sense; the FR algorithm basically has two forces--vertices that are > > connected by an edge are attracted, and all other vertices repel each > > other--and so if there are few edges, the node repulsion force will tend > to > > dominate. > > So there are a couple of things that you can try. > > (1) Decrease the node repulsion constant. > > (FRLayout.setRepulsionMultiplier(); as the Javadoc states, the default > is > > 0.75.) > > (2) Use a different layout algorithm, e.g., one of the tree layout > > algorithms (TreeLayout, BalloonLayout, etc.) or KKLayout or ISOMLayout. > > Let us know how it goes. > > Joshua > > [PS to Adnan: please send JUNG-related correspondence to the list, not to > > me. I'm happy to get both constructive criticisms and corrections. :) ] > > > > On Thu, Sep 16, 2010 at 10:08 AM, Adnan Aftab <adn...@gm...> > wrote: > >> > >> hi.... > >> FRLayout problem is not due to the start position. > >> i think it is implemented as that nodes are drawn on the edges of > display > >> areas > >> > >> On Thu, Sep 16, 2010 at 9:51 PM, Joshua O'Madadhain > >> <jos...@gm...> wrote: > >>> > >>> Klaas: > >>> I'm actually not sure what the problem is there. FRLayout doesn't > >>> typically have that problem unless you bump up the node repulsion, or > you > >>> get a really bad starting position. > >>> Have you tried running the algorithm a few times to see if this is a > >>> persistent problem? > >>> You could also try increasing the layout Dimension to see if that > helps. > >>> Joshua > >>> > >>> On Wed, Sep 15, 2010 at 11:54 PM, Klaas De Craemer > >>> <kla...@es...> wrote: > >>>> > >>>> Hello all, > >>>> > >>>> I'm in the process of converting a network visualisation tool from > >>>> using the JGraph 5 libraries to the Jung libraries. Everything seems > >>>> to work, except for the fact that the FRLayout algorithm produces > >>>> unusable layouts. > >>>> If I have about 5 to 10 nodes, there is no problem at all, but I need > >>>> to be able to show a few 100 nodes in a hierarchical structure. > >>>> Nothing too complex actually. > >>>> > >>>> In JGraph, there is a layout algorithm called FastOrganicLayout (an > >>>> implementation of "Graph Drawing by Force-Directed Placement" by > >>>> Fruchterman and Reingold (1991)) so it should behave exactly the same > >>>> as JUNGs FRLayout. To demonstrate the difference, I have put a > >>>> side-by-side screenshot here: > >>>> > >>>> http://img265.imageshack.us/img265/3361/jungjgraphlayout.jpg > >>>> > >>>> All nodes are pushed to the edges. (The icons in the Jgraph version > >>>> have not yet been implemented in the Jung version) > >>>> The question now is what can be done to make it look more ... > >>>> organized (aka, like JGraph's implementation)? > >>>> > >>>> Basically, what I do can be summarized as: > >>>> > >>>> --------------------- code --------- > >>>> graph = new DirectedSparseMultigraph<jModule, jConnection>(); > >>>> //jModule and jConnection are the vertices and edges here > >>>> > >>>> layout = new FRLayout<jModule,jConnection>(graph,new > >>>> Dimension(400,400)); > >>>> layout.initialize(); > >>>> > >>>> vv = new VisualizationViewer<jModule,jConnection>(layout); > >>>> panel = new GraphZoomScrollPane(vv); > >>>> scaler = new CrossoverScalingControl(); > >>>> > >>>> layout.setSize(vv.getSize()); > >>>> Relaxer relaxer = vv.getModel().getRelaxer(); > >>>> if(relaxer != null) { > >>>> relaxer.stop(); > >>>> relaxer.prerelax(); > >>>> relaxer.relax(); > >>>> } > >>>> ------------------ end code ------- > >>>> > >>>> Thanks for any help, > >>>> Klaas De Craemer > >>>> > >>>> > >>>> > ------------------------------------------------------------------------------ > >>>> Start uncovering the many advantages of virtual appliances > >>>> and start using them to simplify application deployment and > >>>> accelerate your shift to cloud computing. > >>>> http://p.sf.net/sfu/novell-sfdev2dev > >>>> _______________________________________________ > >>>> Jung-support mailing list > >>>> Jun...@li... > >>>> https://lists.sourceforge.net/lists/listinfo/jung-support > >>> > >>> > >>> > >>> -- > >>> jos...@gm...................... > www.ics.uci.edu/~jmadden > >>> Joshua O'Madadhain: Information Scientist, Musician, > >>> Philosopher-At-Tall > >>> It's that moment of dawning comprehension that I live for. -- Bill > >>> Watterson > >>> My opinions are too rational and insightful to be those of any > >>> organization. > >>> > >>> > >>> > >>> > ------------------------------------------------------------------------------ > >>> Start uncovering the many advantages of virtual appliances > >>> and start using them to simplify application deployment and > >>> accelerate your shift to cloud computing. > >>> http://p.sf.net/sfu/novell-sfdev2dev > >>> _______________________________________________ > >>> Jung-support mailing list > >>> Jun...@li... > >>> https://lists.sourceforge.net/lists/listinfo/jung-support > >>> > >> > >> > >> > >> -- > >> Muhammad Adnan Aftab > >> CoderXperts > >> The Soul Makers of Hardware !!! > >> > >> Contact: > >> adn...@co... > >> www.coderxperts.com > >> www.coderxperts.blogspot.com > >> 0313-5631832 > > > > > > > > -- > > jos...@gm......................www.ics.uci.edu/~jmadden > > Joshua O'Madadhain: Information Scientist, Musician, > Philosopher-At-Tall > > It's that moment of dawning comprehension that I live for. -- Bill > > Watterson > > My opinions are too rational and insightful to be those of any > > organization. > > > > > -- jos...@gm......................www.ics.uci.edu/~jmadden Joshua O'Madadhain: Information Scientist, Musician, Philosopher-At-Tall It's that moment of dawning comprehension that I live for. -- Bill Watterson My opinions are too rational and insightful to be those of any organization. |