Perspective is an interactive analytics and data visualization component for large and streaming datasets. Build user-configurable reports, dashboards, notebooks, and applications with a high-performance query engine compiled to WebAssembly, Python, and Rust.
-
A framework-agnostic user interface packaged as a Custom Element, which connects to a Data Model in-browser (via WebAssembly) or remotely (via WebSocket, with integration in Python, Node.js and Rust). Includes a data grid, 10+ chart types line, bar, area, scatter, heatmap, treemap, sunburst, candlestick, and more.
-
A Data Model API for pluggable engines, enabling Perspective's UI to query external data sources like DuckDB while translating view configurations into native queries.
-
A fast, memory-efficient streaming Data Model built-in, written in C++ and compiled for WebAssembly, Python, and Rust. Supports read/write/streaming for Apache Arrow, with a columnar expression language based on ExprTK.
-
A JupyterLab widget and Python client library for interactive data analysis in notebooks.
- Project Site
- User Guide
- Python API
- JavaScript API
- Rust API
| editable | file | duckdb |
![]() | ![]() | ![]() |
| fractal | market | raycasting |
![]() | ![]() | ![]() |
| evictions | nypd | streaming |
![]() | ![]() | ![]() |
| covid | webcam | movies |
![]() | ![]() | ![]() |
| superstore | citibike | olympics |
![]() | ![]() | ![]() |
| dataset | ||
![]() |
@timkpaine |
@timbess |
@sc1f |
![]() |
![]() |
![]() |
@texodus |
@texodus |
|
![]() |
![]() |
The Perspective project is a member of the The OpenJS Foundation.
Copyright OpenJS Foundation and Perspective contributors. All rights reserved. The OpenJS Foundation has registered trademarks and uses trademarks. For a list of trademarks of the OpenJS Foundation, please see our Trademark Policy and Trademark List. Trademarks and logos not indicated on the list of OpenJS Foundation trademarks are trademarks™ or registered® trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.
The OpenJS Foundation | Terms of Use | Privacy Policy | Bylaws | Code of Conduct | Trademark Policy | Trademark List | Cookie Policy




















