matplotlib

This Page

AxesDividerΒΆ

The axes_divider module provide helper classes to adjust the axes positions of set of images in the drawing time.

  • axes_size provides a classese of units that the size of each axes will be determined. For example, you can specify a fixed size
  • Divider this is the class that is used calculates the axes position. It divides the given renctangular area into several areas. You intialize the divider by setting the horizontal and vertical list of sizes that the division will be based on. You then use the new_locator method, whose return value is a callable object that can be used to set the axes_locator of the axes.

You first initialize the divider by specifying its grids, i.e., horiz and vert.

for example,:

rect = [0.2, 0.2, 0.6, 0.6]
horiz=[h0, h1, h2, h3]
vert=[v0, v1, v2]
divider = Divider(fig, rect, horiz, vert)

where, rect is a bounds of the box that will be divided and h0,..h3, v0,..v2 need to be an instance of classes in the axes_size. They have get_size method that returns a tuple of two floats. The first float is the relative size, and the second float is the absolute size. Consider a following grid.

v0      
v1      
h0,v2 h1 h2 h3
  • v0 => 0, 2
  • v1 => 2, 0
  • v2 => 3, 0

The height of the bottom row is always 2 (axes_divider internally assumes that the unit is inch). The first and the second rows with height ratio of 2:3. For example, if the total height of the grid 6, then the first and second row will each occupy 2/(2+3) and 3/(2+3) of (6-1) inches. The widths of columns (horiz) will be similarly determined. When aspect ratio is set, the total height (or width) will be adjusted accordingly.

The mpl_toolkits.axes_grid.axes_size contains several classes that can be used to set the horiz and vert. For example, for the vertical configuration above will be:

from mpl_toolkits.axes_grid.axes_size import Fixed, Scaled
vert = [Fixed(2), Scaled(2), Scaled(3)]

After you set up the divider object, then you create a locator instance which will be given to the axes.:

locator = divider.new_locator(nx=0, ny=1)
ax.set_axes_locator(locator)

The return value of the new_locator method is a instance of the AxesLocator class. It is a callable object that returns the location and size of the cell at the first column and the second row. You may create a locator that spans over multiple cells.:

locator = divider.new_locator(nx=0, nx=2, ny=1)

The above locator, when called, will return the position and size of the cells spanning the first and second column and the first row. You may consider it as [0:2, 1].

See the example,

[source code]

../../../_images/simple_axes_divider21.png

You can adjust the size of the each axes accroding to their x or y data limits (AxesX and AxesY), similar to the axes aspect parameter.

[source code]

../../../_images/simple_axes_divider31.png