¿Cómo cambiar el orden de los elementos en Matplotlib Legend?

La leyenda es un método presente en el paquete Matplotlib que representa el área para describir los elementos en un diagrama/gráfico.

El orden de las etiquetas en la región de la leyenda se basó en el orden en que agregamos las líneas (datos) al gráfico.

Ejemplo:

Consideremos un DataFrame que almacena las calificaciones de los estudiantes en las pruebas semanales.

 

Raju

Hari

Bablu

Dora

Prueba-1

8

6

9

10

Prueba-2

10

4

9

9

Prueba-3

7

6

9

10

Prueba-4

7

7

9

9

Prueba-5

10

6

9

10

La tabla anterior almacena las calificaciones de 4 estudiantes en 5 pruebas. Ahora trace el gráfico con la leyenda usando los datos anteriores.

Python3

# import necessary packages
import pandas as pd
import matplotlib.pyplot as plt
  
# create a dataframe
Marks = pd.DataFrame({'Raju': [8, 10, 7, 7, 10],
                      'Hari': [6, 4, 6, 7, 6],
                      'Bablu': [9, 9, 9, 9, 9],
                      'Dora': [10, 9, 10, 9, 10]})
  
# plot marks of each student
plt.plot(Marks['Raju'], label="Raju Marks", color="Red")
plt.plot(Marks['Hari'], label="Hari Marks", color="Blue")
plt.plot(Marks['Bablu'], label="Bablu Marks", color="Yellow")
plt.plot(Marks['Dora'], label="Dora Marks", color="Black")
  
# labelling the axes
plt.xlabel("Tests")
plt.ylabel("Marks")
  
# add legend to plot
plt.legend()
plt.show()

Producción

Cambiar el orden de los elementos en la leyenda

El orden anterior de los elementos en la región de la leyenda se puede cambiar mediante el método gca que usa otro submétodo llamado método get_legend_handles_labels .

Sintaxis

identificadores, etiquetas = plt.gca().get_legend_handles_labels()

Estas listas de identificadores y etiquetas se pasan como parámetros al método de leyenda con el orden de los índices.

Considere el siguiente código de ejemplo para una comprensión detallada.

Ejemplo 1:

En este código, usamos el mismo DataFrame que usamos en el código anterior. Pero utilizó los métodos especificados anteriormente para cambiar el orden de los elementos en la región de la leyenda.

Python3

# import necessary packages
import pandas as pd
import matplotlib.pyplot as plt
  
# create a dataframe
Marks = pd.DataFrame({'Raju': [8, 10, 7, 7, 10],
                      'Hari': [6, 4, 6, 7, 6],
                      'Bablu': [9, 9, 9, 9, 9],
                      'Dora': [10, 9, 10, 9, 10]})
  
# plot marks of each student
plt.plot(Marks['Raju'], label="Raju Marks", color="Red")
plt.plot(Marks['Hari'], label="Hari Marks", color="Blue")
plt.plot(Marks['Bablu'], label="Bablu Marks", color="Yellow")
plt.plot(Marks['Dora'], label="Dora Marks", color="Black")
  
# labelling the axes
plt.xlabel("Tests")
plt.ylabel("Marks")
  
# reordering the labels
handles, labels = plt.gca().get_legend_handles_labels()
  
# specify order
order = [2, 3, 1, 0]
  
# pass handle & labels lists along with order as below
plt.legend([handles[i] for i in order], [labels[i] for i in order])
plt.show()

Producción

Ejemplo 2:

A continuación se muestra la implementación de trazar un gráfico que representa las calificaciones de los estudiantes junto con la leyenda con el orden especificado en la región de la leyenda.

Python3

# import necessary packages
import pandas as pd
import matplotlib.pyplot as plt
  
# create a dataframe
Marks = pd.DataFrame({'Raju': [8, 10, 7, 7, 10],
                      'Hari': [6, 4, 6, 7, 6],
                      'Bablu': [9, 9, 9, 9, 9],
                      'Dora': [10, 9, 10, 9, 10]})
  
# plot marks of each student
plt.plot(Marks['Raju'], label="Raju Marks", color="Red")
plt.plot(Marks['Hari'], label="Hari Marks", color="Blue")
plt.plot(Marks['Bablu'], label="Bablu Marks", color="Yellow")
plt.plot(Marks['Dora'], label="Dora Marks", color="Black")
  
# labelling the axes
plt.xlabel("Tests")
plt.ylabel("Marks")
  
# reordering the labels
handles, labels = plt.gca().get_legend_handles_labels()
  
# specify order
order = [3, 2, 1, 0]
  
# pass handle & labels lists along with order as below
plt.legend([handles[i] for i in order], [labels[i] for i in order])
plt.show()

Producción

Publicación traducida automáticamente

Artículo escrito por akhilvasabhaktula03 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *