Comment faire un tracé carré avec des axes égaux dans Matplotlib

  1. set_aspect() pour faire un tracé carré avec des axes égaux
  2. Méthode axis() pour générer un tracé carré

Nous pouvons définir le rapport hauteur / largeur d’un tracé en utilisant la méthode set_aspect() pour en faire un tracé carré et la méthode axis() peut également être utilisée pour créer un tracé carré avec des axes égaux dans Matplotlib.

set_aspect() pour faire un tracé carré avec des axes égaux

Nous pouvons définir le rapport d’aspect en utilisant la fonction matplotlib.axes.Axes.set_aspect(). Si nous utilisons "equal" comme rapport d’aspect dans la fonction, nous obtenons un tracé avec la même mise à l’échelle des points de données aux unités de tracé pour l’axe X et l’axe 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()

tracé carré avec des axes égaux en utilisant set_aspect pour égaler

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

ax.set_aspect('equal')

Il définit à la fois l’axe X et l’axe Y pour avoir la même plage. Ensuite, ax.set_aspect('equal') définit les deux axes comme étant égaux.

La méthode ci-dessus ne donne un tracé carré que lorsque les plages des deux axes sont définies pour être identiques. Pour générer un tracé carré dans le cas général, nous devons définir manuellement le rapport hauteur / largeur à l’aide de la commande suivante:

axes.set_aspect(1./axes.get_data_ratio())

axes.get_data_ratio() obtient le rapport des données brutes du tracé. La valeur de sa réciproque est passée à set_aspect() pour rendre les axes égaux sans définir manuellement les limites des axes.

Code:

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

tracé carré avec des axes égaux en utilisant set_aspect general

Méthode axis() pour générer un tracé carré

Si nous passons "square" comme argument à matplotlib.pyplot.axis(), cela crée un tracé carré où les plages occupées pour les deux axes sont égales à la longueur du tracé.

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

tracé carré avec des axes égaux en utilisant la méthode des axes

Warning

La gamme d’axes de cette solution est sélectionnée automatiquement. Il est égal à ax.set_aspect('equal', adjustable='datalim'). Les limites d’axe explicites définies par l’utilisateur ne sont pas respectées.

Article connexe - Matplotlib Axes

  • Comment définir des limites pour les axes dans Matplotlib
  • Comment ajouter une étiquette sur l'axe des y à l'axe des y secondaire dans Matplotlib