Rotar etiquetas de eje en Matplotlib

    Introducción

    Matplotlib es una de las bibliotecas de visualización de datos más utilizadas en Python. Gran parte de la popularidad de Matplotlib proviene de sus opciones de personalización: puede modificar casi cualquier elemento de su jerarquía de objetos.

    En este tutorial, veremos cómo rotar texto / etiquetas de eje en una gráfica de Matplotlib.

    Crear una parcela

    Primero creemos una trama simple:

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.arange(0, 10, 0.1)
    y = np.sin(x)
    
    plt.plot(x, y)
    plt.show()
    

    Rotar etiquetas del eje X en Matplotlib

    Ahora, echemos un vistazo a cómo podemos rotar las etiquetas del eje X aquí. Hay dos formas de hacerlo: cámbielo en el nivel de la Figura usando plt.xticks() o cámbielo a nivel de ejes usando tick.set_rotation() individualmente, o incluso usando ax.set_xticklabels() y ax.xtick_params().

    Comencemos con la primera opción:

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.arange(0, 10, 0.1)
    y = np.sin(x)
    
    plt.plot(x, y)
    plt.xticks(rotation = 45) # Rotates X-Axis Ticks by 45-degrees
    plt.show()
    

    Aquí, hemos configurado el rotation de xticks a 45, lo que significa una inclinación de 45 grados, en sentido antihorario:

    Nota: Esta función, como todas las demás aquí, debe llamarse después plt.plot(), no sea que las garrapatas terminen potencialmente cortadas o fuera de lugar.

    Otra opción sería obtener la corriente Axes objeto y llamada ax.set_xticklabels() en eso. Aquí podemos configurar las etiquetas, así como su rotación:

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.arange(0, 10, 0.1)
    y = np.sin(x)
    
    plt.plot(x, y)
    
    ax = plt.gca()
    plt.draw()
    
    ax.set_xticklabels(ax.get_xticks(), rotation = 45)
    
    plt.show()
    

    Nota: Para que este enfoque funcione, deberá llamar plt.draw() antes de acceder o configurar las etiquetas X tick. Esto se debe a que las etiquetas se completan después de que se dibuja el gráfico; de lo contrario, devolverán valores de texto vacíos.

    Alternativamente, podríamos haber iterado sobre el ticks en el ax.get_xticklabels() lista. Entonces, podemos llamar tick.set_rotation() en cada uno de ellos:

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.arange(0, 10, 0.1)
    y = np.sin(x)
    
    plt.plot(x, y)
    
    ax = plt.gca()
    plt.draw()
    
    for tick in ax.get_xticklabels():
        tick.set_rotation(45)
    plt.show()
    

    Esto también resulta en:

    Y finalmente, puedes usar el ax.tick_params() función y establecer la rotación de la etiqueta allí:

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.arange(0, 10, 0.1)
    y = np.sin(x)
    
    plt.plot(x, y)
    
    ax = plt.gca()
    ax.tick_params(axis="x", labelrotation = 45)
    plt.show()
    

    Esto también resulta en:

    Rotar etiquetas del eje Y en Matplotlib

    Se pueden aplicar exactamente los mismos pasos para las etiquetas del eje Y.

    En primer lugar, puede cambiarlo a nivel de figura con plt.yticks(), o en Axes-lebel usando tick.set_rotation() o manipulando el ax.set_yticklabels() y ax.tick_params().

    Comencemos con la primera opción:

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.arange(0, 10, 0.1)
    y = np.sin(x)
    
    plt.plot(x, y)
    plt.yticks(rotation = 45)
    plt.show()
    

    Como la última vez, esto establece el rotation de yticks por 45 grados:

    Ahora, trabajemos directamente con el Axes objeto:

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.arange(0, 10, 0.1)
    y = np.sin(x)
    
    plt.plot(x, y)
    
    ax = plt.gca()
    plt.draw()
    
    ax.set_yticklabels(ax.get_yticks(), rotation = 45)
    
    plt.show()
    

    La misma nota se aplica aquí, tienes que llamar plt.draw() antes de esta llamada para que funcione correctamente.

    Ahora, iteremos sobre la lista de ticksy set_rotation() en cada uno de ellos:

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.arange(0, 10, 0.1)
    y = np.sin(x)
    
    plt.plot(x, y)
    
    ax = plt.gca()
    plt.draw()
    
    for tick in ax.get_yticklabels():
        tick.set_rotation(45)
    plt.show()
    

    Esto también resulta en:

    Y finalmente, puedes usar el ax.tick_params() función y establecer la rotación de la etiqueta allí:

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.arange(0, 10, 0.1)
    y = np.sin(x)
    
    plt.plot(x, y)
    
    ax = plt.gca()
    ax.tick_params(axis="y", labelrotation = 45)
    plt.show()
    

    Esto también resulta en:

    Rotar fechas para ajustarlas en Matplotlib

    Muy a menudo, la razón por la que las personas rotan las garrapatas en sus parcelas es porque contienen fechas. Las fechas pueden ser largas e incluso con un conjunto de datos pequeño, comenzarán a superponerse y rápidamente se volverán ilegibles.

    Por supuesto, puede rotarlos como lo hicimos antes, por lo general, una inclinación de 45 grados resolverá la mayoría de los problemas, mientras que una inclinación de 90 grados liberará aún más.

    Sin embargo, hay otra opción para rotar y fijar fechas en Matplotlib, que es incluso más fácil que los métodos anteriores: fig.autofmt__date().

    Esta función se puede utilizar como fig.autofmt_xdate() o fig.autofmt_ydate() para los dos ejes diferentes.

    Echemos un vistazo a cómo podemos usarlo en el conjunto de datos meteorológicos de Seattle:

    import pandas as pd
    import matplotlib.pyplot as plt
    
    weather_data = pd.read_csv("seattleWeather.csv")
    
    fig = plt.figure()
    plt.plot(weather_data['DATE'], weather_data['PRCP'])
    fig.autofmt_xdate()
    plt.show()
    

    Esto resulta en:

    Conclusión

    En este tutorial, hemos repasado varias formas de rotar el texto / etiquetas de Axis en una gráfica de Matplotlib, incluida una forma específica de formatear y ajustar fechas.

    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 *