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
相关产品推荐
相关产品推荐

