Seit dem Upgrade von matplotlib erhalte ich folgende Fehlermeldung, wenn ich versuche, eine Legende zu erstellen:
/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),))
Dies tritt sogar bei einem trivialen Skript auf:
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()
Ich habe den Link gefunden, auf den der Fehler mich bei der Diagnose der Fehlerursache hinweist.
Sie sollten Kommas hinzufügen:
plot1, = plt.plot(a,b)
plot2, = plt.plot(a,c)
Der Grund, warum Sie die Kommas benötigen, ist, dass plt.plot () ein Tuple von Linienobjekten zurückgibt, unabhängig davon, wie viele tatsächlich mit dem Befehl erstellt werden. Ohne das Komma sind "plot1" und "plot2" Tupel anstelle von Linienobjekten, wodurch der spätere Aufruf von plt.legend () fehlschlägt.
Das Komma entpackt die Ergebnisse implizit, sodass anstelle von Tuple "plot1" und "plot2" automatisch die ersten Objekte innerhalb des Tuples werden, d. H. Die eigentlich gewünschten Linienobjekte.
http://matplotlib.sourceforge.net/users/legend_guide.html#adjusting-the-order-of-legend-items
Verwenden Sie handles
AKA Proxy artists
import matplotlib.lines as mlines
import matplotlib.pyplot as plt
blue_line = mlines.Line2D([], [], color='blue', label='My Label')
reds_line = mlines.Line2D([], [], color='reds', label='My Othes')
plt.legend(handles=[blue_line, reds_line])
plt.show()
beschriftung beim Zeichnen des Diagramms verwenden, dann kann nur u die Legende verwenden. Die Namen der X-Achsen und der Y-Achsen unterscheiden sich von den Legenden.