【发布时间】:2021-03-03 03:56:20
【问题描述】:
我有一个包含数百万纬度/经度点的数据集,我们使用plotly-dash 和Densitymapbox 以高分辨率绘制:
data = pandas.DataFrame()
# ...
go.Densitymapbox(
lat=data['Latitude'],
lon=data['Longitude'],
z=data['Count'],
hoverinfo='skip',
# ...
)
根据 Mapbox,他们的库应该支持数百万个点而不会出现问题,如他们的演示 @https://demos.mapbox.com/100mpoints/ 所示
当我尝试这样做时,似乎 Mapbox 能够处理请求。然而,在我使用 plotly/dash 的实现中,与上面的演示不同,浏览器进入水下。第一次加载工作正常(虽然确实使用了大量内存),但在重新加载数据时,Chrome 崩溃并且 Firefox 向控制台报告内存不足错误并且不更新热图。
我使用的数据集是 1093737 个点。做后台数学运算,对于 2 个双精度浮点值和 1 个(64 位)整数,这应该只有 (1093737 * (8 + 8 + 8)),并且发送到浏览器的数据量确实表明了这一点。但是,浏览器进程在内存中膨胀到超过 3.5GB,然后在随后重新加载时,浏览器似乎内存不足。
dash/plotly 中是否有任何工具可以防止浏览器崩溃?我不需要与密度图的点进行交互,并设置了hoverinfo='skip' 来表明这一点,但希望在地图缩放发生变化时保持热图的交互性重新计算覆盖。我正在研究其他替代方案,例如使用datashader 光栅化热图服务器端,但这会删除我想保留的这种交互性。
【问题讨论】:
-
嗨@clcto!我遇到了同样的问题。您找到解决问题的方法了吗?
标签: python plotly plotly-dash