2017-06-02 97 views
1

我正在学习matplotlib库,因此试图在1图上显示2行来表示机器学习模型。这个问题与传说有关。图例中有一些代码行。我不知道如何删除它。有人可以帮助删除它吗?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() 

以上代码生成该曲线图中:

graph by above code

+1

你可能想澄清你的问题,你写“我不知道如何删除它”,指的是传说后,允许潜在的conf在你的意思中使用“it”。 – HunterM267

回答

1

如果你看看matplotlib.pyplot.legend文档,你会注意到你用错误的格式调用它。引用文档:

完全控制它的艺术家有一个图例项,就可以通过,随后分别图例标签的可迭代的传奇艺术家的迭代:

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) 
0

您可以使用(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) 

这会自动选择图例的标签。