Back to Perspective

README

README.md

4.4.110.0 KB
Original Source
<a href="https://perspective-dev.github.io"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/perspective-dev/perspective/raw/master/docs/static/svg/perspective-logo-dark.svg?raw=true"> </picture> </a>

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.

Features

  • 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.

Documentation

Examples

<!-- Examples --> <table><tbody><tr><td>editable</td><td>file</td><td>duckdb</td></tr><tr><td><a href="https://perspective-dev.github.io/block?example=editable"></a></td><td><a href="https://perspective-dev.github.io/block?example=file"></a></td><td><a href="https://perspective-dev.github.io/block?example=duckdb"></a></td></tr><tr><td>fractal</td><td>market</td><td>raycasting</td></tr><tr><td><a href="https://perspective-dev.github.io/block?example=fractal"></a></td><td><a href="https://perspective-dev.github.io/block?example=market"></a></td><td><a href="https://perspective-dev.github.io/block?example=raycasting"></a></td></tr><tr><td>evictions</td><td>nypd</td><td>streaming</td></tr><tr><td><a href="https://perspective-dev.github.io/block?example=evictions"></a></td><td><a href="https://perspective-dev.github.io/block?example=nypd"></a></td><td><a href="https://perspective-dev.github.io/block?example=streaming"></a></td></tr><tr><td>covid</td><td>webcam</td><td>movies</td></tr><tr><td><a href="https://perspective-dev.github.io/block?example=covid"></a></td><td><a href="https://perspective-dev.github.io/block?example=webcam"></a></td><td><a href="https://perspective-dev.github.io/block?example=movies"></a></td></tr><tr><td>superstore</td><td>olympics</td><td>dataset</td></tr><tr><td><a href="https://perspective-dev.github.io/block?example=superstore"></a></td><td><a href="https://perspective-dev.github.io/block?example=olympics"></a></td><td><a href="https://perspective-dev.github.io/block?example=dataset"></a></td></tr></tbody></table> <!-- Examples -->

Media

<table><tbody> <tr> <td><a href="https://github.com/timkpaine"><code>@timkpaine</code></a></td> <td><a href="https://github.com/timbess"><code>@timbess</code></a></td> <td><a href="https://github.com/sc1f"><code>@sc1f</code></a></td> </tr> <tr> <td><a href="https://www.youtube.com/watch?v=v5Y5ftlGNhU"></a></td> <td><a href="https://www.youtube.com/watch?v=lDpIu4dnp78"></a></td> <td><a href="https://www.youtube.com/watch?v=IO-HJsGdleE"></a></td> </tr> <tr> <td><a href="https://github.com/texodus"><code>@texodus</code></a></td> <td><a href="https://github.com/texodus"><code>@texodus</code></a></td> <td></td> </tr> <tr> <td><a href="https://www.youtube.com/watch?v=no0qChjvdgQ"></a></td> <td><a href="https://www.youtube.com/watch?v=0ut-ynvBpGI"></a></td> <td></td> </tr> </tbody></table>
<picture> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/openjs-foundation/artwork/raw/master/openjs_foundation/openjs_foundation-logo-horizontal-white.svg?raw=true"> </picture>

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