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

Suraj Joshi 30 janvier 2023
  1. set_aspect() pour faire un tracé carré avec des axes égaux
  2. Méthode axis() pour générer un tracé carré
Comment faire un tracé carré avec des axes égaux dans Matplotlib

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.0 / 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.
Auteur: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Article connexe - Matplotlib Axes