Bird
Raised Fist0
Matplotlibdata~10 mins

Individual subplot customization in Matplotlib - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Individual subplot customization
Create Figure and Subplots
↓
Access Each Subplot Individually
↓
Apply Custom Settings to Each Subplot
↓
Display Customized Subplots
Start by creating subplots, then access each one to change titles, labels, or styles separately before showing the final figure.
Execution Sample
Matplotlib
import matplotlib.pyplot as plt
fig, axs = plt.subplots(1, 2)
axs[0].set_title('Left Plot')
axs[1].set_title('Right Plot')
plt.show()
This code creates two side-by-side plots and sets different titles for each subplot.
Execution Table
StepActionTarget SubplotEffectOutput
1Create figure and 2 subplotsfig, axsfig with axs[0], axs[1]Two empty plots side by side
2Set title 'Left Plot'axs[0]Title set to 'Left Plot'Left plot shows title 'Left Plot'
3Set title 'Right Plot'axs[1]Title set to 'Right Plot'Right plot shows title 'Right Plot'
4Display figurefigFigure renderedTwo plots visible with individual titles
💡 All subplots customized and figure displayed
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3Final
figNoneFigure object createdSameSameSame
axsNone[AxesSubplot(0), AxesSubplot(1)]SameSameSame
axs[0].title.get_text()"""""Left Plot""Left Plot""Left Plot"
axs[1].title.get_text()"""""""Right Plot""Right Plot"
Key Moments - 2 Insights
Why do we use axs[0] and axs[1] instead of just axs?
Because axs is an array of subplot axes, each subplot is accessed individually by its index, as shown in steps 2 and 3 of the execution table.
What happens if we set the title on axs instead of axs[0] or axs[1]?
Setting title on axs (the array) will cause an error or no effect because titles belong to individual subplot axes, not the array container, as seen in the variable tracker.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the title of axs[1] after step 3?
A"" (empty string)
B"Left Plot"
C"Right Plot"
DError
💡 Hint
Check the 'Effect' column in step 3 of the execution table.
At which step does the left subplot get its title set?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
Look at the 'Action' and 'Target Subplot' columns in the execution table.
If we add axs[0].set_xlabel('X axis') after step 3, what changes in variable_tracker?
Aaxs[0].xlabel changes from '' to 'X axis'
Baxs[1].xlabel changes from '' to 'X axis'
Cfig variable changes
DNo change
💡 Hint
Variable tracker shows subplot properties changing per step.
Concept Snapshot
Create subplots with plt.subplots()
Access each subplot by index (axs[0], axs[1], ...)
Customize titles, labels, or styles individually
Call plt.show() to display all
Each subplot is an independent Axes object
Full Transcript
We start by creating a figure and multiple subplots using plt.subplots(). This returns a figure and an array of subplot axes. We then access each subplot individually by its index, for example axs[0] for the first subplot and axs[1] for the second. We customize each subplot by setting titles or labels on these individual axes. Finally, we display the figure with plt.show(), which shows all subplots with their individual customizations.

Practice

(1/5)
1. What is the correct way to change the title of the second subplot when using fig, axs = plt.subplots(2, 2)?
easy
A. Use plt.title('New Title')
B. Use axs[1].set_title('New Title')
C. Use fig.set_title('New Title')
D. Use axs[0, 1].set_title('New Title')

Solution

  1. Step 1: Understand subplot indexing

    With plt.subplots(2, 2), axs is a 2x2 array. The second subplot in the first row is at position [0, 1].
  2. Step 2: Set title for specific subplot

    Use axs[0, 1].set_title('New Title') to change only that subplot's title.
  3. Final Answer:

    Use axs[0, 1].set_title('New Title') -> Option D
  4. Quick Check:

    Indexing subplots by row and column = A [OK]
Hint: Use axs[row, col] to target specific subplot [OK]
Common Mistakes:
  • Using axs[1] instead of axs[0, 1]
  • Setting title on fig instead of axs
  • Using plt.title affects whole figure, not subplot
2. Which of the following is the correct syntax to change the x-axis label of the first subplot in a 1D array of subplots fig, axs = plt.subplots(3)?
easy
A. axs[1].set_xlabel('X Label')
B. axs[0].set_xlabel('X Label')
C. axs.set_xlabel('X Label')
D. fig.set_xlabel('X Label')

Solution

  1. Step 1: Identify subplot indexing in 1D array

    With plt.subplots(3), axs is a 1D array with indices 0, 1, 2. The first subplot is at index 0.
  2. Step 2: Use set_xlabel on the correct subplot

    Use axs[0].set_xlabel('X Label') to set the x-axis label of the first subplot.
  3. Final Answer:

    axs[0].set_xlabel('X Label') -> Option B
  4. Quick Check:

    Index 0 for first subplot in 1D axs = D [OK]
Hint: Remember 1D axs uses zero-based indexing [OK]
Common Mistakes:
  • Using axs[1] for first subplot
  • Calling set_xlabel on fig or axs directly
  • Confusing 1D and 2D axs indexing
3. What will be the color of the line in the third subplot after running this code?
import matplotlib.pyplot as plt
fig, axs = plt.subplots(2, 2)
axs[1, 0].plot([1, 2, 3], [4, 5, 6], color='green')
plt.show()
medium
A. Blue
B. Red
C. Green
D. Black

Solution

  1. Step 1: Identify subplot position

    With plt.subplots(2, 2), subplots are indexed as [0,0], [0,1], [1,0], [1,1]. The third subplot is at [1,0].
  2. Step 2: Check plot color argument

    The code sets color='green' for the line in subplot [1,0].
  3. Final Answer:

    Green -> Option C
  4. Quick Check:

    Color set explicitly to green = B [OK]
Hint: Check subplot index and color argument carefully [OK]
Common Mistakes:
  • Assuming default blue color
  • Confusing subplot index order
  • Ignoring color parameter in plot
4. Identify the error in this code that tries to set the y-axis label of the last subplot:
fig, axs = plt.subplots(2, 2)
axs[2, 1].set_ylabel('Y Label')
medium
A. IndexError because axs has shape (2,2) and index (2,1) is out of range
B. AttributeError because set_ylabel is not a valid method
C. SyntaxError due to wrong indexing syntax
D. No error, code runs fine

Solution

  1. Step 1: Check axs shape and indexing

    With plt.subplots(2, 2), axs shape is (2, 2), valid indices are 0 or 1 for each dimension.
  2. Step 2: Identify invalid index

    Indexing axs[2, 1] tries to access third row (index 2), which does not exist, causing IndexError.
  3. Final Answer:

    IndexError because axs has shape (2,2) and index (2,1) is out of range -> Option A
  4. Quick Check:

    Index out of range error = C [OK]
Hint: Check subplot array shape before indexing [OK]
Common Mistakes:
  • Assuming axs has more rows than created
  • Confusing AttributeError with IndexError
  • Using wrong indexing syntax
5. You want to create a 2x2 grid of subplots and set a different background color for each subplot: red, blue, green, and yellow respectively. Which code snippet correctly applies these colors?
hard
A. colors = ['red', 'blue', 'green', 'yellow'] fig, axs = plt.subplots(2, 2) for ax, color in zip(axs.flat, colors): ax.set_facecolor(color)
B. colors = ['red', 'blue', 'green', 'yellow'] fig, axs = plt.subplots(2, 2) for i in range(4): axs[i].set_facecolor(colors[i])
C. colors = ['red', 'blue', 'green', 'yellow'] fig, axs = plt.subplots(2, 2) for i, j in range(2): axs[i, j].set_facecolor(colors[i+j])
D. colors = ['red', 'blue', 'green', 'yellow'] fig, axs = plt.subplots(2, 2) for ax in axs: ax.set_facecolor(colors)

Solution

  1. Step 1: Understand axs structure and iteration

    With plt.subplots(2, 2), axs is a 2D array. Using axs.flat flattens it to 1D for easy iteration.
  2. Step 2: Apply colors correctly

    Using zip(axs.flat, colors) pairs each subplot with a color. Calling ax.set_facecolor(color) sets background color individually.
  3. Final Answer:

    Use axs.flat with zip and set_facecolor for each subplot -> Option A
  4. Quick Check:

    Flatten axs and zip with colors = A [OK]
Hint: Use axs.flat to loop all subplots in order [OK]
Common Mistakes:
  • Trying to index axs as 1D without flattening
  • Using axs as 2D but wrong color indexing
  • Passing full color list to set_facecolor
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