#visualization #dataset #visualization-and-analytics #component #python #javascript #apache-arrow

perspective

A data visualization and analytics component, especially well-suited for large and/or streaming datasets

68 stable releases

Uses new Rust 2024

new 4.0.0 Oct 28, 2025
3.8.0 Sep 3, 2025
3.7.4 Jul 21, 2025
3.4.3 Mar 20, 2025
1.7.2 Nov 26, 2022

#393 in WebAssembly

Download history 126/week @ 2025-07-11 128/week @ 2025-07-18 13/week @ 2025-07-25 98/week @ 2025-08-29 34/week @ 2025-09-05 5/week @ 2025-09-12 7/week @ 2025-09-26 7/week @ 2025-10-03 1/week @ 2025-10-10 68/week @ 2025-10-24

79 downloads per month

Apache-2.0

1.5MB
36K SLoC

C++ 31K SLoC // 0.1% comments Rust 4.5K SLoC // 0.1% comments

The Rust language bindings for Perspective, a high performance data-visualization and analytics component for the web browser.

Examples

A simple example which loads an Apache Arrow and computes a "Group By" operation, returning a new Arrow.

use perspective::LocalClient;
use perspective::client::config::ViewConfigUpdate;
use perspective::client::{TableInitOptions, UpdateData, ViewWindow};
use perspective::server::Server;

let data = UpdateData::Arrow(arrow_vec_data);
let options = TableInitOptions::default();
let table = client.table(data.into(), options).await?;
let mut view_config = ViewConfigUpdate::default();
view_config.group_by = ["CounterParty", "Security"]
    .iter()
    .map(|x| Some(x.to_string()))
    .collect();

let view = table.view(Some(view_config)).await?;
let arrow = view.to_arrow(ViewWindow::default()).await?;

See also

Dependencies

~3–14MB
~269K SLoC