Reflex has released XY, a Python charting library that uses a Rust core to render interactive 2D visualisations containing up to 100 million points without performance degradation.
In this article
Most Python charting stacks create one drawable object per row. This causes rendering, hover, and zoom functions to degrade once a few hundred thousand points are reached. XY moves the workload into a native Rust core, sends the browser typed binary buffers instead of JSON, and draws with WebGL2. The benchmark shows XY holds 0.071 seconds at 10,000 points and 0.081 seconds at 100 million points. It ships as pip install xy and requires Python 3.11 or newer.
Is it deployable
XY is early alpha at version 0.0.1. That maps to a clear deployment envelope. Startups and mid-size data teams can adopt it now for internal analytics, notebooks, and shareable artifacts. Regulated enterprises should pilot it rather than put it on a customer-facing critical path. Fit is strongest where row counts are the actual bottleneck: quantitative finance, genomics and bioinformatics, observability and telemetry, astronomy, and geospatial analytics.
Here is how to install it in one line.
pip install xyExplainer
How the representation ladder works
XY keeps canonical f64 columns in a ColumnStore in Python and picks a rendered representation per trace. Current defaults start M4 decimation above 10,000 rows for long ordered lines, and automatic scatter density above 200,000 points. Density grids default to 512×384 cells. The docs are explicit that these are pre-1.0 policy thresholds, not API guarantees.
Because exact values stay in Python, hover, selection, and pick still resolve original rows when the active tier has an exact mapping. Zooming into a narrow window returns exact visible points for a padded aligned window, and nearby pans render from that cached window without another request. Reflex is careful not to overclaim here: density is natively binned and GPU-rendered, not an all-GPU ingest pipeline, and ingest, binning, and decimation still scale with source row count.
Performance
The benchmark drives every library through a real browser and stops the clock only when the canvas is verified correct and stable across 10 byte-identical frames. Measurements come from one Apple M5 Pro, one run per cell.
| Points | XY | Matplotlib (WebAgg) | Plotly (scattergl) |
|---|---|---|---|
| 1M | 0.084 s | 0.357 s | 0.614 s |
| 10M | 0.083 s | 2.804 s | 3.367 s |
| 50M | 0.076 s | 13.385 s | ✕ |
| 100M | 0.081 s | ✕ | ✕ |
That is a stated 34× speedup at 10M and 177× at 50M. Peak Python-side memory at 10M is 0.32 GiB for XY against 0.84 GiB for Matplotlib and 1.86 GiB for Plotly. With density=False, XY still draws 100M exact markers in 1.343 seconds on 5.26 GiB. Reflex also reports rendering the full OpenStreetMap dataset — 10 billion points.
A 10-million-point interactive scatter exports to 258 KiB of HTML, versus a stated 259 MiB for the Plotly equivalent. The payload stays near 258 KiB from 1M through 100M rows.
API surface and integration
Charts are composed declaratively from marks, axes, legends, tooltips, and annotations. Fourteen chart families ship today, including scatter, line, area, histogram, box, violin, ECDF, heatmap, hexbin, and contour. Styling accepts CSS and Tailwind classes through stable DOM slots. For migration, import xy.pyplot as plt runs common Matplotlib pyplot code, though the compatibility guide notes not everything is supported. A separate reflex-xy adapter turns any chart into a Reflex component with no JavaScript or iframe.
What it means
For people building dashboards, the shift is from managing data sampling to managing visual fidelity. You no longer have to choose between showing every data point and keeping the browser responsive. The tool handles the heavy lifting of decimation and density binning so the end user sees the full dataset without lag.
The library is currently in alpha. Version 0.0.1 argues against critical paths. It is best fit for finance, genomics, telemetry, and astronomy, where sampling before plotting is the current default.
Check out the GitHub Repo and Technical details. Also, feel free to follow us on Twitter and don’t forget to join our 150k+ML SubReddit and Subscribe to our Newsletter. Wait! are you on telegram? now you can join us on telegram as well.
Need to partner with us for promoting your GitHub Repo OR Hugging Face Page OR Product Release OR Webinar etc.? Connect with us
The post Reflex Open Sources XY: A Rust-Backed Super-Fast Python Charting Library That Keeps 100 Million Point Charts Interactive appeared first on MarkTechPost.




