Creating multiple subplots using
pyplot.subplots creates a figure and a grid of subplots with a single call,
while providing reasonable control over how the individual plots are created.
For more advanced use cases you can use
GridSpec for a more general subplot
Figure.add_subplot for adding subplots at arbitrary locations
within the figure.
A figure with just one subplot#
This is actually the simplest and recommended way of creating a single Figure and Axes.
Stacking subplots in one direction#
The first two optional arguments of
pyplot.subplots define the number of
rows and columns of the subplot grid.
When stacking in one direction only, the returned
axs is a 1D numpy array
containing the list of created Axes.
If you are creating just a few Axes, it's handy to unpack them immediately to
dedicated variables for each Axes. That way, we can use
ax1 instead of
the more verbose
To obtain side-by-side subplots, pass parameters
1, 2 for one row and two
Stacking subplots in two directions#
When stacking in two directions, the returned
axs is a 2D NumPy array.
If you have to set parameters for each subplot it's handy to iterate over
all subplots in a 2D grid using
for ax in axs.flat:.
fig, axs = plt.subplots(2, 2) axs[0, 0].plot(x, y) axs[0, 0].set_title('Axis [0, 0]') axs[0, 1].plot(x, y, 'tab:orange') axs[0, 1].set_title('Axis [0, 1]') axs[1, 0].plot(x, -y, 'tab:green') axs[1, 0].set_title('Axis [1, 0]') axs[1, 1].plot(x, -y, 'tab:red') axs[1, 1].set_title('Axis [1, 1]') for ax in axs.flat: ax.set(xlabel='x-label', ylabel='y-label') # Hide x labels and tick labels for top plots and y ticks for right plots. for ax in axs.flat: ax.label_outer()
You can use tuple-unpacking also in 2D to assign all subplots to dedicated variables:
Total running time of the script: (0 minutes 6.311 seconds)