Añadir una leyenda a PyPlot en Matplotlib de la manera más sencilla posible
¿Cómo se puede crear una leyenda para un gráfico de líneas en Matplotlib
' s PyPlot
sin crear ninguna variable extra?
Por favor, considere el script de graficación de abajo:
if __name__ == '__main__':
PyPlot.plot(total_lengths, sort_times_bubble, 'b-',
total_lengths, sort_times_ins, 'r-',
total_lengths, sort_times_merge_r, 'g+',
total_lengths, sort_times_merge_i, 'p-', )
PyPlot.title("Combined Statistics")
PyPlot.xlabel("Length of list (number)")
PyPlot.ylabel("Time taken (seconds)")
PyPlot.show()
Como puedes ver, este es un uso muy básico de matplotlib
's PyPlot
. Esto idealmente genera un gráfico como el de abajo:
Gráfico
1
Nada especial, lo sé. Sin embargo, no está claro en cuanto a los datos que se está trazando donde (I'm tratando de trazar los datos de algunos algoritmos de clasificación, la longitud contra el tiempo tomado, y I'd como para asegurarse de que la gente sabe que la línea es que). Por lo tanto, necesito una leyenda, sin embargo, echando un vistazo al siguiente ejemplo (del sitio oficial):
ax = subplot(1,1,1)
p1, = ax.plot([1,2,3], label="line 1")
p2, = ax.plot([3,2,1], label="line 2")
p3, = ax.plot([2,3,1], label="line 3")
handles, labels = ax.get_legend_handles_labels()
# reverse the order
ax.legend(handles[::-1], labels[::-1])
# or sort them by labels
import operator
hl = sorted(zip(handles, labels),
key=operator.itemgetter(1))
handles2, labels2 = zip(*hl)
ax.legend(handles2, labels2)
Verás que necesito crear una variable extra ax
. ¿Cómo puedo añadir una leyenda a mi gráfico sin tener que crear esta variable extra y conservando la simplicidad de mi script actual?
Añada una
etiqueta=
a cada una de sus llamadas aplot()
, y luego llame alegend(loc='superior izquierda')
.Considere este ejemplo (probado con Python 3.8.0):
Ligeramente modificado a partir de este tutorial: http://jakevdp.github.io/mpl_tutorial/tutorial_pages/tut1.html
He aquí un ejemplo que le ayudará...
[]
Añade etiquetas a cada argumento de tu llamada a la gráfica correspondiente a la serie que está graficando, es decir, `label = "serie 1".
A continuación, simplemente añada
Pyplot.legend()
al final de su script y la leyenda mostrará estas etiquetas.