Perspective

Perspective

  • Docs
  • GitHub

Sparkgrid
Datagrid
X Bar
Y Line
XY Scatter
Treemap
Heatmap

What is Perspective?

Perspective is an interactive analytics and data visualization component, which is especially well-suited for large and/or streaming datasets. Originally developed at J.P. Morgan and open-sourced through the Fintech Open Source Foundation (FINOS), Perspective makes it simple to build 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.

Features

  • A fast, memory efficient streaming query engine, written in C++ and compiled for both WebAssembly and Python. read/write/streaming for Apache Arrow, and a high-performance columnar expression language based on ExprTK.

  • A framework-agnostic User Interface Custom Element, powered either in-browser via WebWorker (WebAssembly) or virtually via WebSocket server (Python/Node), as well as a suite of Datagrid and D3FC Chart plugins.

  • A JupyterLab widget and Python client library, for interactive data analysis in a notebook, as well as scalable production Voila and Holoviz applications.

MoviesCCRBNFTMagicSuperstoreOlympicsEditableStreamingCSVIEX CloudNYC CitibikeJupyterLab

Web Browser (JavaScript)

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

Using Perspective's simple relational grammar, elements like <perspective-viewer> can be symmetrically configured, by API or through the User Interface, and emit dataset-aware Events for scriptable interactivity. Web Applications built in JavaScript with 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.js relies on WebAssembly for excellent query calculation time, and Apache Arrow for its conservative memory footprint and efficient 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 initialized. 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.

Switch to Dark Theme
Docs
Javascript User GuidePython User GuidePerspective APIPerspective Viewer APIPerspective Python API
More
BlogGitHubStar
Copyright © 2022 Perspective Authors