Prefuse
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
RenderFactory --> 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
- [Heer, 2004a] Jeffrey Heer, prefuse API documentation, Retrieved at: September 17, 2004, http://prefuse.sourceforge.net
- [Heer, 2004b] Jeffrey Heer. prefuse - a visualization toolkit (powerpoint prefuse tutorial), Retrieved at: September 17, 2004, http://prefuse.sourceforge.net/prefuse-tutorial.ppt
- [Heer, 2004c] Jeffrey Heer. prefuse: a software framework for interactive information visualization. Masters of Science, Computer Science Division, University of California, Berkeley, 2004.
- [Heer, 2005] Jeffrey Heer, Stuart K. Card, and James A. Landay. prefuse: a toolkit for interactive information visualization. In CHI 2005, Human Factors in Computing Systems, 2005.