matplotlib画图时使用legend报错UserWarning: Legend does not support [

在画图时想要为所画的线添加legend,却遇到了报错:

“UserWarning: Legend does not support [<matplotlib.lines.Line2D object at 0x0000022F2B3E4198>] instances.
A proxy artist may be used instead.”

代码如下:

import matplotlib.pyplot as plt

a = [1,2,3]
b = [4,5,6]
c = [7,8,9]
plot1 = plt.plot(a,b)
plot2 = plt.plot(a,c)
plt.legend([plot1,plot2],["plot 1", "plot 2"])
plt.show()


解决办法是在plot1,plot2后加逗号:

plot1, = plt.plot(a,b)
plot2,= plt.plot(a,c)

之所以需要逗号是因为plt.plot()返回一个行对象的元组,无论从命令实际创建了多少个。如果没有逗号,“plot1”和“plot2”是元组而不是行对象,这使得后来对plt.legend()的调用失败。

评论