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')
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
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()
Method 2
plt.axis('scaled')
works well for me.
Method 3
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.
Method 4
Try something like:
import pylab as p
p.plot(x,y)
p.axis('equal')
p.show()
Method 5
you can stretch the plot to square using this :
fig = plt.figure(figsize=(1, 1))
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0