How to equalize the scales of x-axis and y-axis in matplotlib
I wish to draw lines on a square graph.
The scales of x-axis
and y-axis
should be the same.
e.g. x ranges from 0 to 10 and it is 10cm on the screen. y has to also range from 0 to 10 and has to be also 10 cm.
The square shape has to be maintained, even if I mess around with the window size.
Currently, my graph scales together with the window size.
How may I achieve this?
UPDATE:
I tried the following, but it did not work.
plt.xlim(-3, 3)
plt.ylim(-3, 3)
plt.axis('equal')
You need to dig a bit deeper into the api to do this:
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 for set_aspect
plt.axis('scaled')
works well for me.
See the documentation on plt.axis()
. This:
plt.axis('equal')
doesn't work because it changes the limits of the axis to make circles appear circular. What you want is:
plt.axis('square')
This creates a square plot with equal axes.