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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 10:43:25