Prefuse is an extensible software framework for helping software developers create interactive information visualization applications using the Java programming language. It can be used to build standalone applications, visual components embedded in larger applications, and web applets. Prefuse intends to greatly simplify the processes of representing and efficiently handing data, mapping data to visual representations (e.g., through spatial position, size, shape, color, etc), and crafting direct manipulation interaction with the visualized data. Some of the features of prefuse include:
- Table, Graph, and Tree data structures supporting arbitrary data attributes, data indexing, and selection queries, all with an efficient memory footprint.
- Components for layout, color, size, and shape encodings, distortion techniques, animation, and more.
- A library of interaction controls for common interactive, direct-manipulation operations.
- Animation support through a general activity scheduling mechanism.
- View transformations supporting panning and zooming, including both geometric and semantic zooming.
- Dynamic queries for interactive filtering of data.
- Integrated text search using a number of available search engines.
- A physical force simulation engine for dynamic layout and animation.
- Flexibility for multiple views, including "overview+detail" and "small multiples" displays.
- A built in, SQL-like expression language for writing queries to prefuse data structures and creating derived data fields.
- Support for issuing queries to SQL databases and mapping query results into prefuse data structures.
- Simple, developer-friendly APIs for creating custom processing, interaction, and rendering components.
(and perhaps most importantly)
The rest of this manual assumes at least a basic familiarity with the Java programming language, including setting up and building Java projects. A knowledge of Swing or another similar user interface toolkit is also of great help for understanding some of the concepts behind prefuse and for integrating prefuse visualizations into larger applications. Experience with database systems is also helpful (especially if using the built-in prefuse expression language for data manipulation), but is not required.
The rest of this chapter provides an introduction to the prefuse toolkit, describing the software architecture and deconstructing a sample application to demonstrate the architecture in use. It is assumed that you have been able to download and compile the toolkit and are now ready to start learning how to use it.