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

如何在Matplotlib图表中添加额外图例?

在Matplotlib中添加额外图例的方法

对于新手来说,Matplotlib默认的自动图例确实只能对应绘图数据,要加额外的自定义图例其实很简单——核心就是手动创建「虚拟的绘图元素」,然后单独生成一个新图例,同时保留原来的自动图例。

完整代码示例

先看一个可直接运行的例子,看完就懂了:

import matplotlib.pyplot as plt
import numpy as np

# 1. 先绘制带自动图例的基础图表
x = np.linspace(0, 10, 100)
plt.plot(x, np.sin(x), label='正弦曲线')
plt.plot(x, np.cos(x), label='余弦曲线')

# 保存自动生成的图例对象,别直接plt.legend()完事
auto_legend = plt.legend(loc='upper right')

# 2. 创建自定义图例的「虚拟元素」
# 这些元素不会出现在图表里,只用来做图例条目
# 比如做一条虚线+标记的条目
line_item = plt.Line2D([], [], color='gray', linestyle='--', marker='o', label='数据范围: 0-10')
# 纯文字的条目可以用无颜色的线条
text_item = plt.Line2D([], [], color='none', label='模拟测试数据')
# 还可以做色块条目(需要导入Patch)
from matplotlib.patches import Patch
patch_item = Patch(color='orange', label='异常值区域')

# 3. 获取当前图表的轴对象,把自动图例先绑定到轴上(防止被新图例覆盖)
ax = plt.gca()
ax.add_artist(auto_legend)

# 4. 添加第二个自定义图例,指定要显示的条目和位置
ax.legend(handles=[line_item, text_item, patch_item], loc='lower right')

plt.show()

关键步骤拆解

  • 保存自动图例:用auto_legend = plt.legend()把自动生成的图例存成变量,后面要用到。
  • 创建虚拟元素:
    • 用plt.Line2D([], [], ...)做线条类的图例条目,参数里的color(颜色)、linestyle(线型)、marker(标记)控制样式,label是图例显示的文字。
    • 用Patch做色块类的条目,适合标注区域、类别颜色。
  • 绑定自动图例:用ax.add_artist(auto_legend)把第一个图例固定在轴上,不然新的图例生成后会把旧的覆盖掉。
  • 生成自定义图例:调用ax.legend(handles=..., loc=...),handles里放你创建的所有虚拟元素,loc指定图例位置(比如upper left、lower center)。

注意事项

  • 图例位置尽量选不遮挡数据的地方,也可以用bbox_to_anchor参数手动调整位置,比如ax.legend(handles=..., bbox_to_anchor=(1.05, 1), loc='upper left')可以把图例放在图表外面。
  • 如果只需要纯文字的额外说明,直接用plt.text()在图表空白处加文字也是一种简单办法,但用图例的话样式更统一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 00:05:19