matplotlib 3.5.1

ParametersReturns
subplots(self, nrows=1, ncols=1, *, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None)

This utility wrapper makes it convenient to create common layouts of subplots in a single call.

Parameters

nrows, ncols : int, default: 1

Number of rows/columns of the subplot grid.

sharex, sharey : bool or {'none', 'all', 'row', 'col'}, default: False

Controls sharing of x-axis (sharex) or y-axis (sharey):

  • True or 'all': x- or y-axis will be shared among all subplots.

  • False or 'none': each subplot x- or y-axis will be independent.

  • 'row': each subplot row will share an x- or y-axis.

  • 'col': each subplot column will share an x- or y-axis.

When subplots have a shared x-axis along a column, only the x tick labels of the bottom subplot are created. Similarly, when subplots have a shared y-axis along a row, only the y tick labels of the first column subplot are created. To later turn other subplots' ticklabels on, use tick_params .

When subplots have a shared axis that has units, calling .Axis.set_units will update each axis with the new units.

squeeze : bool, default: True
  • If True, extra dimensions are squeezed out from the returned array of Axes:

    • if only one subplot is constructed (nrows=ncols=1), the resulting single Axes object is returned as a scalar.

    • for Nx1 or 1xM subplots, the returned object is a 1D numpy object array of Axes objects.

    • for NxM, subplots with N>1 and M>1 are returned as a 2D array.

  • If False, no squeezing at all is done: the returned Axes object is always a 2D array containing Axes instances, even if it ends up being 1x1.

subplot_kw : dict, optional

Dict with keywords passed to the :None:None:`.Figure.add_subplot` call used to create each subplot.

gridspec_kw : dict, optional

Dict with keywords passed to the ~matplotlib.gridspec.GridSpec constructor used to create the grid the subplots are placed on.

Returns

`~.axes.Axes` or array of Axes

Either a single Axes object or an array of Axes objects if more than one subplot was created. The dimensions of the resulting array can be controlled with the squeeze keyword, see above.

Add a set of subplots to this figure.

See Also

.Figure.add_subplot
.pyplot.subplot
.pyplot.subplots

Examples

# First create some toy data: x = np.linspace(0, 2*np.pi, 400) y = np.sin(x**2)

# Create a figure plt.figure()

# Create a subplot ax = fig.subplots() ax.plot(x, y) ax.set_title('Simple plot')

# Create two subplots and unpack the output array immediately ax1, ax2 = fig.subplots(1, 2, sharey=True) ax1.plot(x, y) ax1.set_title('Sharing Y axis') ax2.scatter(x, y)

# Create four polar Axes and access them through the returned array axes = fig.subplots(2, 2, subplot_kw=dict(projection='polar')) axes[0, 0].plot(x, y) axes[1, 1].scatter(x, y)

# Share a X axis with each column of subplots fig.subplots(2, 2, sharex='col')

# Share a Y axis with each row of subplots fig.subplots(2, 2, sharey='row')

# Share both X and Y axes with all subplots fig.subplots(2, 2, sharex='all', sharey='all')

# Note that this is the same as fig.subplots(2, 2, sharex=True, sharey=True)

See :

Local connectivity graph

Hover to see nodes names; edges to Self not shown, Caped at 50 nodes.

Using a canvas is more power efficient and can get hundred of nodes ; but does not allow hyperlinks; , arrows or text (beyond on hover)

SVG is more flexible but power hungry; and does not scale well to 50 + nodes.

All aboves nodes referred to, (or are referred from) current nodes; Edges from Self to other have been omitted (or all nodes would be connected to the central node "self" which is not useful). Nodes are colored by the library they belong to, and scaled with the number of references pointing them


File: /matplotlib/figure.py#788
type: <class 'function'>
Commit: