Cómo hacer una gráficos cuadrada con ejes iguales en Matplotlib

Suraj Joshi 30 enero 2023
  1. set_aspect() para hacer un diagrama cuadrado con ejes iguales
  2. Método axis() para generar un diagrama cuadrado
Cómo hacer una gráficos cuadrada con ejes iguales en Matplotlib

Podemos establecer la relación de aspecto de una gráfica usando el método set_aspect() para convertirla en una gráfica cuadrada y el método axis() también se puede usar para hacer una gráfica cuadrada con ejes iguales en Matplotlib.

set_aspect() para hacer un diagrama cuadrado con ejes iguales

Podemos establecer la relación de aspecto utilizando la función matplotlib.axes.Axes.set_aspect(). Si usamos "equal" como una relación de aspecto en la función, obtenemos un gráfico con la misma escala desde los puntos de datos a las unidades de gráfico para el eje X y el eje Y.

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-3, 3, 100)
y = np.sin(x)

fig = plt.figure()
ax = fig.add_subplot(111)

plt.plot(x, y)
plt.xlim(-3, 3)
plt.ylim(-3, 3)

ax.set_aspect("equal", adjustable="box")

plt.xlabel("x")
plt.ylabel("sinx")

plt.show()

diagrama cuadrado con ejes iguales usando set_aspect to equal

plt.xlim(-3, 3)
plt.ylim(-3, 3)

ax.set_aspect("equal")

Establece tanto el eje X como el eje Y para que tengan el mismo rango. Entonces ax.set_aspect('equal') establece que ambos ejes sean iguales.

El método anterior solo produce una gráfica cuadrada cuando los rangos para ambos ejes se configuran de la misma manera. Para generar una gráfica cuadrada en el caso general, tenemos que establecer manualmente la relación de aspecto usando el siguiente comando:

axes.set_aspect(1.0 / axes.get_data_ratio())

axes.get_data_ratio() obtiene la proporción de los datos de trama sin procesar. El valor de su recíproco se pasa a set_aspect() para que los ejes sean iguales sin establecer los límites de los ejes manualmente.

Código:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-3, 3, 100)
y = np.sin(x)

fig = plt.figure()
ax = fig.add_subplot(111)

plt.plot(x, y)

ax.set_aspect(1.0 / ax.get_data_ratio(), adjustable="box")

plt.xlabel("x")
plt.ylabel("sinx")
plt.show()

gráficos cuadrada con ejes iguales usando set_aspect general

Método axis() para generar un diagrama cuadrado

Si pasamos "square" como argumento a matplotlib.pyplot.axis(), crea un gráfico cuadrado donde los rangos para ambos ejes ocupan son iguales a la longitud en la gráfica.

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-3, 3, 100)
y = np.sin(x)
plt.plot(x, y)
plt.axis("square")
plt.xlabel("x")
plt.ylabel("sinx")
plt.show()

diagrama cuadrado con ejes iguales usando el método de eje

Warning
El rango de ejes en esta solución se selecciona automáticamente. Es igual a ax.set_aspect('equal', ajustable = 'datalim'). Los límites de eje explícitos establecidos por el usuario no se respetan.
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artículo relacionado - Matplotlib Axes