Como fazer uma parcela quadrada com eixos iguais em Matplotlib

  1. set_aspect() para fazer um terreno quadrado com eixos iguais
  2. axis() Método para Gerar Lote Quadrado

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./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.

Artigo relacionado - Matplotlib Axes

  • Como definir o tamanho da fonte dos Rótulos em Matplotlib
  • Como estabelecer limites para os eixos em Matplotlib