如何解决用于改进多行交互式 Altair 折线图的选项
我的要求是将形状为 (50,000,2) 的 Pandas 数据框绘制为交互式折线图。一列包含 datetime64[ns]
,另一列包含浮点整数。
不幸的是,似乎有了这么多数据,交互式图表在平移和缩放时变得很慢。我的图表非常基本,我可以观察到,一旦我将行数减少到 FAQ 并了解官方指南甚至不建议开始时超过 5,000 行。尽管如此,我正在寻找提高性能的方法,但似乎对此没有太多讨论
我不需要一次显示所有 50,000 个数据点,但我确实希望将所有 50,000 个数据点存储在一个独立的 .html 文件(即图表)中。
我正在考虑“将绘图保存到磁盘”、“使用滑块创建滑动窗口效果以限制一次显示的数据点数量”、“使用更高效的数据类型”、“更改线条的外观,以减少渲染的强度”。真的,任何可能有帮助的东西都很好。对于某些情况,我将性能与更专用的可视化软件(如 Matlab)进行比较,在其中我可以毫无问题地制作交互式包含这么多数据的折线图。
或者,我也很高兴听到解释,为什么由于 HTML、JSON、altair、Vega 或其他任何内容的限制,无法以交互方式绘制这么多数据。
解决方法
正在努力使 Vega 的性能更高(包括通过 WebGL),您可以在此处阅读https://github.com/vega/vega/issues/2619。在这些土地之前,我认为你最好的办法是放大一个较小的区域,这听起来可能很好用,因为你提到不需要一次显示所有点。我发现使用 data_server 后端也可以帮助解决一些大数据速度减慢的问题,尽管与渲染无关。
import pandas as pd
import numpy as np
import altair as alt
alt.data_transformers.enable('data_server')
N=50000
test_df = pd.DataFrame({'t' : range(0,N,1),'A' : np.random.randint(0,100,size=N)})
alt.Chart(test_df).mark_point().encode(
alt.X('t',scale=alt.Scale(domain=[4000,6000])),alt.Y('A',scale=alt.Scale(domain=[40,60]))).interactive()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。