Похоже, вы пытаетесь заполнить легенду фактическим точечным графиком или, по крайней мере, ссылаться на то, что происходит на точечном графике.Чтобы создать легенду, вы должны нарисовать ее как отдельную сущность - это означает, что формы и цвета точки разброса необходимо воссоздать, например, как вспомогательный участок.Это немного более ручной подход, но он должен работать:
colors = ['k','r','g','r','b']
ax = plt.axes()
ax.scatter(arr[:,0],arr[:,1],c=['k','r','g','r','b'])
line1 = plt.Line2D(range(10), range(10), marker='o', color=colors[0])
line2 = plt.Line2D(range(10), range(10), marker='o',color=colors[1])
line3 = plt.Line2D(range(10), range(10), marker='o',color=colors[2])
line4 = plt.Line2D(range(10), range(10), marker='o',color=colors[3])
line5 = plt.Line2D(range(10), range(10), marker='o',color=colors[4])
plt.legend((line1,line2,line3, line4, line5),('color1','color2', 'color3', 'color4', 'color5'),numpoints=1, loc=1)
plt.show()