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

如何避免Matplotlib中二维列表格式x、y数据产生重复图例标签

问题原因

当你向plt.plot()传入二维结构的x、y数据时,matplotlib会默认按列解析数据,为每一列单独绘制一条折线。你当前的输入数据有3列,会生成3个独立的折线对象,所有对象都继承了你设置的同一个label参数,最终就会在图例中出现多个重复标签。


解决方案

极简适配方案

不需要修改任何原始输入数据,直接提取plt.plot()返回的折线句柄,仅将第一个句柄传入图例生成逻辑即可:

import matplotlib.pyplot as plt

idl_t, idl_q = [[0, 12, 20], [8, 14, 24]], [[90, 60, 90], [90, 60, 90]]
# 绘图时接收返回的所有折线对象
lines = plt.plot(idl_t, idl_q, label="Some label")
# 仅传入首个折线的句柄生成图例,避免重复
plt.legend(handles=[lines[0]])
plt.show()

通用去重方案

如果后续绘图场景中存在多个不同标签、也可能出现重复的情况,可以用全局图例去重逻辑:

import matplotlib.pyplot as plt

idl_t, idl_q = [[0, 12, 20], [8, 14, 24]], [[90, 60, 90], [90, 60, 90]]
plt.plot(idl_t, idl_q, label="Some label")
# 其他绘图逻辑可写在此处

# 拿到当前轴的所有句柄和标签
handles, labels = plt.gca().get_legend_handles_labels()
# 用字典自动去重,相同标签只保留第一个句柄
unique_legend = dict(zip(labels, handles))
plt.legend(unique_legend.values(), unique_legend.keys())
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:36:00