Reflex XY – a Python charting library for interactive 2D visualizations

aanet1 pts1 comments

Fast, Interactive Python Charting Library · XY<br>For AI agents: the complete XY documentation index is at llms.txt. Markdown versions are available by appending .md or sending Accept: text/markdown.<br>NewXY's initial launch is here. Get startedGet started

Learn

Gallery

API Reference

Learning<br>Overview

What is xy?

Installation

Your First Chart

Benchmarks

Core Concepts

Composition Model

Data and Columns

Axes and Scales

Interactions and Selections

Large Data and Performance

Configuration

Styling

Overview

Examples

Customize Each Part

Chrome Slots

Animations

Themes and Export

Capability Matrix

Advanced Styling Gallery

Advanced

XY Architecture

Custom Marks

Runtime and Deployment

Charts<br>Overview

Core Charts

Line

Area, Step & Stairs

Scatter

Bar and Column

Distributions

Histogram

Box Plot

Violin Plot

ECDF

Density & Fields

Heatmap

Hexbin

Contour

Specialized

Uncertainty

Stem

Segments

Sankey

Funnel

Polar Charts

Overview

Radar

Radial Bar

Pie & Donut

Wind Rose

Components

Overview

Marks

Axes

Legends

Tooltips

Colorbars

Modebars & Controls

Annotations

Triangle Mesh

Facets and Layers

Other<br>Reflex

Notebooks

Matplotlib (xy.pyplot)

Guides

Overview

DataFrames and Real Data

Display and Export

Real-time and Streaming Data

Dashboards and Linked Views

Serving, CSP, and Offline Use

Deployment Recipes

Troubleshooting

Getting Help

Reference

Overview

Chart Factories

Marks and Components

Figure Methods

Events and Callbacks

Public Types

Limitations and Alpha Status

Changelog

Contributing

Fast, Interactive Python Charting Library

div]:!p-0">What is xy?<br>XY is a Python charting library for interactive 2D visualizations that stay<br>smooth at millions of points and take your design system seriously. Two ideas<br>shape the library:<br>Fast, even with lots of data. XY draws the detail you can actually see<br>instead of every row at once, so pan, zoom, and hover stay responsive as<br>your data grows.<br>Styled by your CSS, not ours. Titles, axes, legends, tooltips, and controls<br>are addressable with plain CSS or Tailwind through 23 stable slots, and your<br>design tokens reach the marks themselves — in the browser, in SVG, and in<br>native PNG. What each mechanism reaches is published per renderer in the<br>Capability Matrix, including where it<br>stops.

All four interactive charts are live — drag to pan, scroll to zoom, and hover<br>to inspect exact values. Together they render more than a million points from a<br>single probability field across four chart families.<br>View the customizable Python source.

Early alpha. XY is pre-1.0. The declarative composition model is stabilizing, but callback<br>payloads, the Reflex adapter, chart breadth, and adaptive-rendering thresholds<br>may change. See Limitations and alpha status<br>before committing to a long-lived integration.

Start here<br>Browse the visual gallery to see the chart<br>families available today.<br>Install XY and build<br>your first chart.<br>Learn the composition model behind every chart.<br>Read the benchmark snapshot with its output<br>contracts and measurement caveats.<br>Follow the styling overview for CSS, Tailwind, theme<br>tokens, and rendered-mark styles.<br>Why XY<br>Python teams usually face a trade-off: charting libraries that hit an<br>interactivity ceiling as data grows, or browser-first tools that give up design<br>control. XY is built for the workflows where that trade-off bites. Compose<br>marks, axes, legends, and controls in Python; brand them with CSS, Tailwind,<br>and theme tokens; and ship the same chart to notebooks, applications, and<br>standalone HTML, PNG, or SVG exports.<br>Performance is part of the architecture, not an option flag. Native Rust<br>kernels aggregate data before display, binary transport keeps numbers out of<br>JSON, and the WebGL2 client bounds browser work by what the screen can show,<br>while exact source data stays in Python for hover and selection.<br>The numbers back this up. In the recorded live interactive sweep, XY reached a<br>correct, stable canvas in 0.071 seconds at 10,000 points and 0.081 seconds at<br>100 million. Matplotlib reached 13.4 seconds at 50 million points, while Plotly<br>reached 9.8 seconds at 25 million.<br>Live interactive render time<br>Correct and stable canvas · Apple M5 Pro · lower is better

XY<br>XY · density off<br>Matplotlib<br>Plotly

Above 200,000 rows, XY's default path switches to a density view while keeping<br>exact source rows available for deeper zooms. With density disabled, the same<br>engine still rendered 100 million individual markers in 1.34 seconds. The<br>benchmark publishes both paths so the effect of aggregation stays visible.<br>Inspect the benchmark evidence or<br>browse the chart gallery.<br>Install it and see for yourself:

Browse the chart gallery or jump straight to<br>your first chart.

Built with Reflex

chart data python overview interactive charting

Related Articles