Invertir los ejes en Matplotlib

Publicado el 16 agosto 2022 por Daniel Rodríguez @analyticslane

En las gráficas es habitual que los valores representados en el eje de abscisas crezcan al desplazarse en este de izquierda a derecha. Mientras que los valores mostrados en el eje de ordenadas crecen al moverse de abajo a arriba. Aunque esta es la convención que se sigue habitualmente a la hora de crear figuras, en ciertas ocasiones puede ser mejor no adoptarla. Para conseguir esto es necesario saber cómo invertir los ejes en Matplotlib cuando se está creando una gráfica con esta librería.

Métodos para invertir los ejes en Matplotlib

Los objetos eje de las figuras de Matplotlib cuentan con una serie de métodos con los que es posible modificar el sentido en el que aumentan los valores de un eje. Un método para invertir los valores del eje x ( invert_xaxis()) y otro para el y ( invert_yaxis()).

El uso de estos métodos es bastante sencillo, de hecho, no tienen parámetros. Simplemente se deben seleccionar los ejes de la figura y llamar al método que actúa sobre el eje deseado. Lo que invertirá el sentido en el que se muestran los valores y, por lo tanto, la forma de la gráfica.

Ejemplo de uso de los métodos para invertir los ejes

La forma más fácil de comprender los efectos producidos por estos métodos en una figura es mediante un ejemplo. En el siguiente código se dibuja una función seno en cuatro subgráficas, con la peculiaridad de que en un caso los ejes son los originales, en un caso se ha cambiado el orden del eje ordenadas, en otro caso el orden del eje de abscisas y en el último ambos ejes.

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 1, 100)
y = np.sin(np.pi * x / 2)

fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, figsize=(12, 12))

ax1.plot(x, y)
ax1.set_title('Normal')

ax2.plot(x, y)
ax2.set_title('Invertido Eje X')
ax2.invert_xaxis()

ax3.plot(x, y)
ax3.set_title('Invertido Eje Y')
ax3.invert_yaxis()

ax4.plot(x, y)
ax4.set_title('Invertido Ambos Ejes')
ax4.invert_xaxis()
ax4.invert_yaxis()

plt.show()

Al ejecutar este código se obtiene una figura como la que se muestra a continuación.

Figuras en las que se ha la dirección de crecimiento en algunos ejes. La figura situada arriba a la izquierda es la configuración que se usa habitualmente. En la figura situada arriba a la derecha se ha invertido los valores del eje x. Para la figura situada abajo a la izquierda se ha invertido en eje y. Finalmente en la situada abajo a la derecha se han invertido ambos ejes.

Lo primero que se ha hecho en el código es importar las librerías necesarias y crear el conjunto de datos para la figura. Posteriormente se ha creado una figura con cuatro subgráficas ordenadas en una matriz. En la primera gráfica, situada arriba a la izquierda y cuyos ejes se encuentran en la variable ax1, se representa la función seno de forma normal. Al crear la segunda gráfica, situada arriba a la derecha, se representan los mismos datos pero invirtiendo el eje x. Usando para ello el método invert_xaxis(). Lo que produce el efecto deseado, una figura igual a la primera invertida como si fuese un espejo. En los valores del eje x se puede ver como estos van desde 1 hasta cero, al contrario de lo habitual.

La segunda fila es igual que la primera, pero en ambos casos se ha invertido los valores del eje. Empleando para ello el método invert_yaxis(). Al igual que antes ambas figuras son una versión reflejada de las de arriba.

Conclusiones

En la publicación de hoy se ha visto cómo dos métodos sencillos, invert_yaxis() y invert_yaxis(), permiten invertir los ejes en las figuras de Matplotlib. Posiblemente no sean unos métodos que se usen de forma habitual, ya que el orden por defecto es la convención empleada normalmente, pero pueden ser útiles en ciertos casos para comparar tendencias. Aunque es recomendable avisar a los usuarios para evitar que estos se puedan confundir con las figuras.