Matplotlib图例中出现相同的符号

时间:2018-10-17 10:09:07

标签: python python-3.x matplotlib

我正在古斯拉(Couseera)学习机器学习课程。我已经绘制了一个数据图并试图创建一个图例。我在网上提到并使用了这种格式

plt.figure(1)
plt.title('input data plot')
plt.xlabel('Exam 1 marks')
plt.ylabel('Exam 2 marks')
plt.plot(X[temp0,0],X[temp0,1],'or')
plt.plot(X[temp1,0],X[temp1,1],'xb')
plt.plot(x_boundary,y_boundary,'-g')
plt.legend(['Not admitted','Admitted','Decision Boundary'],numpoints=1)
plt.show()

所有类型same legend

的输出都具有相同的符号

然后我使用下面给出的另一种格式

plt.figure(1)
plt.title('input data plot')
plt.xlabel('Exam 1 marks')
plt.ylabel('Exam 2 marks')
plt.plot(X[temp0,0],X[temp0,1],'or',label='Not admitted')
plt.plot(X[temp1,0],X[temp1,1],'xb',label='Admitted')
plt.plot(x_boundary,y_boundary,'-g',label='Decision Boundary')
plt.legend()
plt.show()

所有数据都带有图例many legends

有人可以帮助我解决此问题吗?预先谢谢你。

1 个答案:

答案 0 :(得分:1)

没有更多信息,我不能肯定地说,但是我强烈怀疑您的问题出在您的数据上。如果您的值数组包含在另一个数组中,您将获得在第二个示例中看到的行为。

看这个例子,看看有什么区别:

import matplotlib.pyplot as plt
import random

# Note the extra array brackets. This is not good.
X = [[random.randint(0,10) for i in range(0,5)]]
Y = [[random.randint(0,10) for i in range(0,5)]]

X1 = [random.randint(0,10)for i in range(0,5)]
Y1 = [random.randint(0,10)for i in range(0,5)]

plt.plot(X,Y,'or',label='Double Array')
plt.plot(X1,Y1,'xb',label='Single Array')

plt.legend()
plt.show()

Example of double array's messing up legends