如何在Matplotlib中添加带标题的自定义风险等级图例手柄
自定义风险等级图例的实现方法
你遇到的问题是因为没有手动创建图例对应的手柄对象,下面是具体的解决步骤:
1. 准备依赖模块
首先确保导入图例需要的Patch类:
from matplotlib.patches import Patch
2. 创建自定义图例手柄
根据你的风险等级定义,手动绑定每个等级的颜色和标签,分两种情况处理:
情况一:手动指定各等级颜色
如果你是自己给每个风险等级分配固定颜色,直接定义风险信息列表生成手柄:
# 替换成你实际使用的颜色和等级对应关系 risk_levels = [ (1, "no risk", "#f0f9e8"), (2, "low risk", "#bae4bc"), (3, "medium risk", "#fdbb84"), (4, "high risk", "#e34a33") ] # 生成图例手柄列表 legend_handles = [Patch(color=color, label=label) for _, label, color in risk_levels]
情况二:从颜色映射(cmap)中提取颜色
如果你的地图是通过GeoDataFrame的plot方法,用column参数关联风险等级列、cmap指定颜色映射绘制的,可以从颜色映射中提取对应等级的颜色:
# 假设你的绘图代码是这样的(关闭默认图例) ax = gdf.plot(column="risk_level", cmap="YlOrBr", legend=False) # 获取颜色映射对象 cmap = plt.cm.get_cmap("YlOrBr") # 把1-4的等级归一到颜色映射的0-1范围,提取对应颜色 risk_levels = [ (1, "no risk", cmap(0.0)), (2, "low risk", cmap(0.33)), (3, "medium risk", cmap(0.66)), (4, "high risk", cmap(1.0)) ] legend_handles = [Patch(color=color, label=label) for _, label, color in risk_levels]
3. 绘制带标题的图例
最后调用plt.legend,传入手柄列表并设置标题:
plt.legend(handles=legend_handles, title="Risk Level", loc="upper right") plt.show()
这样就能生成你需要的、对应四个风险等级的自定义图例了。
内容的提问来源于stack exchange,提问作者Zilore Mumba
相关产品推荐
相关产品推荐

