项目理念#
在Python中存在许多优秀的绘图库,包括:
每个库都擅长处理特定的一组任务。
用户挑战#
然而,这样大量的选项给用户带来了很大的困难,因为他们必须在所有这些API中筛选出哪些是最适合当前任务的。这些库都没有针对高级统计可视化进行优化,因此用户必须使用各种API自己组装可视化工具。对于刚开始学习数据处理的人员来说,这迫使他们关注学习API,而不是探索他们的数据。
另一个挑战是当前的绘图API要求用户编写代码,即使是可视化的偶然细节。这导致了一个不幸且不必要的认知负担,因为可视化类型(直方图、散点图等)通常可以根据基本信息推断出来,例如感兴趣的列和这些列的数据类型。
例如,如果您对两个数值列的可视化感兴趣,散点图几乎肯定是一个好的起点。如果您添加一个分类列,您可能想使用颜色或切面对该列进行编码。如果推断可视化在某些时候证明困难,一个简单的用户界面可以在没有任何编码的情况下构建可视化。Tableau 和 Interactive Data Lab’s Polestar 和 Voyager 是此类用户界面的优秀示例。
设计方法和解决方案#
我们相信这些挑战可以在不创建另一个具有程序化API和内置渲染的可视化库的情况下解决。Vega-Altair构建可视化的方式采用了一种分层设计,充分利用了现有可视化库的全部功能:
创建一个受限的简单 Python API(Vega-Altair),该 API 完全是声明式的
使用API(Vega-Altair)发出遵循Vega-Lite规范的JSON输出
使用现有可视化库呈现该规范
这种方法使用户能够以更简单的API进行探索性可视化,选择适合他们使用案例的渲染器,然后利用该渲染器的全部功能进行更高级的图形自定义。
我们意识到,声明式API相较于Matplotlib、Bokeh等的完全编程API必然会受到限制。这是我们觉得为了简化探索性可视化的用户体验而做出的一个故意设计选择。
您可以在 该 StackOverflow 答案中找到 Plotly 和 Altair 之间更详细的比较。