perspective README

The project's README from github.com/perspective-dev/perspective. As one markdown file: README.md.




Build Status npm PyPI crates.io

Perspective is an interactive analytics and data visualization component for large, real-time and streaming datasets. Build user-configurable reports, dashboards, notebooks and applications, backed by a high-performance streaming query engine that runs in-browser via WebAssembly or server-side in Python, Node.js and Rust — or delegates to a database you already have.


Features

Documentation

Examples

SuperstoreWorkspaceWebcam
RaycastingMarketNYPD
MoviesEvictionsFractal

Media

@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

perspective (perspective-dev/perspective)

Searching Database…

What is this?Perspective is an interactive data visualization and analytics component built for large, real-time and streaming datasets. It ships as a Custom Element UI (grid, charts, pivots) backed by a streaming query engine that runs in-browser via WebAssembly or server-side in Python, Node.js and Rust.
Is this a UI widget or the whole analytics backend?It's both: a Custom Element/Web Component UI (with React bindings) plus the query engine itself, written in C++ and compiled to WebAssembly, Python and Rust, so the same engine can run client-side or server-side.
How do I add it to a web app or a notebook?Drop in the @perspective-dev/viewer web component (or the React bindings) and connect it to a Client that runs in-process, in a Web Worker, or over WebSocket to a server. For notebooks, install the Python package and use the Jupyter widget built on anywidget.
Do I need Python or just Node for the browser version?Pure client-side use only needs the JS/WASM package in a browser. Server-side use adds bindings for Python (aiohttp, Starlette, Tornado), Node.js or Rust, and building from source requires pnpm, binaryen, emsdk and LLVM.
Can it handle datasets bigger than a browser's WASM memory limit?Yes — there's a dedicated 64-bit memory64 WebAssembly build specifically for in-browser datasets larger than 4GB, and large datasets can also be virtualized server-side so only visible rows stream to the client.
Can Perspective query a database directly instead of loading data into it?Yes, 'virtual servers' let Perspective's UI run directly against external engines like DuckDB, ClickHouse, PostgreSQL and Polars, translating view configs into native queries with no ETL or data copy required.
What chart types and visuals does it support?It includes a WebGL charting engine with 15+ chart types, a virtual-scrolling editable data grid, tile-based geographic maps, pivot tables and full theming support.
Can the client connect to a remote engine instead of running everything locally?Yes, the same Client API can connect in-process, inside a Web Worker, or remotely over WebSocket to a server-side engine, and datasets can be mirrored to the browser or virtualized server-side.
Does it support streaming updates, or just static datasets?Tables update incrementally and views tick in real time, with reactive joins across tables and streaming read/write support for Apache Arrow, CSV and JSON.
Size
326.9 MB
Stars
11.3K
Age
8y
Commits · 90 Days