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

Python中如何为matplotlib多颜色条形图添加对应图例标签

三色条形图添加自定义图例解决方案

问题原因

单次调用ax.bar()绘制多个不同颜色的条形时,matplotlib会默认将所有条形识别为同一个数据系列,仅会对应一个图例条目,无法自动拆分不同颜色的对应关系,因此原代码中的传参方式无法生成预期的三色色标图例。

解决代码

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Patch

fig = plt.figure()
ax = fig.add_subplot()

N = 5
ind = np.arange(N)
width = 0.5
vals = []

colors = []
add_c=[(1,0),(4,1),(-1,0),(3,0),(2,1)]
for v in add_c:
    vals.append(v[0])
    if v[0] == -1:
        colors.append('r')
    else:
        if v[1] == 0:
            colors.append('b')
        else:
            colors.append('g')

# 原label参数无效直接删除
ax.bar(ind, vals, width, color=colors)
# 手动构造自定义图例句柄
legend_handles = [
    Patch(facecolor='r', label='red'),
    Patch(facecolor='g', label='green'),
    Patch(facecolor='b', label='blue')
]
# 指定图例位置为右上角
ax.legend(handles=legend_handles, loc='upper right')
ax.axhline(y = 0, color = 'black', linestyle = '-')
plt.show()

核心修改说明

  • 新增导入Patch类,用于构造图例中的自定义颜色块
  • 手动定义三种颜色和对应名称的映射关系,生成图例句柄列表
  • 调用ax.legend()时传入自定义句柄,通过loc='upper right'固定图例在右上角位置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:27:02