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()
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()
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()
ax.set_aspect('equal', adjustable='datalim')
. Os limites explícitos dos eixos definidos pelo usuário não são respeitados.Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn