Tour API Demos Download

Layer Based Visualization Assembly

Aperture enables richly layered, coordinated and expressive combinations of map, chart, network and timeline forms and interactions appropriate for complex problems, in a service-oriented Web 2.0 environment. Hierarchical layer assembly is designed to facilitate a merging or fusing of multiple information facets into a more unified, task centric display of information than a standard widget based approach with limited configuration options.

Aperture builds on principles and lessons learned from previous generations of cross-platform visualization libraries we have built for ourselves and for clients over the past twenty years, as well as current best of breed JavaScript libraries.

A Common, Declarative Grammar

A conventional approach to open-ended interactive visualization APIs require that the programmer be responsible for procedurally looping through visual items to set graphic attributes based on data and application state. Aperture instead uses a declarative approach to systematically describe how data should be visualized, and how to reflect state changes like focus, selection and filtering.

The benefits of a declarative approach have been well documented (Heer, 2010). By describing only what the visualization should do, the how can be taken care of by the library itself. This enables a developer to build apps more quickly, and enables the library to handle platform specific implementation variances and efficiencies.

Aperture and other Libraries

All libraries play a role within a broader ecosystem. We are often asked how Aperture differs from other relatively well recognized visualization libraries in that ecosystem, such as the now defunct Protovis and its successor, D3.

Broader Scope of Interoperability

Aperture leverages OpenLayers under the hood to provide extensive support for GIS data, where standards are both important and widespread. For rendering support on modern browsers as well as IE7 and IE8 (at the time of writing still the most common browser out there), we also currently use RaphaŽl for SVG and VML support. This is something we may look to extend in the future to gain additional rendering performance. Aperture also includes a strategic set of supporting services that fill useful capability gaps or abstract use of common web services.

While the scope of Aperture is broad, it is intended to be modular and open. It supports user inclusion of any subset of JS packages, with or without supporting services, and can easily be used with other JavaScript libraries and frameworks.

Natural, Layer Based Mapping Grammar

While much has been published in theory about appropriate grammars for visualization assembly, in practice we find that implementations have not been sufficient for a non-expert to intuit what building blocks might be required for an app and how to go about putting them together. Our ultimate goal is to be able to empower those outside of the expert visualization and HTML5 graphics communities to be able to build tailored, best practice visual analytics more effectively and in less time.

One of the most intuitive models for describing a visualization assembly, called a vizlet in Aperture, is the one used to explain it to an end user: a legend. With this in mind, we borrow a number of concepts and terms from the geospatial world. Layers graphically represent particular facets of information within the same spatial context, Mappings describe how properties of visual items are mapped from data and state and in doing so may use Map Keys, which each describe a visual encoding for a Range of data values.

The vocabulary used to articulate these relationships is modeled after natural language. For instance, 'fill' ).from( 'year' ).using( yearColorKey ) defines a mapping of bar fill color from the year property of each data item, using a lookup of color from the yearColorKey map key. More extensive examples are provided in the Demos, API Examples section.

With what we believe is a more structured, common and natural grammar for mapping data to visual form we provide what we hope is a more intuitive language for building visualization. Ultimately our goal is that the language be sufficiently structured and descriptive to inform design guidance of a user towards visual solutions for difficult analytic problems - something we will be working on this year.