5分钟上手ChartGPU:从零搭建第一张WebGPU折线图的完整新手教程
【免费下载链接】ChartGPUBeautiful, open source, WebGPU-based charting library项目地址: https://gitcode.com/gh_mirrors/ch/ChartGPU
ChartGPU是一款基于WebGPU的开源可视化图表库,专为超大数据集和实时流式数据设计。它不用传统的 Canvas2D,而是直接调用 GPU 渲染,轻松绘制百万级数据点的折线图。本教程将带你从零开始,5 分钟搭出第一张 WebGPU 折线图,并学会流式追加、缩放交互等进阶玩法。
一、ChartGPU 是什么?为什么快?
一句话总结:ChartGPU = ECharts 的 API 风格 + WebGPU 的渲染性能。
| 亮点 | 说明 |
|---|---|
| ⚡ 纯 GPU 渲染 | 基于 WebGPU 着色器(WGSL)绘制,无 Canvas/WebGL 回退路径 |
| 📈 百万级数据 | 内置 LTTB / min / max 采样与 GPU 降采样,大图也不卡顿 |
| 🌊 流式更新 | appendData支持环形缓冲(FIFO),适合实时监控 |
| 🔌 零依赖 | 无任何 npm 运行时依赖,MIT 协议可商用 |
| 🧊 2D + 3D | 折线、面积、柱状、散点、K线,以及 3D 点云和曲面 |
它的折线渲染由 line.wgsl 着色器和 createLineRenderer.ts 渲染器协作完成,所有绘制都在 GPU 上执行——这正是它能"又快又好看"的核心原因。
二、第1步:环境检查与安装(1分钟)
WebGPU 需要较新的浏览器支持,先确认一下:
- Chrome / Edge 113+、Safari 18+
- 在控制台输入
'gpu' in navigator,返回true即可用
安装只需一行命令:
npm install chartgpu💡 建议在页面中检测
navigator.gpu,不支持时给用户一个友好提示,避免白屏。检测工具已封装在 checkWebGPU.ts 中,可直接参考其实现思路。
三、第2步:创建项目并画出第一张折线图(2分钟)
用 Vite 快速建一个 TypeScript 项目:
npm create vite@latest my-chart -- --template vanilla-ts cd my-chart && npm install chartgpu给index.html加一个有明确宽高的容器:
<div id="chart" style="width: 800px; height: 400px;"></div> <script type="module" src="/main.ts"></script>然后在main.ts中创建图表:
import { ChartGPU } from 'chartgpu'; const container = document.getElementById('chart')!; const chart = await ChartGPU.create(container, { series: [{ type: 'line', data: [[0, 1], [1, 3], [2, 2], [3, 5], [4, 4]] }], }); window.addEventListener('resize', () => chart.resize()); window.addEventListener('beforeunload', () => chart.dispose());运行npm run dev,你的第一张WebGPU 折线图就出来了 🎉
完整可运行示例可以参考仓库自带的 basic-line/main.ts,它演示了多系列折线、面积填充、动画配置和事件监听。
四、第3步:掌握3个最关键的配置项(2分钟)
1. 数据格式data支持[x, y]元组或{ x, y }对象。追求性能时推荐列式数组:
data: { x: new Float64Array([0, 1, 2]), y: new Float64Array([1, 3, 2]), }2. 流式追加appendData实时监控场景下,追加数据而不是重绘整个图:
chart.appendData(0, { x, y }, { maxPoints: 50_000 });maxPoints开启环形缓冲,数据自动按先进先出滑动,适合 IoT、行情、日志类仪表盘。
3. 采样策略sampling数据点太多时自动抽稀,'lttb'能保留波形峰值和细节。可选参数见 options.md,完整类型定义在 types.ts。
五、第4步:解锁缩放、主题与更多图表类型
- 🔍缩放平移:开启 dataZoom 后支持滚轮缩放和拖拽平移,缩放时会自动重新采样
- 🎨主题:内置
dark/light,也支持自定义,见 theming.md - 📊图表家族:同库还支持 K线、面积图、散点密度图、3D 曲面等
K线图示例效果:
100 万点散点密度图同样流畅:
六、新手避坑指南 ⚠️
| 问题 | 正确做法 |
|---|---|
| 图表不显示 | 容器必须设置显式width/height(CSS px) |
create()报错 | 它返回 Promise,记得await |
| 页面缩放后模糊 | 监听resize调用chart.resize() |
| 内存泄漏 | 页面卸载时调用chart.dispose()释放 GPU 资源 |
踩坑更多可查 troubleshooting.md。
七、下一步学什么?
- 📖 官方入门文档:docs/GETTING_STARTED.md
- 🧠 架构原理(渲染管线全解):docs/ARCHITECTURE.md
- 🚀 性能调优(采样与 GPU 降采样):docs/performance.md
- 📡 流式仪表盘示例:examples/live-streaming/、examples/streaming-dashboard/
- 🎨 3D 图表 API:docs/api/3d.md
到这里,你已经掌握了从安装、建图到流式更新的核心链路。ChartGPU 把"百万级数据 + 实时渲染"从不可能变成了几行代码的事——接下来,去 examples 目录里挑一个示例,跑起来看看吧!
【免费下载链接】ChartGPUBeautiful, open source, WebGPU-based charting library项目地址: https://gitcode.com/gh_mirrors/ch/ChartGPU
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考