200 votes

Comment égaliser les échelles de l'axe des x et de l'axe des y dans matplotlib ?

Je souhaite tracer des lignes sur un graphique carré.

Les échelles de x-axis y y-axis devraient être les mêmes.

Par exemple, x est compris entre 0 et 10 et mesure 10 cm sur l'écran. y doit également être compris entre 0 et 10 et mesurer également 10 cm.

La forme carrée doit être maintenue, même si je modifie la taille de la fenêtre.

Actuellement, mon graphique s'adapte à la taille de la fenêtre.

Comment puis-je y parvenir ?

UPDATE :

J'ai essayé ce qui suit, mais cela n'a pas fonctionné.

plt.xlim(-3, 3)
plt.ylim(-3, 3)
plt.axis('equal')

269voto

tcaswell Points 21489

Vous devez creuser un peu plus profondément dans l'api pour faire cela :

from matplotlib import pyplot as plt
plt.plot(range(5))
plt.xlim(-3, 3)
plt.ylim(-3, 3)
plt.gca().set_aspect('equal', adjustable='box')
plt.draw()

doc pour set_aspect

92voto

myx Points 1063
plt.axis('scaled')

fonctionne bien pour moi.

60voto

Adam Stewart Points 1389

Ver la documentation sur plt.axis() . Ceci :

plt.axis('equal')

ne fonctionne pas car il modifie les limites de l'axe pour faire apparaître des cercles. Ce que vous voulez, c'est :

plt.axis('square')

Cela crée un graphique carré avec des axes égaux.

22voto

Dman2 Points 670

Essayez quelque chose comme :

import pylab as p
p.plot(x,y)
p.axis('equal')
p.show()

0voto

rzb Points 21

Vous pouvez étirer le tracé au carré en utilisant ceci :

fig = plt.figure(figsize=(1, 1))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X