Prefuse
Encyclopedia
Prefuse is a Java-based toolkit
Toolkit
A toolkit is an assembly of tools; set of basic building units for graphical user interfaces.Things called toolkits include:* Abstract Window Toolkit* Accessibility Toolkit* Adventure Game Toolkit* B-Toolkit* Battlefield Mod Development Toolkit...

 for building interactive information visualization
Information visualization
Information visualization is the interdisciplinary study of "the visual representation of large-scale collections of non-numerical information, such as files and lines of code in software systems, library and bibliographic databases, networks of relations on the internet, and so forth".- Overview...

 applications. It supports a rich set of features for data modeling
Data modeling
Data modeling in software engineering is the process of creating a data model for an information system by applying formal data modeling techniques.- Overview :...

, visualization and interaction. It provides optimized data structure
Data structure
In computer science, a data structure is a particular way of storing and organizing data in a computer so that it can be used efficiently.Different kinds of data structures are suited to different kinds of applications, and some are highly specialized to specific tasks...

s for tables
Table (information)
A table is a means of arranging data in rows and columns.Production % of goalNorth 4087102%South 4093110% The use of tables is pervasive throughout all communication, research and data analysis. Tables appear in print media, handwritten notes, computer software, architectural...

, graphs
Graph (data structure)
In computer science, a graph is an abstract data structure that is meant to implement the graph and hypergraph concepts from mathematics.A graph data structure consists of a finite set of ordered pairs, called edges or arcs, of certain entities called nodes or vertices...

, and trees
Tree (data structure)
In computer science, a tree is a widely-used data structure that emulates a hierarchical tree structure with a set of linked nodes.Mathematically, it is an ordered directed tree, more specifically an arborescence: an acyclic connected graph where each node has zero or more children nodes and at...

, a host of layout and visual encoding techniques, and support for animation
Computer animation
Computer animation is the process used for generating animated images by using computer graphics. The more general term computer generated imagery encompasses both static scenes and dynamic images, while computer animation only refers to moving images....

, dynamic queries, integrated search, and database connectivity.

Prefuse uses the Java 2D
Java 2D
In computing, Java 2D is an API for drawing two-dimensional graphics using the Java programming language. Every Java 2D drawing operation can ultimately be treated as filling a shape using a paint and compositing the result onto the screen....

 graphics library
Graphics library
A graphics library is a program library designed to aid in rendering computer graphics to a monitor. This typically involves providing optimized versions of functions that handle common rendering tasks. This can be done purely in software and running on the CPU, common in embedded systems, or being...

, and is easily integrated into Swing
Swing (Java)
Swing is the primary Java GUI widget toolkit. It is part of Oracle's Java Foundation Classes — an API for providing a graphical user interface for Java programs....

 applications or Java applet
Java applet
A Java applet is an applet delivered to users in the form of Java bytecode. Java applets can run in a Web browser using a Java Virtual Machine , or in Sun's AppletViewer, a stand-alone tool for testing applets...

s. Prefuse is licensed under the terms of a BSD license, and can be used freely for commercial and non-commercial purposes.

Overview

Prefuse is a Java-based extensible software framework
Software framework
In computer programming, a software framework is an abstraction in which software providing generic functionality can be selectively changed by user code, thus providing application specific software...

 for creating interactive information visualization
Information visualization
Information visualization is the interdisciplinary study of "the visual representation of large-scale collections of non-numerical information, such as files and lines of code in software systems, library and bibliographic databases, networks of relations on the internet, and so forth".- Overview...

 applications. It can be used to build standalone applications, visual components and Java applet
Java applet
A Java applet is an applet delivered to users in the form of Java bytecode. Java applets can run in a Web browser using a Java Virtual Machine , or in Sun's AppletViewer, a stand-alone tool for testing applets...

s. Prefuse intends to simplify the processes of visualizing, handling and mapping of data, as well as user interaction.

Some of Prefuse's features include:
  • Table
    Table (information)
    A table is a means of arranging data in rows and columns.Production % of goalNorth 4087102%South 4093110% The use of tables is pervasive throughout all communication, research and data analysis. Tables appear in print media, handwritten notes, computer software, architectural...

    , graph
    Graph (data structure)
    In computer science, a graph is an abstract data structure that is meant to implement the graph and hypergraph concepts from mathematics.A graph data structure consists of a finite set of ordered pairs, called edges or arcs, of certain entities called nodes or vertices...

    , and tree
    Tree (data structure)
    In computer science, a tree is a widely-used data structure that emulates a hierarchical tree structure with a set of linked nodes.Mathematically, it is an ordered directed tree, more specifically an arborescence: an acyclic connected graph where each node has zero or more children nodes and at...

     data structure
    Data structure
    In computer science, a data structure is a particular way of storing and organizing data in a computer so that it can be used efficiently.Different kinds of data structures are suited to different kinds of applications, and some are highly specialized to specific tasks...

    s 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 and more.
  • A library of 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
    Query language
    Query languages are computer languages used to make queries into databases and information systems.Broadly, query languages can be classified according to whether they are database query languages or information retrieval query languages...

     for interactive filtering of data.
  • Integrated text search using a number of available search engines.
  • A physical force simulation
    Computer simulation
    A computer simulation, a computer model, or a computational model is a computer program, or network of computers, that attempts to simulate an abstract model of a particular system...

     engine for dynamic layout and animation.
  • Flexibility for multiple views, including "overview+detail" and "small multiples" displays.
  • A built in, SQL
    SQL
    SQL is a programming language designed for managing data in relational database management systems ....

    -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.

(and perhaps most importantly)
  • Simple, developer-friendly application programming interface
    Application programming interface
    An application programming interface is a source code based specification intended to be used as an interface by software components to communicate with each other...

    s (APIs) for creating custom processing, interaction, and rendering components.


Prefuse has been used in school course projects, academic and industrial research, and commercial software development
Software development
Software development is the development of a software product...

.

Architecture

The design of the prefuse toolkit is based upon the information visualization reference model
Information visualization reference model
The Information visualization reference model is a reference model for information visualization, developed by Ed Chi in 1999., under the name of the data state model...

, a software architecture pattern that breaks up the visualization process into a series of discrete steps. "Prefuse: a toolkit for interactive information visualization" provides more details on implementation and evaluation.

The information visualization reference model was developed in the Ph.D. thesis work of Ed Chi, under the name of the data state model. Chi showed that the framework successfully modeled a wide array of visualization applications. Later, Chi's work showed that the model was functionally equivalent to the data flow model used in existing graphics toolkits such as VTK. In their work, "Readings in Information Visualization: Using Vision to Think", Stuart K. Card, Jock D. Mackinlay, and Ben Shneiderman present their own interpretation of this pattern, dubbing it the "information visualization reference model".
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK