Como fazer uma parcela quadrada com eixos iguais em Matplotlib

Suraj Joshi 15 fevereiro 2024
  1. set_aspect() para fazer um terreno quadrado com eixos iguais
  2. axis() Método para Gerar Lote Quadrado
Como fazer uma parcela quadrada com eixos iguais em Matplotlib

Podemos definir a relação de aspecto de um terreno utilizando o método set_aspect() para fazer um terreno quadrado e o método axis() também pode ser utilizado para fazer um terreno quadrado com eixos iguais em Matplotlib.

set_aspect() para fazer um terreno quadrado com eixos iguais

Podemos definir a relação de aspecto utilizando a função matplotlib.axes.Axes.set_aspect(). Se utilizarmos "equal" como uma relação de aspecto na função, obtemos um gráfico com a mesma escala de pontos de dados para as unidades de gráfico dos eixos X e 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()

gráfico quadrado com eixos iguais utilizando set_aspect to equal

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

ax.set_aspect("equal")

Define ambos os eixos X e Y para ter a mesma faixa. Em seguida, ax.set_aspect('equal') define ambos os eixos como iguais.

O método acima só produz um gráfico quadrado quando os intervalos para ambos os eixos são definidos para ser o mesmo. Para gerar um gráfico quadrado no caso geral, temos que definir manualmente a relação de aspecto utilizando o seguinte comando:

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

axes.get_data_ratio() obtém a relação dos dados brutos do lote. O valor de seu recíproco é passado para set_aspect() para tornar os eixos iguais sem definir os limites dos eixos 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áfico quadrado com eixos iguais utilizando set_aspect general

axis() Método para Gerar Lote Quadrado

Se passarmos o "square" como argumento para matplotlib.pyplot.axis(), cria-se um terreno quadrado onde as faixas para ambos os eixos ocupam o mesmo comprimento no terreno.

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()

gráfico quadrado com eixos iguais utilizando o método dos eixosl

Advertência
A gama de eixos desta solução é selecionada automaticamente. É igual a ax.set_aspect('equal', adjustable='datalim'). Os limites explícitos dos eixos definidos pelo usuário não são respeitados.
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Artigo relacionado - Matplotlib Axes