Python Matplotlib图例显示了一些意外的代码行

Python Matplotlib图例显示了一些意外的代码行,python,matplotlib,Python,Matplotlib,我正在学习matplotlib库,因此尝试在一个图形上显示两条线来表示机器学习模型。问题在于传说。图例中有一些代码行。我不知道如何移除它。有人能帮我把它移走吗 alldata=plt.plot(x,y,'o') l1 =plt.plot(x_new, model1(x_new),'r',linestyle='dashed',linewidth=4) l2 =plt.plot(x_new, model2(x_new),'g',linewidth=4) plt.title('no. of bench

我正在学习matplotlib库,因此尝试在一个图形上显示两条线来表示机器学习模型。问题在于传说。图例中有一些代码行。我不知道如何移除它。有人能帮我把它移走吗

alldata=plt.plot(x,y,'o')
l1 =plt.plot(x_new, model1(x_new),'r',linestyle='dashed',linewidth=4)
l2 =plt.plot(x_new, model2(x_new),'g',linewidth=4)
plt.title('no. of bench employees needed for new projects over last 5 years')
plt.xlabel('year')
plt.ylabel('employees/month')
plt.xticks([W*12 for W in range(6)],['year %i'%w for w in range(6)])
plt.legend([("alldata"),(l1,"d=%i" %model1.order),(l2,"d=%i" %model2.order)], loc=1)
plt.autoscale(tight=True)
plt.grid()
plt.show()
上述代码生成此图:


在调用
plt.plot时,为每行添加
label='some unique label'
。请参阅。

您自己使用
(l1,“d=%i”%model1.order)
将这些标签放在那里。从标签上移除
l1
,使其消失

plt.legend([("d=%i" %model1.order),("d=%i" %model2.order),("alldata")], loc=1)
或者只是

plt.legend(["d=%i" %model1.order,"d=%i" %model2.order, "alldata"], loc=1)
为了保持秩序,还要提供把手

plt.legend(handles=[alldata[0], l1[0], l2[0]],
           labels=["alldata", "d=%i" %model1.order,"d=%i" %model2.order], loc=1)
另一种方法是在绘图命令中指定绘图的标签

plt.plot(..., label="alldata")
plt.plot(..., label="label1")
plt.legend(loc=1)
这将自动为图例选择标签。

如果查看文档,您会发现您使用了错误的格式调用了它。引用文件:

要完全控制哪些艺术家有图例条目,可以分别传递图例艺术家列表和图例标签列表:

legend((line1, line2, line3), ('label1', 'label2', 'label3'))
因此,您需要传入两个元组:

plt.legend((alldata[0], l1[0], l2[0]),                                # plots
           ("alldata","d=%i" % model1.order, "d=%i" % model2.order),  # names
           loc=1)

你可能想澄清你的问题,当你提到这个传说后写下“我不知道如何删除它”,考虑到你对“它”的含义可能会产生混淆。