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 赞助项目,上述各组件的示例、文档、教程和在线编辑器入口均可在其官网对应页面找到。

vega.github.io
Vega is a declarative format for creating, saving, and sharing visualization designs. With Vega, visualizations are described in JSON, and generate...