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

Matplotlib折线图图例颜色与实际线条显示不一致问题如何解决?

问题原因

代码中存在重复绘图操作,是导致图例与线条颜色不匹配的核心原因:

  • 第一次执行df.plot()时,会自动为DataFrame的3个字段绘制3条折线,同时生成对应3个字段名的图例,折线使用matplotlib默认配色序列的前3个颜色。
  • 后续执行plt.plot(df)时,会再次为同一份DataFrame的3个字段绘制3条新折线,新折线使用配色序列的第4~6个颜色,且不会更新已有图例。

最终画布上显示的是第二次绘制的3条折线,但图例仍然保留第一次绘图生成的配色对应关系,因此出现颜色错位。

解决方法

删除冗余的plt.plot(df)语句即可。修正后的完整可运行代码如下:

import pandas as pd
import matplotlib.pyplot as plt 

d = {
    'Training': [270,180,160,150,135,130,120,110,100,95],
    'Validation': [290,220,200,180,170,173,175,185,188,195],
    'Validation Lr Drecay': [290,220,200,180,170,170,168,166,170,175]
}
df = pd.DataFrame(data=d)
df.plot()

new_list = range(1,10)
plt.xticks(new_list)
plt.grid()
plt.title('model accuracy')
plt.ylabel('Error')
plt.xlabel('Iteration')

plt.show()

如果需要手动调用plt.plot()实现绘图,则需要为每条折线指定对应标签,再手动生成图例:

# 手动绘图示例
plt.plot(df['Training'], label='Training')
plt.plot(df['Validation'], label='Validation')
plt.plot(df['Validation Lr Drecay'], label='Validation Lr Drecay')
plt.legend()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:36:08