Open In App

Matplotlib.axes.Axes.set_aspect() in Python

The Axes Class contains most of the figure elements: Axis, Tick, Line2D, Text, Polygon, etc., and sets the coordinate system. The instances of Axes support callbacks through a callbacks attribute. Matplotlib.axes.Axes.set_aspect()` in Python is a method used to set the aspect ratio of the axes in a Matplotlib plot.

Matplotlib.axes.Axes.set_aspect() Syntax

Syntax : matplotlib.axes.Axes.set_aspect(aspect, adjustable=None, anchor=None, share=False, **kwargs)



Parameter :

  • aspect : This parameter accepts the following value {‘auto’, ‘equal’} or num.
  • adjustable : This defines which parameter will be adjusted to meet the required aspect.
  • anchor : This parameter is used to define where the Axes will be drawn if there is extra space due to aspect constraints.
  • share: This parameter is used to apply the settings to all shared Axes.

Return type: This method does not return anything (None).



Python Matplotlib.axes.Axes.set_aspect() Function

Matplotlib.axes.Axes.set_aspect() in Python is a method that is used to set the aspect ratio of the axes in a Matplotlib plot. It takes parameters such as the desired aspect ratio, adjustment behavior on axes size change, anchor point specification, and a boolean for sharing the aspect ratio between multiple axes.

Matplotlib.axes.Axes.set_aspect() Example

Below are some examples by which we can understand how to set equal aspect ratio in Matplotlib and how to add labels to the axes in Matplotlib in Python:

Data Scaling and Aspect Ratio with Matplotlib set_aspect() Function

In this example, two subplots are created using Matplotlib, where the first subplot has no set_aspect applied, and the second subplot has a set_aspect value of 2. Both subplots use logarithmic scaling and adjustable data limits.




# ImpleIn Reviewtation of matplotlib function
import matplotlib.pyplot as plt
 
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.set_xscale("log")
ax1.set_yscale("log")
ax1.set_adjustable("datalim")
ax1.plot([1, 3, 34, 4, 46, 3, 7, 45, 10],
        [1, 9, 27, 8, 29, 84, 78, 19, 48],
        "o-", color ="green")
ax1.set_xlim(1e-1, 1e2)
ax1.set_ylim(1, 1e2)
ax1.set_title("No set_aspect")
 
ax2.set_xscale("log")
ax2.set_yscale("log")
ax2.set_adjustable("datalim")
ax2.plot([1, 3, 34, 4, 46, 3, 7, 45, 10],
        [1, 9, 27, 8, 29, 84, 78, 19, 48],
        "o-", color ="green")
 
ax2.set_xlim(1e-1, 1e2)
ax2.set_ylim(1, 1e2)
ax2.set_aspect(2)
ax2.set_title("set_aspect value = 2")
 
fig.suptitle('matplotlib.axes.Axes.set_aspect() function Example\n', fontweight ="bold")
fig.canvas.draw()
plt.show()

Output:

Triangulation Using Matplotlib.axes.Axes.set_aspect() Function

In this example, the code generates a polar plot using Matplotlib with two subplots, where the first subplot lacks equal aspect scaling, and the second subplot enforces equal aspect scaling (‘equal’). Triangulation and masking are employed to highlight specific regions within the plot.




# ImpleIn Reviewtation of matplotlib function  
import matplotlib.pyplot as plt
import matplotlib.tri as tri
import numpy as np
   
n_angles = 20
n_radii = 10
min_radius = 2
radii = np.linspace(min_radius, 0.95, n_radii)
   
angles = np.linspace(0, 4 * np.pi, n_angles,
                     endpoint = False)
angles = np.repeat(angles[..., np.newaxis],
                   n_radii, axis = 1)
angles[:, 1::2] += np.pi / n_angles
   
x = (radii * np.cos(angles)).flatten()
y = (radii * np.sin(angles)).flatten()
   
triang = tri.Triangulation(x, y)
   
triang.set_mask(np.hypot(x[triang.triangles].mean(axis = 1),
                         y[triang.triangles].mean(axis = 1))
                < min_radius)
fig, (ax, ax1) = plt.subplots(1, 2)
   
ax.triplot(triang, 'bo-', lw = 1, color = "green")
ax.set_title("No set_aspect")
   
ax1.set_aspect('equal')
ax1.triplot(triang, 'bo-', lw = 1, color = "green")
ax1.set_title("set_aspect value ='equal'")
   
fig.suptitle('matplotlib.axes.Axes.set_aspect() function Example\n', fontweight ="bold")
fig.canvas.draw()
plt.show()

Output:


Article Tags :