Vega-Altair:Python 数据可视化的声明式方案
Vega-Altair:Python 数据可视化的声明式方案
Vega-Altair 在 GitHub 上拿到了 10,398 Star。
数据可视化在 Python 生态里已经有 matplotlib、seaborn、plotly 这些老牌选手了。Vega-Altair 的切入点不一样:声明式语法。你描述数据列和视觉通道之间的映射关系,图表自动渲染出来,不用手动控制每一个像素。

1、声明式语法到底什么意思
以散点图为例。在 Vega-Altair 里,你要做的只是告诉它:“x 轴绑 Horsepower,y 轴绑 Miles_per_Gallon,颜色区分 Origin”。三行代码收工。
import altair as alt
from vega_datasets import data
cars = data.cars()
alt.Chart(cars).mark_point().encode(
x='Horsepower',
y='Miles_per_Gallon',
color='Origin',
)
不用调 tick 间距,不用设 figure size,不用纠结渲染后端。Altair 的 Python API 严格对应底层的 Vega-Lite JSON 规范,写出来的每一行代码都有类型检查和规范校验。
2、交互是内置的,不是打补丁的
大多数可视化库把交互当附加功能。Vega-Altair 从 Vega-Lite 继承了交互作为一等公民的设计。
用几行额外代码,上面的散点图就能变成一个联动视图:用户在散点图上框选一个区域,旁边的柱状图自动过滤,只显示选中范围内的数据分布。
brush = alt.selection_interval()
points = alt.Chart(source).mark_point().encode(
x='Horsepower',
y='Miles_per_Gallon',
color=alt.condition(brush, 'Origin', alt.value('lightgray'))
).add_params(brush)
bars = alt.Chart(source).mark_bar().encode(
y='Origin', color='Origin', x='count(Origin)'
).transform_filter(brush)
points & bars
brush 声明了一个交互选区,condition 根据选区状态切换颜色,transform_filter 把柱状图的数据源邦定到同一个选区。整个过程不需要写任何事件监听或回调逻辑。
3、它凭什么站得住脚
Matplotlib 是命令式的,灵活但代码量大。Seaborn 在 matplotlib 上包了一层统计图层,简化了一部分,但定制到一定程度还是会落地到 matplotlib API。Plotly 的交互能力很强,但 API 偏向 JavaScript 思维。
Vega-Altair 的差异化在于三点。第一,完整拥抱 Vega-Lite 的声明式可视化语法,不是自己发明一套。第二,交互和数据变换(filter、aggregate、window)都在同一个声明式模型内完成,不用切到 pandas 预处理再切回来。第三,输出的 JSON 规范可以直接丢给 Vega 渲染器,跨平台分享时不用重新实现。

4、安装和运行
pip install altair
Conda 用户:
conda install altair -c conda-forge
依赖很简单,安装后可以在 JupyterLab、Jupyter Notebook、VS Code、GitHub 和 nbviewer 上直接渲染。导出选项包括 PNG、SVG、独立 HTML 页面和 Vega-Lite Editor 链接。也可以序列化为 JSON 文件,方便版本管理或后端渲染。
5、适合哪些人用
- 每天用 pandas 做数据分析,想用更少的代码产出更干净的图的人
- 需要做数据探索和快速原型,不想在可视化代码上花太多时间的数据科学家
- 在 Jupyter 环境里做研究,需要把图表直接嵌入 notebook 的学术用户
- 对交互式可视化有需求,但不想跳进 JavaScript 生态的 Python 开发者
Vega-Altair 最初由 Jake Vanderplas 和 Brian Granger 开发,背后有华盛顿大学 Interactive Data Lab 的学术支持,2018 年发表在 JOSS 期刊上。它不是那种突然爆火又突然沉寂的工具,是一条持续迭代了多年的成熟产品线。
nteractive Data Lab 的学术支持,2018 年发表在 JOSS 期刊上。它不是那种突然爆火又突然沉寂的工具,是一条持续迭代了多年的成熟产品线。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)