Leyenda en pandas

pandas agrega una leyenda automáticamente cuando un gráfico tiene varias columnas. Las etiquetas de la leyenda son los nombres de las columnas y la leyenda se puede personalizar con el argumento legend de plot y con el método legend de matplotlib.

Posición de la leyenda

Llama a ax.legend sobre los ejes que devuelve plot para cambiar la posición de la leyenda con loc.

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({"Portátiles": [120, 135, 150, 145, 170, 190],
                   "Móviles": [200, 210, 190, 230, 250, 270],
                   "Tabletas": [80, 75, 90, 85, 95, 100]},
                  index = ["Ene", "Feb", "Mar", "Abr", "May", "Jun"])

ax = df.plot(marker = "o")
ax.legend(loc = "upper left")
# plt.show()

Cambiar la posición de la leyenda de un gráfico de pandas

Leyenda fuera del gráfico

Combina loc con bbox_to_anchor para colocar la leyenda fuera del gráfico.

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({"Portátiles": [120, 135, 150, 145, 170, 190],
                   "Móviles": [200, 210, 190, 230, 250, 270],
                   "Tabletas": [80, 75, 90, 85, 95, 100]},
                  index = ["Ene", "Feb", "Mar", "Abr", "May", "Jun"])

ax = df.plot(marker = "o", linewidth = 2)
ax.legend(title = "Producto", loc = "upper left", bbox_to_anchor = (1, 1),
          fontsize = 12, title_fontsize = 13)
# plt.show()

Leyenda de un gráfico de pandas fuera del gráfico

Cambiar las etiquetas

La forma más sencilla de cambiar las etiquetas es renombrar las columnas antes de representarlas.

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({"Portátiles": [120, 135, 150, 145, 170, 190],
                   "Móviles": [200, 210, 190, 230, 250, 270],
                   "Tabletas": [80, 75, 90, 85, 95, 100]},
                  index = ["Ene", "Feb", "Mar", "Abr", "May", "Jun"])

df.rename(columns = {"Portátiles": "Ventas de portátiles", "Móviles": "Ventas de móviles",
                   "Tabletas": "Ventas de tabletas"}).plot()
# plt.show()

Cambiar el nombre de las etiquetas de una leyenda de pandas

Título de la leyenda

Agrega un título a la leyenda con el argumento title de ax.legend.

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({"Portátiles": [120, 135, 150, 145, 170, 190],
                   "Móviles": [200, 210, 190, 230, 250, 270],
                   "Tabletas": [80, 75, 90, 85, 95, 100]},
                  index = ["Ene", "Feb", "Mar", "Abr", "May", "Jun"])

ax = df.plot()
ax.legend(title = "Producto", ncol = 3)
# plt.show()

Agregar un título a la leyenda de un gráfico de pandas

Invertir el orden

Establece legend = "reverse" para mostrar los elementos en orden inverso. Es útil en los gráficos apilados, para que el orden de la leyenda coincida con el orden de las barras.

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({"Portátiles": [120, 135, 150, 145, 170, 190],
                   "Móviles": [200, 210, 190, 230, 250, 270],
                   "Tabletas": [80, 75, 90, 85, 95, 100]},
                  index = ["Ene", "Feb", "Mar", "Abr", "May", "Jun"])

df.plot.bar(stacked = True, legend = "reverse", rot = 0)
# plt.show()

Invertir el orden de la leyenda en pandas

Eliminar la leyenda

Establece legend = False para crear el gráfico sin leyenda.

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({"Portátiles": [120, 135, 150, 145, 170, 190],
                   "Móviles": [200, 210, 190, 230, 250, 270],
                   "Tabletas": [80, 75, 90, 85, 95, 100]},
                  index = ["Ene", "Feb", "Mar", "Abr", "May", "Jun"])

df.plot(legend = False)
# plt.show()

Eliminar la leyenda de un gráfico de pandas

Consulta el tutorial sobre la leyenda en matplotlib para el resto de opciones de la leyenda.

Storytelling con Datos

Visualización de datos para profesionales

Comprar en Amazon

También te puede interesar