Daily Tech Briefing
AI 科技速览

每天 5 分钟内学习 AI。获取最新的人工智能新闻,理解其重要性,并学习如何将其应用于您的工作。

AI 快讯
MarkTechPost · 2026/8/4 09:45:40

Reflex Open Sources XY: A Rust-Backed Super-Fast Python Charting Library That Keeps 100 Million Point Charts Interactive

AI 中文解读
Reflex开源了XY,一个用Rust底层驱动的超快Python图表库。核心亮点很简单:别人家图表到几万数据点就开始卡,它能在1000万甚至1亿个数据点上依然保持60帧般的流畅交互。 通俗点说,以前画图表就像往网页里塞海量小纸片,每张纸片代表一个数据,塞多了浏览器自然瘫掉。XY换了个思路,把数据处理的工作搬到更快的“工厂车间”里先加工好,再打包成浏览器最省力的格式,最后用显卡直接绘制。实测它处理千万级数据的渲染速度比主流工具快几十倍,内存占用也更低。 对普通人来说,最直接的感受就是以后用数据看板、做股市行情分析、看基因测序报告这类动辄几十万个点的图表时,不会再遭遇“白屏转圈”和“鼠标一滑就卡死”的尴尬。这项技术目前还在早期测试阶段,普通用户暂时不必急着替换常用工具,但对于金融分析师、科研人员和数据工程师而言,它有望成为处理海量数据可视化的新利器。
Reflex AI has released XY, an Apache-2.0 Python charting library for interactive 2D visualization. Most Python charting stacks create one drawable object per row, so past a few hundred thousand points, render, hover, and zoom degrade. XY moves the work into a native Rust core, sends the browser typed binary buffers instead of JSON, and draws with WebGL2. In the terms of the benchmark, XY holds 0.071 s at 10,000 points and 0.081 s at 100 million. 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. It ships as pip install xy and requires Python 3.11 or newer. 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 (tick data), genomics and bioinformatics (Manhattan plots, allele-frequency scans), observability and telemetry, astronomy, and geospatial analytics. Here is how to install it in 1 line. Copy CodeCopiedUse a different Browserpip install xy Explainer (function(){ window.addEventListener("message", function(e){ if(e.data && e.data.mtpHeight){ var f = document.getElementById("mtp-xy-frame"); if(f) f.style.height = e.data.mtpHeight + "px"; } }); })(); 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. PointsXYMatplotlib (WebAgg)Plotly (scattergl)1M0.084 s0.357 s0.614 s10M0.083 s2.804 s3.367 s50M0.076 s13.385 s✕100M0.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 s 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. Key Takeaways XY holds ~0.08 s render time from 10k to 100M points by drawing screen-bounded representations, not per-row markers. Rust core plus binary transport cuts a 10M-point interactive export to 258 KiB against
分享
阅读原文