添加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

