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

Matplotlib颜色映射(colormap)未在图例中显示问题求助

飓风佛罗伦萨路径图颜色映射图例不显示的问题解决

问题描述

在Datacamp的Python地理空间数据分析入门教程中,复现飓风佛罗伦萨路径图代码时,其他结果正常,但颜色映射图例未显示。原代码如下:

fig, ax = plt.subplots(1, figsize=(20,20))
base = country[country['NAME'].isin(['Alaska','Hawaii']) == False].plot(ax=ax, color='#3B3C6E')
florence.plot(ax=base, column='Wind', marker="<", markersize=10, cmap='cool', label="Wind speed(mph)")
_ = ax.axis('off')
plt.legend()
ax.set_title("Hurricane Florence in US Map", fontsize=25)
plt.savefig('Hurricane_footage.png',bbox_inches='tight')

预期生成带风速颜色映射图例的路径图,但实际仅显示空图例或无颜色对应关系。

原因分析

  1. plt.legend()仅能识别单一绘图元素的label(如单个线条、marker),无法捕获Geopandas通过column参数生成的数值型颜色映射(基于ScalarMappable对象)。
  2. 原代码中label参数对column驱动的颜色映射无效,因为该参数仅作用于单一图层标识,而非颜色映射的图例说明。

解决方法

改用plt.colorbar()生成对应颜色映射的图例,步骤如下:

  1. 保存Geopandas绘图返回的ScalarMappable对象;
  2. 通过plt.colorbar()将其绑定到坐标轴,添加标签说明。

修正后的代码:

fig, ax = plt.subplots(1, figsize=(20,20))
# 绘制美国本土基础地图
country[country['NAME'].isin(['Alaska','Hawaii']) == False].plot(ax=ax, color='#3B3C6E')
# 绘制飓风路径,保存颜色映射的ScalarMappable对象
wind_sm = florence.plot(ax=ax, column='Wind', marker="<", markersize=10, cmap='cool')
# 关闭坐标轴
ax.axis('off')
# 添加颜色条图例,设置标签
cbar = plt.colorbar(wind_sm, ax=ax)
cbar.set_label("Wind speed(mph)", fontsize=15)
# 设置标题
ax.set_title("Hurricane Florence in US Map", fontsize=25)
plt.savefig('Hurricane_footage.png',bbox_inches='tight')

可选进阶:分区间类别图例

若需要显示风速区间的类别式图例,可先对Wind列分箱,再按分类变量绘图:

import pandas as pd

# 对风速分箱
florence['Wind_bin'] = pd.cut(florence['Wind'], bins=[0, 50, 100, 150], labels=['0-50 mph', '50-100 mph', '100-150 mph'])

fig, ax = plt.subplots(1, figsize=(20,20))
country[country['NAME'].isin(['Alaska','Hawaii']) == False].plot(ax=ax, color='#3B3C6E')
# 按分类变量绘图,此时label参数生效
florence.plot(ax=ax, column='Wind_bin', marker="<", markersize=10, cmap='cool', legend=True, legend_kwds={'title': 'Wind speed(mph)'})
ax.axis('off')
ax.set_title("Hurricane Florence in US Map", fontsize=25)
plt.savefig('Hurricane_footage.png',bbox_inches='tight')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:33:20