Reflex 开源 XY:一款基于 Rust 的 Python 图表库,让包含 1 亿个数据点的图表保持交互流畅
Reflex AI 发布了 XY,这是一个采用 Apache 2.0 许可证的 Python 图表库,用于交互式二维可视化。它利用原生 Rust 核心和 WebGL2 技术,即使处理 1 亿个数据点也能保持图表响应迅速,渲染时间约为 0.08 秒。该库可通过 pip install xy 安装,要求 Python 3.11 或更高版本。
Reflex AI 已开源 XY,这是一个采用 Apache-2.0 许可证的 Python 图表库,用于交互式二维可视化。该库解决了传统 Python 图表栈的性能下降问题,传统方案会为每一行数据创建一个可绘制对象,当数据量超过几十万点时速度会变慢。XY 将渲染工作转移到原生 Rust 核心中,向浏览器发送类型化二进制缓冲区而非 JSON,并通过 WebGL2 进行绘制。基准测试结果显示,XY 在 1 万点时的渲染时间为 0.071 秒,在 1 亿点时为 0.081 秒。该库目前处于早期 alpha 阶段(版本 0.0.1),通过 pip install xy 安装,需要 Python 3.11 或更高版本。它提供了标记、坐标轴、图例、工具提示和注释的声明式组合,并附带 14 种图表系列,包括散点图、折线图、面积图、直方图、箱线图、小提琴图、ECDF 图、热力图、六边形分箱图和等高线图。该库在 Python ColumnStore 中保留精确的 f64 列,确保悬停、选择和缩放下钻仍能返回原始行。XY 将一个 1000 万点的交互式散点图导出为 258 KiB 的 HTML,而 Plotly 则为 259 MiB。在 Apple M5 Pro 上的基准测试显示,XY 在 100 万点时为 0.084 秒,1000 万点为 0.083 秒,5000 万点为 0.076 秒,1 亿点为 0.081 秒,而 Matplotlib 和 Plotly 在更高数量级时失败或显著变慢。Reflex 还报告称可渲染完整的 OpenStreetMap 数据集,含 100 亿个点。该库包含迁移路径:import xy.pyplot as plt 可运行常见的 Matplotlib pyplot 代码,而 reflex-xy 适配器可将图表转换为 Reflex 组件,无需 JavaScript 或 iframe。
来源: MarkTechPost —
原文
