大型数据集的 Python 交互式绘图

时间:2021-04-05 19:54:36

标签: python matplotlib plot ipywidgets altair

假设我有一个包含 100k 行的数据集(1000 个不同的时间、100 个不同的系列、每个观察和辅助信息)。我想创建如下内容: (1) 图的第一组在 x 轴上有时间,在 y 轴上有不同系列(和标准误差)的平均值。 (2) 基于我们在面板 1 中悬停的时间片(垂直线),显示辅助信息与该时间片的系列值的(可能向下采样)散点图。

我为此研究了几个选项:(1) matplotlib + ipywidgets 似乎无法处理它,除非您通过滑块明确选择点。这也不能很好地转换为 html 导出。这并不理想,但可能可行。 (2) altair - 这个库非常时尚,但根据我的理解,我需要给它整个数据集来处理交互,但它也不能处理超过 5kish 的数据点。这会排除我的用例,对吗?

关于如何进行的任何建议?在目前的情况下,我问的是不可能的吗?

1 个答案:

答案 0 :(得分:0)

您可以在 Altair as specified in this section of the docs 中处理大于 5k 行的数据集。

我认为最方便的解决方案之一是安装 altair_data_server,然后在笔记本和脚本的顶部添加 alt.data_transformers.enable('data_server')。只要您的 Python 进程正在运行,此服务器就会向 Altair 提供数据,因此无需将所有数据都包含在创建的图表规范中,这意味着将避免 5k 错误。主要缺点是,如果您导出为独立的 HTML,它将无法工作,因为您依赖于运行服务器 Python 进程的环境。