Jon Schull's Weblog





Click to see the XML version of this web page.

Click here to send an email to the editor of this weblog.


Sunday, November 23, 2003
 


I want (and may try to create an outliner that will concurrently render graphs of the outlines (visualized as I'd like them to be visualized)

This led me to re-explore what's out there in the way of outliners, visualizers etc.
There are interesting new packages out there.  see http://tikiwiki.org/directory57

Compendium-TA's feature list has most of what I want, but its a windows -only package.

AiSee is an impressively powerful commercial closed-source graph visualization program that seems to work.

Tintfu is a front end to a graphviz server. (Thanks to the Matt Payne for his help.)

GraphOpt is an impressive-sounding and fast-loading visualizer that is said to handle large graphs well ...

...but I can't get it to work. The layout approach is interesting and interestingly described:
Each node is given mass and an electric charge, and each edge is represented as a spring. Node mass, electric charge, optimal spring length, and the spring constant are tweakable in the gui in realtime.

For most graphs, this is all that is needed - hit 'go' and the graph organizes itself much as the analagous real-life system would if constrained to two dimensions. For more complex graphs, some fiddling with the physical parameters at different stages of optimization usually does the trick.

To accomodate very large graphs, an additional mechanism called layering was added. When a graph is loaded, nodes are assigned to layers based on their relative positions. During optimization, you can choose to hide any number of layers. Any nodes assigned to a layer lower than the selected layer are not only hidden, but neither their electric charges nor the forces of the springs attached to them are figured into the forces acting on the visible nodes. In effect, those nodes cease to exist, and a smaller graph is allowed to lay itself out without being constrained by an excessive number of nodes.

Layers are assigned iteratively until all nodes belong to a layer. In each pass, all leaf nodes are assigned to the current layer. If there are no leaf nodes, then nodes that point to only one other node are taken. If there are no nodes that point to only one other node, nodes that point to only two other nodes are taken (and so on...).

And I have finally found a python-extensible, outlining editor that I might build upon: JEdit with jython plugin.
It takes forever to load (I may have gotten greedy installing plugins) but seems to have real promise.


comments? [] 6:39:49 PM    


Click here to visit the Radio UserLand website. © Copyright 2003 Jon Schull.
Last update: 12/1/03; 10:54:04 PM.
November 2003
Sun Mon Tue Wed Thu Fri Sat
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
Oct   Dec