explaingit

perspective-dev/perspective

10,478C++Audience · dataComplexity · 3/5Setup · moderate

TLDR

A high-performance data visualization tool for building interactive charts and dashboards over millions of rows or live-updating data, running inside the browser, Python notebooks, or Node.js without sending data to a server.

Mindmap

mindmap
  root((perspective))
    What it does
      Interactive charts
      Data grid view
      Real-time updates
    Data sources
      Apache Arrow files
      DuckDB queries
      ClickHouse queries
    Environments
      Web browser
      JupyterLab widget
      Node.js server
    Chart types
      Line and bar
      Heatmap treemap
      Candlestick scatter
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build an interactive financial market dashboard with live price feeds and candlestick charts

USE CASE 2

Embed a filterable, groupable data grid into a JupyterLab notebook to explore a large dataset

USE CASE 3

Connect a drag-and-drop chart builder to a ClickHouse analytics database to let non-technical users slice data visually

Tech stack

C++JavaScriptPythonRustWebAssemblyApache ArrowDuckDB

Getting it running

Difficulty · moderate Time to first run · 30min

JavaScript setup requires npm, Python setup requires pip and JupyterLab for notebook use.

License not specified in the explanation.

In plain English

Perspective is a tool for building interactive charts, data grids, and dashboards that can handle very large datasets or data that updates in real time. It is designed to be dropped into web applications, Python data notebooks, or server-side projects, without being tied to any specific framework. The core of Perspective is a high-performance query engine written in C++ that gets compiled into a form that runs directly inside a web browser. This means filtering, grouping, and aggregating millions of rows can happen locally on the user's machine without sending data back to a server. The same engine is also available as a Python library and in Rust, so developers can use it in whichever environment suits their project. For building dashboards and reports, Perspective provides a visual component that users can interact with to change chart types, pick which columns to show, and apply filters, all through a drag-and-drop interface. It supports over ten chart types including line, bar, scatter, heatmap, treemap, sunburst, and candlestick. There is also a data grid view for spreadsheet-style inspection of rows and columns. Perspective can also connect to external databases as data sources. The README mentions support for DuckDB, an in-process database, and ClickHouse, a columnar database used for analytics. In these cases, Perspective translates the user's visual selections into native database queries rather than loading all the data into memory itself. For data scientists working in JupyterLab, a Python notebook environment, Perspective ships as a widget that can be embedded directly into notebook cells. Data in Apache Arrow format, a common columnar data format used in analytics, is supported for reading and writing. The project is available as npm packages for JavaScript and Node.js, a pip package for Python, and a crate for Rust. Examples on the project site show it being used for financial market data, COVID statistics, census eviction records, and live webcam feeds.

Copy-paste prompts

Prompt 1
Show me how to load a 1-million-row CSV into Perspective in a JupyterLab notebook and display it as an interactive pivot table
Prompt 2
Write JavaScript to create a Perspective viewer that connects to a WebSocket feed of stock tick data and displays a live candlestick chart
Prompt 3
How do I configure Perspective to query a DuckDB database and let users filter and group results through the drag-and-drop interface?
Prompt 4
Give me a Python example using Perspective to serve a real-time dashboard of server metrics that updates every second
Open on GitHub → Explain another repo

← perspective-dev on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.