Rotar etiquetas de eje en Matplotlib

R

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.

.

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad