Agregar leyenda a la figura en Matplotlib

    Introducci贸n

    Matplotlib es una de las bibliotecas de visualizaci贸n de datos m谩s utilizadas en Python. Por lo general, al visualizar m谩s de una variable, querr谩 agregar una leyenda al gr谩fico, explicando lo que representa cada variable.

    En este art铆culo, veremos c贸mo agregar una leyenda a una gr谩fica de Matplotlib.

    Crear una parcela

    Primero creemos una gr谩fica simple con dos variables:

    import matplotlib.pyplot as plt
    import numpy as np
    
    fig, ax = plt.subplots()
    
    x = np.arange(0, 10, 0.1)
    y = np.sin(x)
    z = np.cos(x)
    
    ax.plot(y, color="blue")
    ax.plot(z, color="black")
    
    plt.show()
    

    Aqu铆, hemos trazado una funci贸n seno, comenzando en 0 y termina en 10 con un paso de 0.1, as铆 como una funci贸n coseno en el mismo intervalo y paso. Ejecutar este c贸digo produce:

    Ahora, ser铆a muy 煤til etiquetarlos y agregar una leyenda para que alguien que no haya escrito este c贸digo pueda discernir m谩s f谩cilmente cu谩l es cu谩l.

    Agregar leyenda a una figura en Matplotlib

    Agreguemos una leyenda a esta trama. En primer lugar, queremos label estas variables, para que podamos hacer referencia a esas etiquetas en la leyenda. Entonces, simplemente podemos llamar legend() sobre el ax objeto para que se agregue la leyenda:

    import matplotlib.pyplot as plt
    import numpy as np
    
    fig, ax = plt.subplots()
    
    x = np.arange(0, 10, 0.1)
    y = np.sin(x)
    z = np.cos(x)
    
    ax.plot(y, color="blue", label="Sine wave")
    ax.plot(z, color="black", label="Cosine wave")
    leg = ax.legend()
    
    plt.show()
    

    Ahora, si ejecutamos el c贸digo, la trama tendr谩 una leyenda:

    Observe c贸mo la leyenda se coloc贸 autom谩ticamente en el 煤nico espacio libre donde las olas no la pasar谩n.

    Personalizar leyenda en Matplotlib

    Se agrega la leyenda, pero est谩 un poco desordenada. Eliminemos el borde que lo rodea y lo movamos a otra ubicaci贸n, adem谩s de cambiar el tama帽o de la parcela:

    import matplotlib.pyplot as plt
    import numpy as np
    
    fig, ax = plt.subplots(figsize=(12, 6))
    
    x = np.arange(0, 10, 0.1)
    y = np.sin(x)
    z = np.cos(x)
    
    ax.plot(y, color="blue", label="Sine wave")
    ax.plot(z, color="black", label="Cosine wave")
    leg = ax.legend(loc="upper right", frameon=False)
    
    plt.show()
    

    Esto resulta en:

    Aqu铆, hemos utilizado el loc argumento para especificar que nos gustar铆a poner la leyenda en la esquina superior derecha. Otros valores que se aceptan son upper left, lower left, upper right, lower right, upper center, lower center, center left y center right.

    Adem谩s, puede utilizar center ponerlo en el centro muerto, o best para colocar la leyenda en el “mejor” lugar libre para que no se superponga con ninguno de los otros elementos. Por defecto, best est谩 seleccionado.

    Agregar leyenda fuera de los ejes

    A veces, es complicado colocar la leyenda dentro del cuadro de borde de una parcela. Quiz谩s, hay muchos elementos en marcha y todo el cuadro est谩 lleno de datos importantes.

    En tales casos, puede colocar la leyenda fuera de los ejes y lejos de los elementos que la constituyen. Esto se hace a trav茅s del bbox_to_anchor argumento, que especifica d贸nde queremos anclar la leyenda:

    import matplotlib.pyplot as plt
    import numpy as np
    
    fig, ax = plt.subplots(figsize=(12, 6))
    
    x = np.arange(0, 10, 0.1)
    y = np.sin(x)
    z = np.cos(x)
    
    ax.plot(y, color="blue", label="Sine wave")
    ax.plot(z, color="black", label="Cosine wave")
    leg = ax.legend(loc="center", bbox_to_anchor=(0.5, -0.10), shadow=False, ncol=2)
    
    plt.show()
    

    Esto resulta en:

    los bbox_to_anchor argumento acepta algunos argumentos en s铆 mismo. En primer lugar, acepta una tupla, que permite hasta 4 elementos. Aqu铆, podemos especificar el x, y, width y height de la leyenda.

    Solo hemos configurado el x y y valores, para desplazarlo -0.10 debajo de los ejes, y 0.5 desde el lado izquierdo0 siendo la mano izquierda de la caja y 1 el lado derecho).

    Al ajustarlos, puede establecer la leyenda en cualquier lugar. Dentro o fuera de la caja.

    Luego, configuramos el shadow a False. Esto se usa para especificar si queremos una peque帽a sombra renderizada debajo de la leyenda o no.

    Finalmente, hemos configurado el ncol argumento para 2. Esto especifica el n煤mero de etiquetas en una columna. Como tenemos dos etiquetas y queremos que est茅n en una columna, lo hemos configurado en 2. Si cambiamos este argumento a 1, se colocar铆an uno encima del otro:

    Nota: los bbox_to_anchor El argumento se usa junto con el loc argumento. los loc El argumento pondr谩 la leyenda basada en el bbox_to_anchor. En nuestro caso, lo hemos puesto en el center de la nueva ubicaci贸n desplazada de la caja fronteriza.

    Conclusi贸n

    En este tutorial, hemos repasado c贸mo agregar una leyenda a sus gr谩ficos de Matplotlib. En primer lugar, dejamos que Matplotlib averig眉e d贸nde debe ubicarse la leyenda, despu茅s de lo cual usamos el bbox_to_anchor argumento para especificar nuestra propia ubicaci贸n, fuera de los ejes.

    Si est谩 interesado en la visualizaci贸n de datos y no sabe por d贸nde empezar, aseg煤rese de consultar nuestro libro sobre Visualizaci贸n de datos en Python.

    Data Visualization in Python, un libro para desarrolladores de Python principiantes e intermedios, lo guiar谩 a trav茅s de la manipulaci贸n simple de datos con Pandas, cubrir谩 bibliotecas de trazado centrales como Matplotlib y Seaborn, y le mostrar谩 c贸mo aprovechar las bibliotecas declarativas y experimentales como Altair.

     

    Visualizaci贸n de datos en Python

    隆Comprenda mejor sus datos con visualizaciones! Con 340 p谩ginas, aprender谩 los entresijos de la visualizaci贸n de datos en Python con bibliotecas populares como Matplotlib, Seaborn, Bokeh y m谩s.

    Etiquetas:

    Deja una respuesta

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