# Make a Square Plot With Equal Axes in Matplotlib

We can set the aspect ratio of a plot using the `set_aspect()` method to make it a square plot and `axis()` method can also be used to make a square plot with equal axes in Matplotlib.

## `set_aspect()` to Make a Square Plot With Equal Axes

We can set the aspect ratio using `matplotlib.axes.Axes.set_aspect()` function. If we use `"equal"` as an aspect ratio in the function, we get a plot with the same scaling from data points to plot units for X-axis and Y-axis.

``````import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-3,3,100)
y = np.sin(x)

fig = plt.figure()

plt.plot(x, y)
plt.xlim(-3,3)
plt.ylim(-3,3)

plt.xlabel("x")
plt.ylabel("sinx")

plt.show()

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

ax.set_aspect('equal')
``````

It sets both X-axis and Y-axis to have the same range. Then `ax.set_aspect('equal')` sets both axes to be equal.

The above method only yields a square plot when ranges for both axes are set to be the same. To generate a square plot in the general case, we have to manually set the aspect ratio using the following command:

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

`axes.get_data_ratio()` gets the ratio of the raw plot data. The value of its reciprocal is passed to `set_aspect()` to make axes equal without setting the limits of axes manually.

Code:

``````import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-3,3,100)
y = np.sin(x)

fig = plt.figure()

plt.plot(x, y)

plt.xlabel("x")
plt.ylabel("sinx")
plt.show()
`````` ## `axis()` Method to Generate Square Plot

If we pass `"square"` as an argument to `matplotlib.pyplot.axis()`, it creates a square plot where the ranges for both axes occupy are equal to the length in plot.

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

The range of axes in this solution are selected automatically. It is equal to `ax.set_aspect('equal', adjustable='datalim')`. The explicit axis limits set by the user are not respected.

Contribute
DelftStack is a collective effort contributed by software geeks like you. If you like the article and would like to contribute to DelftStack by writing paid articles, you can check the write for us page.

## Related Article - Matplotlib Axes

• Plot Logarithmic Axes in Matplotlib
• Rotate X-Axis Tick Label Text in Matplotlib