Skip to Content

How to set the aspect ratio in Matplotlib?

In this tutorial, we’ll try to understand how to set the aspect ratio of a plot in Matplotlib with the help of some examples.

Before looking at how to set an aspect ratio, let us first understand what is the aspect ratio.

In matplotlib, the Aspect ratio is simple, the ratio of length to width of any plot or image that we want to display.

Setting Aspect ratio

You can easily adjust the aspect ratio in matplotlib by using the set_aspect method from the axes class. Since this method is an Axes class method, you’ll have to use the plot’s respective Axes object to use this.

Basic Syntax:

Axes.set_aspect(aspect, adjustable=None, anchor=None, share=False)

Parameters:

  • aspect: {‘auto’, ‘equal’} or float
    • auto: fill the position rectangle with data (this is the default).
    • equal: same as aspect=1, i.e. same scaling for x and y.
    • float: The displayed size of 1 unit in y-data coordinates will be aspect times the displayed size of 1 unit in x-data coordinates; e.g. for aspect=2 a square in data coordinates will be rendered with a height of twice its width.
  • adjustable: None or {‘box’, ‘datalim’}, optional
    • If not None, this defines which parameter will be adjusted to meet the required aspect. See set_adjustable for further details.

For a detailed explanation of the remaining parameters, refer to this.

Examples

Now, let us see some examples to demonstrate the above method.

Example 1 – When the aspect ratio is not defined

Code:

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0,5,0.01)
y = np.sin(10*x)
plt.figure(figsize = (10,3))
plt.plot(x,y)

Output:

resulting plot with default aspect ratio

In the above code, we first imported the required modules. Then we generated a range of x values using np.arange method(more details here ). Then, we generated the corresponding y values considering sin10x as our curve, which we plot. Then finally, we’re adjusting the figure size and plotting the curve.

Example 2 – Adjusting the aspect ratio

Use the Axes object’s set_aspect() function to set the aspect ratio of a plot. Pass the desired aspect ratio (height-to-width ratio) as an argument.

Code:

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0,5,0.01)
y = np.sin(10*x)
plt.figure(figsize = (10,3))
ax = plt.gca() #you first need to get the axis handle
ax.set_aspect(2) #sets the height to weight ratio to 2
plt.plot(x,y)

Output:

plot with custom aspect ratio

In the above code, we find imported required modules. Then we generated a range of x values using np.arange method and generated the corresponding y values considering sin10x as our curve, which we plot. Then, we’re adjusting the figure and set the aspect ratio to be equal to 2. Note that we use the plt.gca() function to get the Axes object of the current plot using which we apply the set_aspect() function.

Example 3 – Adjusting the aspect ratio to be ‘equal’

Let’s now set the aspect ratio to be ‘equal’ which sets the aspect ratio to 1.

Code:

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0,5,0.01)
y = np.sin(10*x)
plt.figure(figsize = (10,3))
ax = plt.gca() #you first need to get the axis handle
ax.set_aspect('equal')
plt.plot(x,y)

Output:

plot with aspect ratio set to 'auto'

Here, we’re adjusting the figure and setting the aspect ratio to ‘equal’ (which indicates value 1), and plotting the figure.

You might also be interested in –


Subscribe to our newsletter for more informative guides and tutorials.
We do not spam and you can opt out any time.


Author

  • Chaitanya Betha

    I'm an undergrad student at IIT Madras interested in exploring new technologies. I have worked on various projects related to Data science, Machine learning & Neural Networks, including image classification using Convolutional Neural Networks, Stock prediction using Recurrent Neural Networks, and many more machine learning model training. I write blog articles in which I would try to provide a complete guide on a particular topic and try to cover as many different examples as possible with all the edge cases to understand the topic better and have a complete glance over the topic.