Bird
Raised Fist0
Matplotlibdata~10 mins

Plt.subplots with rows and columns in Matplotlib - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Plt.subplots with rows and columns
Call plt.subplots(rows, cols)
↓
Create Figure object
↓
Create Axes array with shape (rows, cols)
↓
Return Figure and Axes
↓
User plots on each Axes
↓
Display or save the figure
The function plt.subplots creates a figure and a grid of subplots (axes) arranged in rows and columns, returning them for plotting.
Execution Sample
Matplotlib
import matplotlib.pyplot as plt
fig, axs = plt.subplots(2, 3)
axs[0, 0].plot([1, 2], [3, 4])
plt.show()
This code creates a 2-row by 3-column grid of plots and draws a line on the first subplot.
Execution Table
StepActionResultNotes
1Call plt.subplots(2, 3)Figure and 2x3 Axes array createdFigure is empty, axes ready for plotting
2Access axs[0, 0]First subplot Axes objectTop-left plot in grid
3Plot line on axs[0, 0]Line appears on first subplotData points (1,3) and (2,4) connected
4Call plt.show()Figure window opens with 6 subplotsOnly first subplot has a line, others are empty
5EndExecution stopsAll plots displayed
💡 All subplots created and displayed, program ends after plt.show()
Variable Tracker
VariableStartAfter Step 1After Step 3Final
figNoneFigure objectFigure objectFigure object
axsNone2x3 numpy array of Axes2x3 numpy array of Axes with line on axs[0,0]Same as after step 3
Key Moments - 3 Insights
Why is axs a 2D array and not a list?
Because plt.subplots with rows and columns returns a numpy array shaped (rows, cols), so axs[0,0] accesses the first subplot. See execution_table step 2.
What happens if you try axs[3,0] in this example?
It causes an IndexError because axs only has 2 rows (indices 0 and 1). See variable_tracker for axs shape.
Why do only some subplots show data after plotting?
Because we only plotted on axs[0,0]. The other subplots are empty by default. See execution_table step 3 and 4.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the shape of axs after step 1?
A1D array with 6 Axes
BList of 2 Axes
C2D array with shape (2, 3)
DSingle Axes object
💡 Hint
Check execution_table row 1 under Result describing axs shape
At which step does the first line appear on the plot?
AStep 3
BStep 2
CStep 1
DStep 4
💡 Hint
See execution_table step 3 where plotting happens
If you change plt.subplots(2, 3) to plt.subplots(3, 2), how does axs shape change?
Aaxs becomes 1D array
BShape becomes (3, 2)
CShape stays (2, 3)
Daxs becomes a list
💡 Hint
The rows and columns arguments define axs shape as (rows, cols)
Concept Snapshot
plt.subplots(rows, cols) creates a Figure and a grid of Axes with given rows and columns.
Returns (fig, axs) where axs is a 2D array of Axes.
Access subplots by axs[row, col].
Plot on each Axes independently.
Call plt.show() to display all subplots.
Full Transcript
This visual execution trace shows how plt.subplots with rows and columns works. First, plt.subplots(2, 3) creates a figure and a 2 by 3 grid of subplot axes. The axs variable holds these axes in a 2D array. We then plot a line on the first subplot axs[0, 0]. Calling plt.show() opens a window displaying all six subplots, with only the first showing the line. The variable tracker confirms fig and axs states after each step. Key moments clarify common confusions about axs shape and indexing. The quiz tests understanding of axs shape, plotting step, and effect of changing rows and columns. The snapshot summarizes the main points for quick reference.

Practice

(1/5)
1. What does plt.subplots(2, 3) create in matplotlib?
easy
A. A figure with 2 rows and 3 columns of subplots
B. A figure with 3 rows and 2 columns of subplots
C. A single plot with size 2x3 inches
D. A figure with 6 rows and 1 column of subplots

Solution

  1. Step 1: Understand plt.subplots parameters

    The first parameter is the number of rows, the second is columns.
  2. Step 2: Apply to given code

    plt.subplots(2, 3) means 2 rows and 3 columns of subplots.
  3. Final Answer:

    A figure with 2 rows and 3 columns of subplots -> Option A
  4. Quick Check:

    rows=2, columns=3 = B [OK]
