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

Python Matplotlib绘图中重复定义颜色的UserWarning问题求助

解决Matplotlib绘图时颜色冗余定义的警告

嘿,我来帮你搞定这个警告问题!其实原因很简单,咱们一步步拆解:

警告的根源

你调用plt.plot()时,同时用了两种方式指定颜色:

  • 格式字符串 "r--" 里的 r 代表红色,后面的 -- 是线型(虚线)
  • 后续的 color=clr[n] 又指定了另一种颜色(比如你列表里的red、black等)

Matplotlib检测到重复定义颜色后,就会弹出这个警告:它会优先采用color参数指定的颜色,同时提醒你格式字符串里的颜色设置是冗余的。虽然不影响绘图结果,但看着警告总归有点闹心对吧?

两种修复方法

方法1(最简洁):去掉格式字符串里的颜色代码

把 "r--" 改成 "--",只保留线型定义,这样就不会和color参数冲突了:

plt.xlabel('Frequency (Hz)')
plt.ylabel('Amplification')
clr = ["red","black","green","blue","purple","magenta","cyan","orange"]
for n in range(0,nbr):
    tmpd = df[df.cluster==n]
    std = [np.std(tmpd['fq1']),np.std(tmpd['fq2']),np.std(tmpd['fq3']),np.std(tmpd['fq4']), 
           np.std(tmpd['fq5']),np.std(tmpd['fq6']),np.std(tmpd['fq7']),np.std(tmpd['fq8']), 
           np.std(tmpd['fq9']),np.std(tmpd['fq10']),np.std(tmpd['fq11'])]
    plt.plot(freq,km.cluster_centers_[n,:], color=clr[n])
    # 移除格式字符串中的颜色标识"r"
    plt.plot(freq,km.cluster_centers_[n,:]+std, "--", color=clr[n])
    plt.plot(freq,km.cluster_centers_[n,:]-std, "--", color=clr[n])

方法2:拆分格式参数,用linestyle指定线型

如果你习惯更清晰的参数写法,也可以把线型单独用linestyle参数指定,完全不用格式字符串:

plt.plot(freq,km.cluster_centers_[n,:]+std, linestyle="--", color=clr[n])
plt.plot(freq,km.cluster_centers_[n,:]-std, linestyle="--", color=clr[n])

额外说明

这个警告和Python版本更新没关系,是Matplotlib的友好提示机制,目的是让你的代码更严谨,避免冗余的参数定义。修改之后警告就会消失啦,放心用~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 19:34:05