matplotlib.pyplot.subplot#
- matplotlib.pyplot.subplot(*args, **kwargs)[source]#
 Add an Axes to the current figure or retrieve an existing Axes.
This is a wrapper of
Figure.add_subplotwhich provides additional behavior when working with the implicit API (see the notes section).Call signatures:
subplot(nrows, ncols, index, **kwargs) subplot(pos, **kwargs) subplot(**kwargs) subplot(ax)
- Parameters:
 - *argsint, (int, int, index), or 
SubplotSpec, default: (1, 1, 1) The position of the subplot described by one of
Three integers (nrows, ncols, index). The subplot will take the index position on a grid with nrows rows and ncols columns. index starts at 1 in the upper left corner and increases to the right. index can also be a two-tuple specifying the (first, last) indices (1-based, and including last) of the subplot, e.g.,
fig.add_subplot(3, 1, (1, 2))makes a subplot that spans the upper 2/3 of the figure.A 3-digit integer. The digits are interpreted as if given separately as three single-digit integers, i.e.
fig.add_subplot(235)is the same asfig.add_subplot(2, 3, 5). Note that this can only be used if there are no more than 9 subplots.A
SubplotSpec.
- projection{None, 'aitoff', 'hammer', 'lambert', 'mollweide', 'polar', 'rectilinear', str}, optional
 The projection type of the subplot (
Axes). str is the name of a custom projection, seeprojections. The default None results in a 'rectilinear' projection.- polarbool, default: False
 If True, equivalent to projection='polar'.
- sharex, sharey
Axes, optional Share the x or y
axiswith sharex and/or sharey. The axis will have the same limits, ticks, and scale as the axis of the shared Axes.- labelstr
 A label for the returned Axes.
- *argsint, (int, int, index), or 
 - Returns:
 AxesThe Axes of the subplot. The returned Axes can actually be an instance of a subclass, such as
projections.polar.PolarAxesfor polar projections.
- Other Parameters:
 - **kwargs
 This method also takes the keyword arguments for the returned Axes base class; except for the figure argument. The keyword arguments for the rectilinear base class
Axescan be found in the following table but there might also be other keyword arguments if another projection is used.Property
Description
{'box', 'datalim'}
a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array and two offsets from the bottom left corner of the image
float or None
(float, float) or {'C', 'SW', 'S', 'SE', 'E', 'NE', ...}
bool
{'auto', 'equal'} or float
bool
unknown
unknown
Callable[[Axes, Renderer], Bbox]
bool or 'line'
float or None
BboxBaseor Nonebool
Patch or (Path, Transform) or None
bool or "auto"
bool
str
bool
object
bool
bool
unknown
list of
AbstractPathEffectNone or bool or float or callable
[left, bottom, width, height] or
BboxCyclerfloat or None
bool
(scale: float, length: float, randomness: float)
bool or None
unknown
str
str
bool
(lower: float, upper: float)
str
(left: float, right: float)
float greater than -0.5
unknown
unknown
unknown
(lower: float, upper: float)
str
(bottom: float, top: float)
float greater than -0.5
unknown
unknown
unknown
float
Notes
Changed in version 3.8: In versions prior to 3.8, any preexisting Axes that overlap with the new Axes beyond sharing a boundary was deleted. Deletion does not happen in more recent versions anymore. Use
Axes.removeexplicitly if needed.If you do not want this behavior, use the
Figure.add_subplotmethod or thepyplot.axesfunction instead.If no kwargs are passed and there exists an Axes in the location specified by args then that Axes will be returned rather than a new Axes being created.
If kwargs are passed and there exists an Axes in the location specified by args, the projection type is the same, and the kwargs match with the existing Axes, then the existing Axes is returned. Otherwise a new Axes is created with the specified parameters. We save a reference to the kwargs which we use for this comparison. If any of the values in kwargs are mutable we will not detect the case where they are mutated. In these cases we suggest using
Figure.add_subplotand the explicit Axes API rather than the implicit pyplot API.Examples
plt.subplot(221) # equivalent but more general ax1 = plt.subplot(2, 2, 1) # add a subplot with no frame ax2 = plt.subplot(222, frameon=False) # add a polar subplot plt.subplot(223, projection='polar') # add a red subplot that shares the x-axis with ax1 plt.subplot(224, sharex=ax1, facecolor='red') # delete ax2 from the figure plt.delaxes(ax2) # add ax2 to the figure again plt.subplot(ax2) # make the first Axes "current" again plt.subplot(221)
Examples using matplotlib.pyplot.subplot#
Controlling view limits using margins and sticky_edges