Prefuse

From InfoVis:Wiki
Revision as of 09:38, 1 September 2005 by Iwolf (talk | contribs)
Jump to navigation Jump to search

Summary

Author: Jeffrey Heer / UC Berkeley
Project Webpage: http://prefuse.sourceforge.net
Current Version: alpha, April 1, 2004
Requirements: Java 1.4
Overview: using Java2D graphics library; pipeline architecture; animation and rendering support

"prefuse is a user interface toolkit for constructing highly-interactive visualizations of graph-structured (i.e. node-link) data. prefuse applications are built by stringing together composable modules (called Actions) into ActionLists that perform various tasks such as graph processing and animation.

 Other features of the toolkit include:
• Libraries of composable actions, including layout algorithms (see the action and layout packages).
• Filtering and caching schemes to support large data sets through a centralized ItemRegistry .
• A physics simulation engine supporting physically-based layout and interaction (see the force package).
• Flexible activity scheduling and animation support (see the activity package);
• User interface event handling (see the event and controls packages).
• View transformations, as well as panning and zooming (see the Display class and the distortion package).

 The general pattern of building a prefuse visualization component is to first determine the Graph data structure to visualize, and construct an  ItemRegistry to create and store visual representations of the graph data along with one or more Display instances to draw these visual representations to the screen. One then assigns a RendererFactory to the ItemRegistry, which determines which Renderer instances are used to draw individual items. Then any number of  ActionLists can be created and scheduled to perform graph operations such as layout, color assignment, and animation. Finally, interactive behaviors can be specified by adding custom ControlListeners or pre-built Controls to the Display instances.  For working examples of this process, take a look at the provided demonstration applications."
[Heer, 2004a]

Base data structures: Unstructured, Graph, Tree
Included visualization techniques: Fisheye Menu, Radial Graph, Treemap, F+C Distortion
Supported File Formats: XGMML (XML), TreeML (XML), tab-delimited text, HDir

Pros

  • lightweight; flexible
  • versatile pipeline (ActionList) approach
  • many layout and distortion algorithms included
  • algorithms for force-based physics simulation included
  • custom animations (smooth transitions)
  • color maps
  • event logging
  • demos and examples included
  • open source

Cons

  • poor documentation
  • only graph and tree data structure supported

Details









RederFactory --> Renderer

abstract data
---------->
visual analogues (VisualItems)
----------> display
(Entity, Node, Edge, ...)
filtering
(NodeItem, EdgeItem, AggregateItem)
rendering


Data Structures

  • Unstructured (Entity)
  • Graph (Node, Edge)
  • Tree (TreeNode)

"So how do you build an app with prefuse?

  • before touching any code: design visual appearance, layout, interactive behaviors
  • determine input/output of graph data
  • initialize ItemRegistry and Display(s)
  • select (or implement custom) Renderers and RendererFactory
  • construct the various ActionLists necessary
  • using existing library of Actions, or with custom-built modules (or sub-components like Force functions)
  • write user interface callbacks to orchestrate the ActionLists" [Heer, 2004b]

Packages

action
modules for performing graph processing or assigning visual attributes
animate
 -
assignment
-
filter
-
activity
scheduling and running activities of specified starting times and duration
collections
ordering and visiting data structures
event
dispatching and monitoring various prefuse system events
graph
data structures and algorithms for representing and manipulating graph data
render
modules for rendering VisualItems into a graphics context
util
utility classes
prefusex.controls
series of ControlListeners that can be used to add different interactive behaviors to a prefuse visualization
prefusex.distortion
actions which distort the presentation space to support enhanced navigation and browsing
prefusex.force
a complete physics simulation engine for using physical force calculations to layout and animate graph elements
prefusex.layout
layout algorithms

External links

References