Fastplotlib:一个Python快速绘图工具,支持前端PyQt/Side、wxPython,甚至 Jupyter Lab
你有没有过这样的体验:Python打开一个绘图窗口,数据一多就卡成PPT?要么渲染慢,要么交互体验糟。科学可视化这种规模的玩意,数据量激增、实时性又很关键,可不能老靠 CPU 串行画图。于是,GPU 加速图形库横空出世,fastplotlib 就是其中一匹黑马。
痛点在哪儿?
- • CPU 画图:向量图、光栅图,数据量一多,内存/绘制瓶颈马上就能显现。
- • 交互卡顿:拖拽、缩放、实时更新,帧率低,给人“拖拉机”的错觉。
- • 原型迭代慢:科研同学、算法工程师试新思路,光渲染加可视化调优就耗掉半天。
- • 多平台适配:你写了一个 PyQt 演示,换到 Jupyter Lab or GLFW 又得重写窗口管理、事件回调。
fastplotlib 是啥?简单说:一个基于 pygfx + WGPU(Vulkan/DX12/Metal)渲染引擎的 Python 绘图库。它把大部分重活交给 GPU,CPU 只负责数据上传、用户交互。API 设计偏 Pythonic,交互式、声明式都支持,既能做“科研快速原型”,也能做“产品级大屏”。
怎么玩?快速上手
- 1. 安装:
pip install -U "fastplotlib[notebook,imgui]"
或者纯粹最小版:pip install fastplotlib
- 2. 导入&初始化:
import fastplotlib as fplapp = fpl.App()# 自动选 GLFW、Qt 或 Jupyter
- 3. 创建图层、添加数据:
scatter = fpl.scatter_layer()app.add_layer(scatter)scatter.add(x, y, size=2, color='blue')app.show()
哎,就几行,立马跑起来。
代码示例:几行搞定超大数据渲染
import numpy as npimport fastplotlib as fpl# 模拟 1000 万点x = np.random.rand(10_000_000)y = np.random.rand(10_000_000)app = fpl.App()scatter = fpl.scatter_layer(marker='.', size=1, cmap='viridis')app.add_layer(scatter)scatter.add(x, y)app.show()# GPU 加速,嗖一下就出来了
使用场景都有哪些?
- • GPU 加速科学可视化:天文、流体力学、分子动力学……
- • 交互式探索:拖拽、缩放、ROI 选择,丝滑体验。
- • 原型和算法调试:想看中间结果?插几行代码就行。
- • 实时采集系统:显微镜、相机、传感器数据实时展示。
- • 机器学习可视化:训练曲线、特征分布、Embedding 动态渲染。
而且支持的前端框架甭管 PyQt、PySide、glfw、wxPython,甚至 Jupyter Lab(jupyter_rfb),一套代码多端跑。
优缺点聊一聊优点:
- • API 直观:Python 风格,容易上手又可组合扩展。
缺点:
- • 还在 Alpha 阶段:API 有时会变,你得跟着 Roadmap 和 Issue #121 盯着。
- • 依赖 WGPU、pygfx 生态:环境配置、驱动兼容偶有坑。
- • 功能未完善:有的图层、标注、导出功能还在路上。
总结&展望总的来说,fastplotlib 就像给 Python 科学可视化装了火箭推进器。要是你在做大数据量的可视化探索,想要顺滑交互,想要跨平台部署,不妨试一试。参与贡献、提个 issue、Follow Roadmap,都很热烈欢迎。未来功能更齐全、API 更稳定,期待它走向正式版!
项目地址:https/github.com/fastplotlib/fastplotlib