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

plt.legend()仅显示图例字符串首字母的问题及修复方法

修复Matplotlib图例只显示首字母的问题

嘿,我来帮你搞定这个图例显示的小问题~ 你遇到的情况是因为调用plt.legend()的方式不对,导致Matplotlib把你的字符串标签拆成单个字符处理了。

问题出在哪?

你原来的代码里,每次循环都调用plt.legend(b),这里的b是像'AA'这样的字符串。Matplotlib会把字符串当成可迭代对象,把每个字符当作独立的图例标签。而且每次调用legend()都会覆盖之前的图例设置,最后就只显示了最后一个标签的首字母(或者拆分后的单个字符)。

两种修复方案

方案1:绘图时直接指定标签(推荐)

在调用plt.plot()的时候,通过label参数绑定对应的名称,最后统一调用plt.legend()生成图例就好:

import matplotlib.pyplot as plt

bench = ['AA', 'BB']
offset = 0
for b in bench:
    L1 = [12+offset, 5+offset, 3+offset]
    L2 = [20+offset, 22+offset, 25+offset]
    offset += 5
    plt.plot(L1, L2, label=b)  # 给每条曲线绑定对应标签
plt.legend()  # 最后统一生成完整图例
plt.savefig('test4.png')
plt.show()

方案2:收集所有标签后一次性传入

如果你不想在绘图时绑定标签,也可以先把所有标签收集到列表里,最后一起传给plt.legend():

import matplotlib.pyplot as plt

bench = ['AA', 'BB']
offset = 0
labels = []
for b in bench:
    L1 = [12+offset, 5+offset, 3+offset]
    L2 = [20+offset, 22+offset, 25+offset]
    offset += 5
    plt.plot(L1, L2)
    labels.append(b)
plt.legend(labels)  # 一次性传入所有标签生成图例
plt.savefig('test4.png')
plt.show()

这两种方法都能让图例正确显示AA和BB,不会再只显示首字母啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 00:17:29