项目理念#
Python 中有许多优秀的绘图库,包括
每个库都在特定方面表现出色。
用户面临的挑战#
然而,如此繁多的选项给用户带来了巨大的困扰,他们必须浏览所有这些 API,才能找到最适合当前任务的库。这些库都没有针对高级统计可视化进行优化,因此用户必须使用各种 API 拼凑出自己的可视化。对于刚开始学习处理数据的人来说,这迫使他们专注于学习 API,而不是探索他们的数据。
另一个挑战是当前的绘图 API 要求用户编写代码,即使是可视化的一些无关紧要的细节。这导致了一种不幸且不必要的认知负担,因为可视化类型(直方图、散点图等)通常可以使用基本信息(例如感兴趣的列及其数据类型)来推断。
例如,如果您对两个数值列的可视化感兴趣,散点图几乎肯定是一个很好的起点。如果您添加一个分类列,您可能希望使用颜色或分面来编码该列。如果有时难以推断可视化,简单的用户界面可以在不编写任何代码的情况下构建可视化。Tableau 以及 Interactive Data Lab 的 Polestar 和 Voyager 就是这类 UI 的绝佳示例。
设计方法和解决方案#
我们认为,无需创建另一个具有编程 API 和内建渲染功能的可视化库,就可以解决这些挑战。Vega-Altair 构建可视化使用一种分层设计,它充分利用了现有可视化库的功能
创建一个受约束的、简单的 Python API (Vega-Altair),它是纯粹声明性的
使用该 API (Vega-Altair) 生成符合 Vega-Lite 规范的 JSON 输出
使用现有可视化库渲染该规范
这种方法使用户可以最初使用更简单的 API 进行探索性可视化,为他们的使用场景选择合适的渲染器,然后利用该渲染器的全部功能进行更高级的图表定制。
我们认识到,与 Matplotlib、Bokeh 等的完整编程 API 相比,声明性 API 必然会受到限制。这是我们认为简化探索性可视化用户体验所必需的、经过深思熟虑的设计选择。
您可以在这个 StackOverflow 回答中找到 Plotly 和 Altair 之间更详细的比较。