XY: Rust驱动GPU加速的极速图表库
Show HN: XY – Fast, composable, GPU-accelerated charts, written in Rust

XY 是一款专为 Python 开发者打造的极速交互式图表库,底层由 Rust 编写并支持 GPU 加速。它完美兼容 Web、Notebook 及静态导出场景,支持通过 Python、CSS 或 Tailwind 进行深度定制。面对亿级数据点,XY 能智能计算屏幕所需内容,实现流畅的缩放与交互,性能远超 Matplotlib 和 Plotly。无论是日常绘图还是构建复杂应用,XY 都能提供丝滑的可视化体验。
在 10 万到 1 亿个数据点的规模下,XY 的渲染时间始终保持在 0.08 秒左右,性能表现完全不受数据量级影响。
HN 评论区
46- kasts
我不太确定 GPU 加速对大多数图表应用场景是否真的有实际意义。大多数仪表盘渲染的数据量根本达不到需要 GPU 加速的程度。一旦图表密集到渲染成为瓶颈,通常它也已经拥挤得失去了可读性。
缩放功能或许能证明支持更大数据集的合理性,但采样/视口剔除(viewport culling)和细节层次(level of detail)等技术往往能避免绘制不必要的点……
- mtweak
我可以想象这在快速将数 GB 的数据“压缩”到 2D 画布上会很有用。为此,我很欣赏这份努力。
有一件事会很有帮助,那就是去了解一下 Ed Tufte 的数据可视化原则。许多图表库并未实现基本的可视化原则,既无法清晰、直观地突出关键点,又难以在保持数据完整深度和复杂性的同时呈现出来。
- hantusk
看看来自 uwdata 的 mosaic,它是基于 Observable plot 构建的。
或者 plotly-resampler,它基于 plotly,并使用 Rust 包 tsdownsample 在“每像素 4 个像素”的级别上进行聚合(以实现抗锯齿效果)。
图形语法(grammar of graphics)方法确实是一个很好的抽象,我很希望看到 xy 能朝这个方向发展。
- adhami
XY 支持离核(out-of-core)渲染数据,使其能够渲染整个 OpenStreetMaps(包含 10,742,674,832 个节点!),并实现亚秒级的平移和缩放。在线托管有点困难,但你可以本地试试:https://github.com/reflex-dev/xy/tree/main/examples/osm
- ahns
很有趣;这些示例与 datashader 相比如何?
编辑:在我的使用场景中,如果需要真正的交互性,我会用 napari(约 1e7-8 个点);否则,我会用 datashader/holoviz,或者甚至只是 fast-histogram 的 2D 直方图。
对于超大的点云,这些注意事项 [0] 仍然适用。当人们绘制密集散点图时,如果完全不指示某些区域的密度究竟有多高,这让我很恼火。
不过,如果它真的能处理 1e10 个点,那确实相当令人印象深刻。
[0]: https://datashader.org/user_guide/Plotting_Pitfalls.html