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

如何固定多张choropleth地图的色阶以制作对比GIF?

固定Choropleth地图色阶以实现GIF的直观视觉对比

我正在为不同时间范围制作多张choropleth地图(用于生成GIF),想了解是否有方法固定每张地图的色阶,以便进行直观的视觉对比?

我当前的代码如下:

years = range(2000, 2020)

# Create the images for each year
images = []
for year in years:
    fig, ax = plt.subplots(figsize=(10, 10))
    agg.plot(column="nac_"+str(year), cmap='Blues', ax=ax, legend=True, legend_kwds={'label': f'Births in {year}'})
    ax.set_title(f'Number of births in {year}')
    ax.set_axis_off()
    plt.axis('equal')
    plt.tight_layout()
    plt.savefig(f'births_{year}.png', dpi=150)
    plt.close()
    images.append(imageio.imread(f'births_{year}.png'))

# Save the images as a gif
imageio.mimsave('births.gif', images, fps=4)

当前输出的GIF中,色阶范围随年份变化,导致无法清晰观察各区域出生数的变化趋势。


解决方法:固定全局色阶范围

要让所有地图使用统一色阶,核心是先计算所有年份出生数据的全局极值,再通过参数强制色阶对齐:

修改后的完整代码

years = range(2000, 2020)

# 计算所有年份数据的全局最小/最大值
min_val = agg[[f"nac_{year}" for year in years]].min().min()
max_val = agg[[f"nac_{year}" for year in years]].max().max()

images = []
for year in years:
    fig, ax = plt.subplots(figsize=(10, 10))
    # 关键:添加vmin和vmax固定色阶范围
    agg.plot(column=f"nac_{year}", 
             cmap='Blues', 
             ax=ax, 
             legend=True, 
             legend_kwds={'label': 'Number of Births'},  # 统一图例标签更直观
             vmin=min_val, 
             vmax=max_val)
    ax.set_title(f'Number of births in {year}')
    ax.set_axis_off()
    plt.axis('equal')
    plt.tight_layout()
    plt.savefig(f'births_{year}.png', dpi=150)
    plt.close()
    images.append(imageio.imread(f'births_{year}.png'))

imageio.mimsave('births.gif', images, fps=4)

关键细节说明

  • 全局极值计算:agg[[f"nac_{year}" for year in years]]提取所有年份的出生数据列,两次min()/max()分别计算列内极值和跨列全局极值,确保色阶覆盖所有年份的数值范围
  • 固定色阶参数:vmin和vmax强制所有地图使用相同的色阶区间,同一颜色在不同年份代表相同的数值水平,完美解决趋势对比问题
  • 优化图例:统一图例标签为Number of Births,避免重复标注,让GIF视觉更简洁

内容的提问来源于stack exchange,提问作者Stwarth Piedra Bonilla

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 18:07:08