Perspective

Perspective

  • Docs
  • GitHub

Streaming Analytics via WebAssembly

Datagrid
X Bar
Y Line
XY Scatter
Treemap
Heatmap

What is Perspective?

Perspective is an interactive visualization component for large, real-time datasets. Originally developed for J.P. Morgan's trading business, Perspective makes it simple to build real-time & user configurable analytics entirely in the browser, or in concert with Python and/or Jupyterlab. Use it to create reports, dashboards, notebooks and applications, with static data or streaming updates via Apache Arrow. As a library, Perspective provides both:

  • A fast, memory efficient streaming query engine, written in C++ and compiled for both WebAssembly and Python, with read/write/stream/virtual support for Apache Arrow.

  • A framework-agnostic User Interface Custom Element and Jupyterlab Widget, via WebWorker (WebAssembly) or virtually via WebSocket (Python/Node), and a suite of Datagrid and D3FC Chart plugins.

Javascript

Query-driven dashboards built on Perspective Custom Elements are completely user-configurable, and easy to integrate into any application framework.

Using Perspective's simple relational grammar, elements like <perspective-workspace> can be symmetrically configured, by API or through the User Interface, and emit dataset-aware Events for scriptable interactivity. Web Applications built on Perspective Custom Elements can be re-hydrated from their serialized state, driven from external Events, or persisted to any store. Workspaces can mix virtual, server-side Python data with in-browser client data seamlessly, and independent data Views can be cross-filtered, duplicated, exported, stacked and saved.

To achieve Desktop-like performance in the Browser, Perspective for JavaScript relies on WebAssembly for excellent query calculation performance, and Apache Arrow for its conservative memory footprint and high-performance data serialization.

Python

perspective-python, built on the same C++ data engine used by the WebAssembly version, implements the Perspective API directly in Python, either as a high-performance Streaming Arrow or Virtualized Server for Production, or as an embedded JupyterLab Widget for Research.

For Application Developers, virtualized <perspective-viewer> will only consume the data necessary to render the current screen, enabling ludicrous size datasets with instant-load after they've been server initialzed. Or - Clone the entire dataset to the WebAssembly runtime via efficiently via Arrow, and give your server a break!

For Researchers and Data Scientists, PerspectiveWidget is available as an embedded widget within JupyterLab, allowing Pandas and Arrow preview, transform, export and persist Perspective visualizations interactively.

Examples

Superstore

Superstore

Olympics

Olympics

Styled

Styled

Editable

Editable

Streaming

Streaming

CSV

CSV

IEX Cloud

IEX Cloud

NYC Citibike

NYC Citibike

JupyterLab

JupyterLab
Docs
Javascript User GuidePython User GuidePerspective APIPerspective Viewer APIPerspective Python API
More
BlogGitHubStar
Copyright © 2021 Perspective Authors