Add an Axes to the current figure or retrieve an existing Axes.
This is a wrapper of Figure.add_subplot
which 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)
SubplotSpec
, default: (1, 1, 1)
The position of the subplot described by one of
fig.add_subplot(3, 1, (1, 2))
makes a subplot that spans the upper 2/3 of the figure.fig.add_subplot(235)
is the same as fig.add_subplot(2, 3, 5)
. Note that this can only be used if there are no more than 9 subplots.SubplotSpec
.The projection type of the subplot (Axes
). str is the name of a custom projection, see projections
. The default None results in a 'rectilinear' projection.
If True, equivalent to projection='polar'.
Axes
, optional
Share the x or y axis
with sharex and/or sharey. The axis will have the same limits, ticks, and scale as the axis of the shared axes.
A label for the returned axes.
axes.SubplotBase
, or another subclass of Axes
The axes of the subplot. The returned axes base class depends on the projection used. It is Axes
if rectilinear projection is used and projections.polar.PolarAxes
if polar projection is used. The returned axes is then a subplot subclass of the base class.
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 Axes
can 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 | |
scalar or None | |
(float, float) or {'C', 'SW', 'S', 'SE', 'E', 'NE', ...} | |
bool | |
{'auto', 'equal'} or float | |
bool | |
bool | |
bool | |
Callable[[Axes, Renderer], Bbox] | |
bool or 'line' | |
float or None | |
bool | |
Patch or (Path, Transform) or None | |
| color |
bool | |
str | |
bool | |
object | |
bool | |
unknown | |
None or bool or float or callable | |
[left, bottom, width, height] or | |
unknown | |
float or None | |
bool | |
(scale: float, length: float, randomness: float) | |
bool or None | |
str | |
str | |
bool | |
unknown | |
str | |
(bottom: float, top: float) | |
float greater than -0.5 | |
{"linear", "log", "symlog", "logit", ...} or | |
unknown | |
unknown | |
unknown | |
str | |
(bottom: float, top: float) | |
float greater than -0.5 | |
{"linear", "log", "symlog", "logit", ...} or | |
unknown | |
unknown | |
float |
Creating a new Axes will delete any pre-existing Axes that overlaps with it beyond sharing a boundary:
import matplotlib.pyplot as plt # plot a line, implicitly creating a subplot(111) plt.plot([1, 2, 3]) # now create a subplot which represents the top plot of a grid # with 2 rows and 1 column. Since this subplot will overlap the # first, the plot (and its axes) previously created, will be removed plt.subplot(211)
If you do not want this behavior, use the Figure.add_subplot
method or the pyplot.axes
function 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_subplot
and the explicit Axes API rather than the implicit pyplot API.
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)
matplotlib.pyplot.subplot
© 2012–2021 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/3.5.1/api/_as_gen/matplotlib.pyplot.subplot.html