Od czasu aktualizacji matplotlib za każdym razem, gdy próbuję utworzyć legendę, pojawia się następujący błąd:
/usr/lib/pymodules/python2.7/matplotlib/legend.py:610: UserWarning: Legend does not support [<matplotlib.lines.Line2D object at 0x3a30810>]
Use proxy artist instead.
http://matplotlib.sourceforge.net/users/legend_guide.html#using-proxy-artist
warnings.warn("Legend does not support %s\nUse proxy artist instead.\n\nhttp://matplotlib.sourceforge.net/users/legend_guide.html#using-proxy-artist\n" % (str(orig_handle),))
/usr/lib/pymodules/python2.7/matplotlib/legend.py:610: UserWarning: Legend does not support [<matplotlib.lines.Line2D object at 0x3a30990>]
Use proxy artist instead.
http://matplotlib.sourceforge.net/users/legend_guide.html#using-proxy-artist
warnings.warn("Legend does not support %s\nUse proxy artist instead.\n\nhttp://matplotlib.sourceforge.net/users/legend_guide.html#using-proxy-artist\n" % (str(orig_handle),))
Dzieje się tak nawet w przypadku trywialnego skryptu, takiego jak ten:
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()
Znalazłem link, który wskazuje na błąd, całkiem bezużyteczny w diagnozowaniu źródła błędu.
źródło
Użyj słowa kluczowego „etykieta”, na przykład:
pyplot.plot(x, y, label='x vs. y')
a następnie dodaj legendę w ten sposób:
Legenda zachowa właściwości linii, takie jak grubość, kolory itp.
źródło
Użyj
handles
AKAProxy artists
import matplotlib.lines as mlines import matplotlib.pyplot as plt # defining legend style and data blue_line = mlines.Line2D([], [], color='blue', label='My Label') reds_line = mlines.Line2D([], [], color='red', label='My Othes') plt.legend(handles=[blue_line, reds_line]) plt.show()
źródło
użyj etykiety podczas kreślenia wykresu, wtedy tylko ty możesz używać legendy. nazwa osi x i nazwa osi y jest inna niż nazwa legendy.
źródło