Vega 项目生态包含哪些工具和组件?
Vega 项目生态是一组围绕“声明式数据可视化”构建的工具,按抽象层次从低到高分为四类:工具包(Vega、Vega-Lite、Vega-Altair、VegaFusion)、系统(Vega-Embed、Vega-Editor)、组件(Vega-Datasets、Vega Themes、Vega-Tooltips)以及转换工具 VlConvert。如果你需要直接描述图形细节,从 Vega 入手;如果只想快速出图,从 Vega-Lite 或 Vega-Altair 入手;如果要把图放进网页,用 Vega-Embed。
工具包:从底层语法到高层 API
| 工具 | 定位 | 适合谁 |
|---|---|---|
| Vega | 可视化语法,用 JSON 描述视觉外观和交互行为,输出 HTML5 Canvas 或 SVG | 需要精确控制图形与交互的开发者 |
| Vega-Lite | 高层可视化语法,JSON 语法更简洁,支持交互式多视图图形,规格可编译为 Vega | 想快速生成图表做分析的人 |
| Vega-Altair | Python 声明式可视化库,API 简单一致,构建在 Vega-Lite 之上 | Python 用户 |
| VegaFusion | 为 Vega 语法提供服务器端加速 | 需要加速 Vega-Altair / Vega-Lite 渲染的场景 |
Vega 与 Vega-Lite 的关系是“编译”:Vega-Lite 规格可以编译成 Vega 规格,因此两者不是互斥选择,而是同一技术栈的不同抽象层。Vega-Altair 则把 Vega-Lite 的能力包装成 Python API,让你少写代码、多探索数据。
系统:嵌入与在线编辑
- Vega-Embed:把交互式 Vega 和 Vega-Lite 视图嵌入网页,可作为嵌入式 Web 组件发布,并支持交互参数。
- Vega-Editor:Web 应用,用于编写和测试 Vega 与 Vega-Lite 可视化,内置大量示例规格,覆盖视觉编码和交互技术。
这两个工具解决的是“写完之后怎么用”:Vega-Editor 负责开发调试,Vega-Embed 负责上线嵌入。
组件:数据集、主题与提示
- Vega-Datasets:Vega 和 Vega-Lite 示例中使用的数据集集合。
- Vega Themes:一个配置对象,提供颜色、字体、线宽、间距等视觉属性的默认设置。
- Vega-Tooltips:Vega 和 Vega-Lite 的提示插件,用自定义 HTML tooltip 替代 HTML title 属性来实现 tooltip 处理。
主题和提示属于“不改数据、只改呈现”的配置层,适合在多个图表间统一风格。
VlConvert:规格转换
VlConvert 提供 Rust 库、CLI 工具和 Python 库,用于转换 Vega-Lite 图表规格。当你的流水线需要在不同格式或语言环境之间搬运 Vega-Lite 规格时,它是专门的转换入口。
怎么选
- 只想画图、不想碰底层细节:Vega-Lite(JSON)或 Vega-Altair(Python)。
- 需要精细控制图形与交互:Vega。
- 数据量大、渲染慢:考虑 VegaFusion。
- 要嵌入网页:Vega-Embed。
- 要在线试写:Vega-Editor。
- 要统一视觉风格:Vega Themes。
- 要自定义 tooltip:Vega-Tooltips。
Vega 是 NumFOCUS 赞助项目,上述各组件的示例、文档、教程和在线编辑器入口均可在其官网对应页面找到。