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

添加animation_frame后Choropleth地图无数据显示求助

问题原因分析与解决方案

以下是添加animation_frame后地图无数据显示的常见原因及对应解决方法:

  • QUARTER列数据格式或分组异常
    检查QUARTER列的数据格式是否统一,比如是否存在"Q1 2023"和"2023Q1"这类格式混乱的情况,或是混合了字符串与数值类型。Plotly生成动画时会按animation_frame的唯一值分组,若分组后某一帧内无有效数据,就会显示空白。
    解决方法:统一QUARTER列格式(如转为"YYYY-QX"的字符串格式),确保每个分组都有对应国家的有效数据。

  • 季度数据缺失或无效
    排查每个季度对应的ABOVE_CLIP是否为空值、0值,或是ISO_ALPHA_3存在拼写错误、非标准代码等无法匹配Plotly ISO-3标准的情况。如果某一季度的所有记录都无有效投标数据,或国家代码无法被识别,该帧就会无数据显示。
    解决方法:补全缺失的ISO_ALPHA_3代码,过滤ABOVE_CLIP为空的记录,确保每个季度至少有一条有效数据。

  • 缺少animation_group参数导致数据关联失败
    使用animation_frame时,Plotly需要明确的关联标识来跟踪同一地理实体在不同帧的变化。未指定animation_group="ISO_ALPHA_3"时,Plotly可能无法正确关联同一国家在不同季度的数据,导致动画切换时丢失地图内容。
    修正代码示例:

    import plotly.express as px
    px.choropleth(disc_df_quarter,               
                  locations="ISO_ALPHA_3", 
                  locationmode="ISO-3",
                  color="ABOVE_CLIP",
                  hover_name="CNTRY_NAME",  
                  animation_frame="QUARTER",
                  animation_group="ISO_ALPHA_3",  # 添加此参数关联同一国家
                  color_continuous_scale='Plasma',  
                  height=600           
    )
    
  • 全局颜色范围导致单帧数据不可见
    添加动画后,Plotly默认用所有帧的ABOVE_CLIP值范围设置颜色刻度。若某一季度的ABOVE_CLIP值远小于全局最小值,该帧的颜色会接近背景色,看起来像无数据。
    解决方法:指定range_color自定义颜色范围,或调整color_continuous_midpoint优化颜色映射:

    px.choropleth(disc_df_quarter,               
                  locations="ISO_ALPHA_3", 
                  locationmode="ISO-3",
                  color="ABOVE_CLIP",
                  hover_name="CNTRY_NAME",  
                  animation_frame="QUARTER",
                  animation_group="ISO_ALPHA_3",
                  color_continuous_scale='Plasma',
                  range_color=[disc_df_quarter["ABOVE_CLIP"].min(), disc_df_quarter["ABOVE_CLIP"].max()],
                  height=600           
    )
    
  • 数据重复引发聚合错误
    若disc_df_quarter存在同一国家同一季度的多条重复记录,Plotly无法正确聚合数据,会导致动画帧无法生成有效地图。
    解决方法:先按QUARTER和ISO_ALPHA_3分组聚合ABOVE_CLIP值,再传入绘图函数:

    # 按季度和国家聚合投标数量
    aggregated_df = disc_df_quarter.groupby(["QUARTER", "ISO_ALPHA_3", "CNTRY_NAME"])["ABOVE_CLIP"].sum().reset_index()
    
    px.choropleth(aggregated_df,               
                  locations="ISO_ALPHA_3", 
                  locationmode="ISO-3",
                  color="ABOVE_CLIP",
                  hover_name="CNTRY_NAME",  
                  animation_frame="QUARTER",
                  animation_group="ISO_ALPHA_3",
                  color_continuous_scale='Plasma',  
                  height=600           
    )
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:40:26