You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Plotly渲染地理可视化数据耗时过长无法正常输出问题求助

问题原因排查
  • 首次使用scatter_mapbox生成的HTML无法打开,核心原因是数据量过大:Plotly散点图会为每个点位单独存储样式、数值等属性,当原始数据条目超过1万条时,生成的HTML文件体积会达到几十MB,普通浏览器加载时会直接卡顿甚至无响应。可额外排查Mapbox token是否有效,无效token会导致底图加载失败,也会出现页面空白无法打开的情况。
  • 后续转换GeoJSON的操作存在两处错误:
    1. 坐标顺序不符合规范:GeoJSON要求Point类型的coordinates参数为[经度, 纬度],你代码中写为[float(row['latitude']), float(row['longitude'])],顺序颠倒会导致点位位置完全错误
    2. 你贴出的第二份代码仍为CSV转JSON的逻辑,并未包含后续绘图代码,额外的JSON序列化步骤反而会增加不必要的耗时
  • 未做数据聚合是渲染耗时过长的根本原因:如果原始CSV数据条目超过10万条,直接渲染每个独立散点不管使用什么工具都会出现效率问题,也没有实际的可视化价值。
优化方案

继续使用Plotly的优化方法

  • 数据抽样:如果不需要展示全量点位,可以随机抽取部分样本绘图,同时导出HTML时优化配置减小文件体积:
# 读取CSV数据后先抽样
sampled_df = df.sample(frac=0.2, random_state=42) # 抽取20%的样本,可按需调整比例
px.set_mapbox_access_token("my token on mapbox")
fig = px.scatter_mapbox(sampled_df, lat="latitude", lon="longitude",color="sales",
                  color_continuous_scale=px.colors.cyclical.IceFire, size_max=20,zoom=12)
# 导出时调用CDN的Plotly资源,减小本地文件体积
fig.write_html("example_map.html", include_plotlyjs="cdn")
  • 改用聚合热力图:如果需要展示全量数据的销售分布,用density_mapbox替代scatter_mapbox,自动聚合相邻点位,渲染效率提升10倍以上,无需申请Mapbox token也可使用:
fig = px.density_mapbox(df, lat="latitude", lon="longitude", z="sales",
                        radius=15, zoom=12, mapbox_style="carto-positron",
                        color_continuous_scale=px.colors.cyclical.IceFire)
fig.write_html("example_map.html")

替代工具选择

如果你的数据量超过50万条,可选择更适合大数量地理可视化的工具:

  • 本地探索分析可以使用Kepler.gl,直接导入CSV即可生成地理可视化,大数量渲染效率远高于Plotly
  • 需嵌入网页的场景可以使用ECharts的GL地理图层,大点位渲染效率更高

内容的提问来源于stack exchange,提问作者Amirgiano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 09:27:02