Bird
Raised Fist0
Matplotlibdata~10 mins

Figure-level methods vs axes-level in Matplotlib - Visual Side-by-Side Comparison

Choose your learning style10 modes available
Concept Flow - Figure-level methods vs axes-level
Start: Create Figure and Axes
↓
Use Figure-level method
↓
Plot affects whole Figure
↓
Use Axes-level method
↓
Plot affects only one Axes
↓
Show or save Figure
First, create a figure and axes. Figure-level methods affect the whole figure, while axes-level methods affect only one subplot.
Execution Sample
Matplotlib
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
fig.suptitle('Figure Title')
ax.set_title('Axes Title')
ax.plot([1, 2, 3], [1, 4, 9])
plt.show()
This code creates a figure and one axes, sets a title for the figure and the axes, plots data on the axes, and shows the plot.
Execution Table
StepActionTargetEffectOutput
1Create figure and axesfig, axFigure and Axes objects createdfig and ax ready
2Set figure titlefig.suptitle('Figure Title')Title set for whole figureFigure title displayed
3Set axes titleax.set_title('Axes Title')Title set for single axesAxes title displayed
4Plot dataax.plot([1, 2, 3], [1, 4, 9])Line plot on axesLine visible on axes
5Show plotplt.show()Display figure windowFigure with titles and plot shown
6End-All commands executedPlot window open
💡 All plotting commands executed and figure displayed
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4Final
figNoneFigure object createdFigure title setFigure title setFigure title setFigure with title
axNoneAxes object createdAxes object unchangedAxes title setLine plot addedAxes with title and plot
Key Moments - 2 Insights
Why does fig.suptitle set the title for the whole figure but ax.set_title only sets the title for one subplot?
fig.suptitle applies to the entire figure container, affecting all subplots inside it, while ax.set_title applies only to the specific axes object, so it affects only that subplot. See execution_table steps 2 and 3.
If I call ax.plot multiple times, does it affect the whole figure or just one axes?
Each ax.plot call adds data only to that specific axes, not the whole figure. The figure contains all axes but plotting commands on axes are local. See execution_table step 4.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the effect of step 2 (fig.suptitle)?
APlots data on the axes
BSets the title for the entire figure
CSets the title for one axes only
DCreates a new axes
💡 Hint
Check the 'Effect' column in step 2 of the execution_table
At which step is the line plot added to the axes?
AStep 2
BStep 3
CStep 4
DStep 5
💡 Hint
Look for the action 'Plot data' in the execution_table
If you want to add a title to only one subplot, which method should you use?
Aax.set_title()
Bfig.suptitle()
Cplt.title()
Dfig.set_title()
💡 Hint
Refer to the difference between figure-level and axes-level methods in the key_moments
Concept Snapshot
Figure-level methods (like fig.suptitle) affect the whole figure and all subplots.
Axes-level methods (like ax.set_title, ax.plot) affect only one subplot.
Create figure and axes with plt.subplots().
Use fig.suptitle() for overall title.
Use ax.set_title() and ax.plot() for individual subplot control.
Full Transcript
This lesson shows the difference between figure-level and axes-level methods in matplotlib. First, you create a figure and axes using plt.subplots(). Then, figure-level methods like fig.suptitle() set titles or properties for the entire figure, affecting all subplots. Axes-level methods like ax.set_title() and ax.plot() affect only the specific subplot (axes) they are called on. The execution table traces each step: creating figure and axes, setting titles, plotting data, and showing the figure. Variable tracking shows how fig and ax objects change after each step. Key moments clarify common confusions about scope of titles and plotting. The visual quiz tests understanding of which methods affect figure vs axes. This helps beginners see how to control overall figure appearance versus individual subplot details.

Practice

(1/5)
1. Which method would you use to set the main title for the entire figure in matplotlib?
easy
A. plt.title()
B. ax.set_title()
C. ax.set_xlabel()
D. fig.suptitle()

Solution

  1. Step 1: Understand figure-level vs axes-level

    Figure-level methods control the whole figure, axes-level methods control individual plots.
  2. Step 2: Identify method for main figure title

    The method fig.suptitle() sets the main title for the entire figure, while ax.set_title() sets title for one subplot.
  3. Final Answer:

    fig.suptitle() -> Option D
  4. Quick Check:

    Figure main title = fig.suptitle() [OK]
Hint: Main figure title uses fig.suptitle(), not ax.set_title() [OK]
Common Mistakes:
  • Using ax.set_title() for main figure title
  • Using plt.title() which affects current axes
  • Confusing xlabel with title
2. Which of the following is the correct syntax to set the x-axis label for a single plot (axes) in matplotlib?
easy
A. plt.set_xlabel('X Label')
B. fig.set_xlabel('X Label')
C. ax.set_xlabel('X Label')
D. fig.xlabel('X Label')

Solution

  1. Step 1: Identify the object controlling axis labels

    Axis labels belong to individual plots, so axes-level methods are used.
  2. Step 2: Choose correct method and object

    The method set_xlabel() is called on an axes object, so ax.set_xlabel('X Label') is correct.
  3. Final Answer:

    ax.set_xlabel('X Label') -> Option C
  4. Quick Check:

    Axis label = ax.set_xlabel() [OK]
Hint: Use ax.set_xlabel() for x-axis label, not fig or plt [OK]
Common Mistakes:
  • Calling set_xlabel() on figure object
  • Using plt.set_xlabel() which does not exist
  • Confusing axis label with figure title
3. What will the following code display?
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
fig.suptitle('Main Title')
ax.set_title('Plot Title')
ax.set_xlabel('X Axis')
ax.set_ylabel('Y Axis')
plt.show()
medium
A. A figure with main title 'Main Title' and one plot titled 'Plot Title' with labeled axes
B. Only a plot titled 'Main Title' with axes labeled 'X Axis' and 'Y Axis'
C. A figure with no titles but axes labeled 'X Axis' and 'Y Axis'
D. Error because fig.suptitle() cannot be used with ax.set_title()

Solution

  1. Step 1: Understand figure and axes titles

    fig.suptitle() sets the main figure title; ax.set_title() sets the subplot title.
  2. Step 2: Analyze axis labels and display

    ax.set_xlabel() and ax.set_ylabel() label the x and y axes of the plot. The code will show all these correctly.
  3. Final Answer:

    A figure with main title 'Main Title' and one plot titled 'Plot Title' with labeled axes -> Option A
  4. Quick Check:

    fig.suptitle + ax.set_title + ax labels = A figure with main title 'Main Title' and one plot titled 'Plot Title' with labeled axes [OK]
Hint: fig.suptitle is main title; ax.set_title is subplot title [OK]
Common Mistakes:
  • Thinking fig.suptitle replaces ax.set_title
  • Expecting error when using both titles
  • Ignoring axis labels
4. Identify the error in this code snippet:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
fig.set_title('Main Title')
ax.set_xlabel('X Label')
plt.show()
medium
A. fig.set_title() is not a valid method for figure objects
B. ax.set_xlabel() should be called on fig, not ax
C. plt.show() must be called before setting titles
D. fig, ax = plt.subplots() returns only one object

Solution

  1. Step 1: Check figure method usage

    The figure object does not have a method called set_title(). The correct method for figure title is suptitle().
  2. Step 2: Verify other method calls

    ax.set_xlabel() is correct for labeling x-axis. plt.show() is correctly placed at the end.
  3. Final Answer:

    fig.set_title() is not a valid method for figure objects -> Option A
  4. Quick Check:

    Figure title method = fig.suptitle() not fig.set_title() [OK]
Hint: Figure title uses suptitle(), not set_title() [OK]
Common Mistakes:
  • Using fig.set_title() instead of fig.suptitle()
  • Confusing axes methods with figure methods
  • Calling plt.show() too early
5. You want to create a figure with 2 subplots side by side. You want a main title for the figure and individual titles for each subplot. Which code correctly achieves this?
hard
A. fig, axs = plt.subplots(1, 2) fig.title('Main Title') axs[0].title('Left Plot') axs[1].title('Right Plot') plt.show()
B. fig, axs = plt.subplots(1, 2) fig.suptitle('Main Title') axs[0].set_title('Left Plot') axs[1].set_title('Right Plot') plt.show()
C. fig, axs = plt.subplots(2, 1) fig.set_title('Main Title') axs[0].set_xlabel('Left Plot') axs[1].set_xlabel('Right Plot') plt.show()
D. fig, axs = plt.subplots(1, 2) axs.set_title('Main Title') fig.set_title('Left Plot') fig.set_title('Right Plot') plt.show()

Solution

  1. Step 1: Create subplots and set main figure title

    plt.subplots(1, 2) creates two side-by-side plots. fig.suptitle() sets the main figure title.
  2. Step 2: Set individual subplot titles correctly

    Each subplot is accessed by axs[0] and axs[1]. Use set_title() to set their titles.
  3. Step 3: Verify other options are incorrect

    The other options misuse methods like fig.set_title() or fig.title() which do not exist or use wrong subplot layout.
  4. Final Answer:

    fig, axs = plt.subplots(1, 2) fig.suptitle('Main Title') axs[0].set_title('Left Plot') axs[1].set_title('Right Plot') plt.show() -> Option B
  5. Quick Check:

    Figure main title = fig.suptitle(), subplot titles = axs[i].set_title() [OK]
Hint: Use fig.suptitle() for main title, axs[i].set_title() for subplots [OK]
Common Mistakes:
  • Using fig.set_title() instead of fig.suptitle()
  • Calling title() instead of set_title()
  • Wrong subplot layout dimensions
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