Coursera Learner working on a presentation with Coursera logo and
Coursera Learner working on a presentation with Coursera logo and

Programmers often use plot for drawing points in diagrams. The plot () function creates a line starting at one point and ending at another point by default. This function considers parameters to determine the diagram’s points. The X-axis holds the points for parameter 1 while the Y-axis holds the points for parameter 2.

You can draw more than one graph situated in one plot in 2 ways in Matplotlib. The subplot () function can help create one graph while you can create the second one by superimposing it on the first, which means every graph will be present on one plot. Read further to learn how to plot multiple plots in Matplotlib.

Utilizing the Subplot () Function for Creating Multiple Plots

The Subplot () function at its core is essentially a wrapper function for helping programmers plot multiple graphs within one fixture. What makes this function quite handy is the fact that programmers only have to call it one time.


matplotlib.pyplot.subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)


nrows, ncols

With the help of these, one can determine the precise amount of columns as well as rows respectively. It is also worth keeping in mind that the use of these parameters is entirely option. The default value of these parameters is 1.

sharex, sharey

sharex and sharey are vital for determining the properties shared between the y and a axis. Their probably values can be none, col, row. Otherwise, there is always the default value denoted as False.


Unlike other values, this one is essentially a Boolean value that asks programmers about whether it should squeeze out, which means eliminate the extra dimension present in the array. Squeeze’s default value is False. 


With the help of this parameter, programmers can add keywords into every subplot. The default value of this parameter is referred to as None. 


The use of this parameter helps in adding gridis to every subplot. Again, the default value of this parameter is None.


Using the fig_kw parameter is enables programmers to add extra keyword arguments in the function call. This parameter’s default value is also None.

Matplotlib has a function that shares a fair bit of similarities with subplot. This function is referred to as subplot2grid(). At their core, this function and subplot are almost the same, but subplot2grid() offers greater flexibility when it comes to the matter of organizing plot objects in accordance with the programmers needs. 

Here is how this function is written as:


matplotlib.pyplot.subplot2grid(shape, loc, rowspan=1, colspan=1, fig=None, **kwargs)




The shape parameter is a essentially a sequence that contains 2 integer values that help us determine the grid’s shape. This is where the axes have to be placed. The initial entry is used for row while the second one is there for the column.


Similar to the shape parameter, Ioc also happens to have a 2 integer value sequence. In this sequence, the first entry is for the row while the second one is for the column for placing the axis in the grid.


The rowspan parameter uses the integer value along with the number that indicates the amount of rows the axis wll require to increase or span to the right side. 


Unlike the rowspan parameter, colspan uses the integer value along with the number indicating the total columns the axis will require for increasing the length in the downwards direction. 


The fig parameter is entirely optional and uses Figure for placing axis in. It is also worth keeping in mind that fig defaults to the current figure. 


Kwargs helps programmers to pass through extra keyword arguments towards the function call. This parameter’s default value is None. 

Creating a Plot within the Same Plot

So far, we have discussed the basics of Matplotlib and utilizing subplot to create more than one gruphs through the subplot2grid and subplot grid library. Now, let us discuss how to compile subplots in one and multiple directions. 

Compiling Subplots in a Single Direction

The two non compulsory pyplot.subplots arguments define the amount of columns and rows present in the subplot grid. When planning to stack in only one direction, the axs is essentially a1D NumPy array that contains the inventory of Axes.

Compiling Subplots in Two Directions

The returned axs when two directions are stacked is a 2D NumPy array. Those planning to create parameters for every subplot, it would be best to iterate each subplot using a two dimensional grid through for ax in axs.flat:

Sharing Axes

Every Axes is individually scaled by default. Therefore, subplots’ tick values fail to line up properly if the ranges are not the same. Setting sharey or sharex to True activates global sharing in the entire grid, which means that the vertically stacked  sublpots’ y axes share the same scale if they use sharey=True.

Just one tick label set is more than enough when it comes to subplots sharing axes. As far as inner axes go, their tick labels are removed automatically by sharey and sharex. However, there is still an empty unused space left among the subplots. 

If you want to control the subplot positioning the right way, it would be best to use GridSpec with Figure.add_gridspec followed by using the subplots technique. For instance, one can minimize the vertical subplot’s height by utilizing add_gridspec(hspace=0).label_outer.  This is an incredibly helpful method for removing ticks and labels from subplots not at the grid’s edge.

Besides True and False, sharey and sharex accept ‘col’ and ‘row’ values per column or row only. In case you plan to create a sharing structure that is more complex, it would be best to create an axe grid without sharing and then make use of axes.Axes.sharex or axes.Axes.sharey.


Forming multiple plots in Matplotlib can be tricky if one doesn’t have sufficient knowledge of the fundamentals, the right syntax and parameters. The information discussed in this piece, however, will help you plot in Matplotlib the right way, ensuring you can also create multiple plots with relative ease.