Calls 1 and 2 achieve the same thing as one another (up to a limit, explained below). Think of them as first specifying the grid layout with their first 2 numbers (2x2, 1x8, 3x4, etc), e.g:
f.add_subplot(3,4,1) # is equivalent to:f.add_subplot(341)
Both produce a subplot arrangement of (3 x 4 = 12) subplots in 3 rows and 4 columns. The third number in each call indicates which axis object to return, starting from 1 at the top left, increasing to the right.
This code illustrates the limitations of using call 2:
#!/usr/bin/env python3import matplotlib.pyplot as pltdef plot_and_text(axis, text):'''Simple function to add a straight lineand text to an axis object'''axis.plot([0,1],[0,1])axis.text(0.02, 0.9, text)f = plt.figure()f2 = plt.figure()_max = 12for i in range(_max):axis = f.add_subplot(3,4,i+1, fc=(0,0,0,i/(_max*2)), xticks=[], yticks=[])plot_and_text(axis,chr(i+97) + ') ' + '3,4,' +str(i+1))# If this check isn't in place, a # ValueError: num must be 1 <= num <= 15, not 0 is raisedif i < 9:axis = f2.add_subplot(341+i, fc=(0,0,0,i/(_max*2)), xticks=[], yticks=[])plot_and_text(axis,chr(i+97) + ') ' + str(341+i))f.tight_layout()f2.tight_layout()plt.show()
You can see with call 1 on the LHS you can return any axis object, however with call 2 on the RHS you can only return up to index = 9 rendering subplots j), k), and l) inaccessible using this call.
I.e it illustrates this point from the documentation:
pos is a three digit integer, where the first digit is the number of rows, the second the number of columns, and the third the index of the subplot. i.e. fig.add_subplot(235) is the same as fig.add_subplot(2, 3, 5). Note that all integers must be less than 10 for this form to work.
In rare circumstances, add_subplot may be called with a single argument, a subplot axes instance already created in the present figure but not in the figure's list of axes.
If no positional arguments are passed, defaults to (1, 1, 1).
i.e., reproducing the call fig.add_subplot(111)
in the question. This essentially sets up a 1 x 1 grid of subplots and returns the first (and only) axis object in the grid.
fig.add_subplot(ROW,COLUMN,POSITION)
Examples
`fig.add_subplot(111)` #There is only one subplot or graph `fig.add_subplot(211)` *and* `fig.add_subplot(212)`
There are total 2 rows,1 column therefore 2 subgraphs can be plotted. Its location is 1st. There are total 2 rows,1 column therefore 2 subgraphs can be plotted.Its location is 2nd