Hint: First number = rows, second = columns in plt.subplots [OK]
Common Mistakes:
  • Confusing rows and columns order
  • Thinking parameters set figure size
  • Assuming single plot created
2. Which of the following is the correct syntax to create a 3x1 subplot grid using plt.subplots?
easy
A. fig, axes = plt.subplots(1, 3)
B. fig, axes = plt.subplots(3)
C. fig, axes = plt.subplots(3, 1)
D. fig, axes = plt.subplots(rows=3, cols=1)

Solution

  1. Step 1: Recall plt.subplots parameter order

    The first argument is rows, second is columns.
  2. Step 2: Match to 3 rows and 1 column

    plt.subplots(3, 1) creates 3 rows and 1 column.
  3. Final Answer:

    fig, axes = plt.subplots(3, 1) -> Option C
  4. Quick Check:

    3 rows, 1 column = C [OK]
Hint: Remember: plt.subplots(rows, columns) order matters [OK]
Common Mistakes:
  • Swapping rows and columns
  • Using single number for both dimensions
  • Using keyword arguments incorrectly
3. What is the shape of axes returned by fig, axes = plt.subplots(2, 2)?
medium
A. A 1D array with 4 axes objects
B. A 2D array with shape (2, 2) of axes objects
C. A list of 2 axes objects
D. A single axes object

Solution

  1. Step 1: Understand axes shape for multiple rows and columns

    When rows and columns are more than 1, axes is a 2D array matching shape.
  2. Step 2: Apply to plt.subplots(2, 2)

    axes will be a 2x2 array of axes objects.
  3. Final Answer:

    A 2D array with shape (2, 2) of axes objects -> Option B
  4. Quick Check:

    Multiple rows and columns = 2D axes array [OK]
Hint: Multiple rows & columns -> axes is 2D array [OK]
Common Mistakes:
  • Assuming axes is always 1D
  • Confusing number of axes with shape
  • Expecting a single axes object
4. Given the code:
fig, axes = plt.subplots(2, 2)
axes[2, 0].plot([1, 2, 3])

What error will occur?
medium
A. No error, plot will display
B. TypeError: axes object is not subscriptable
C. AttributeError: 'AxesSubplot' object has no attribute 'plot'
D. IndexError: index 2 is out of bounds for axis 0 with size 2

Solution

  1. Step 1: Check axes shape from plt.subplots(2, 2)

    axes is a 2x2 array with indices 0 and 1 for rows and columns.
  2. Step 2: Analyze axes[2, 0] access

    Index 2 for rows is out of bounds since max index is 1.
  3. Final Answer:

    IndexError: index 2 is out of bounds for axis 0 with size 2 -> Option D
  4. Quick Check:

    axes shape (2,2), index 2 invalid [OK]
Hint: Check axes array shape before indexing [OK]
Common Mistakes:
  • Using invalid indices beyond shape
  • Confusing axes as list instead of array
  • Expecting no error on wrong index
5. You want to create a 2x3 grid of subplots and plot a line on each subplot with data from a list of 6 arrays. Which code correctly accesses each subplot to plot inside a nested loop?
hard
A. for i in range(2): for j in range(3): axes[i][j].plot(data[i*3 + j])
B. for i in range(2): for j in range(3): axes[i, j].plot(data[i + j])
C. for i in range(3): for j in range(2): axes[i][j].plot(data[i*2 + j])
D. for i in range(2): for j in range(3): axes[j][i].plot(data[i*3 + j])

Solution

  1. Step 1: Understand axes shape and indexing

    plt.subplots(2, 3) creates axes as a 2x3 array, indexed as axes[row][col].
  2. Step 2: Correctly map data list to subplot indices

    Data index = row * number_of_columns + column = i*3 + j matches subplot position.
  3. Final Answer:

    for i in range(2): for j in range(3): axes[i][j].plot(data[i*3 + j]) -> Option A
  4. Quick Check:

    axes[row][col], data index = row*cols + col [OK]
Hint: Use axes[row][col] and data index = row*cols + col [OK]
Common Mistakes:
  • Swapping row and column loops
  • Incorrect data indexing
  • Using axes[j][i] instead of axes[i][j]
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard