Bird
Raised Fist0
Matplotlibdata~20 mins

Figure and Axes mental model in Matplotlib - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Figure and Axes Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this code?
Consider the following code using matplotlib. What will be the type of the variable ax?
Matplotlib
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
print(type(ax))
A<class 'matplotlib.axes._subplots.AxesSubplot'>
B<class 'matplotlib.figure.Figure'>
C<class 'list'>
D<class 'tuple'>
Attempts:
2 left
💡 Hint
Remember that plt.subplots() returns a Figure and Axes object.
❓ data_output
intermediate
2:00remaining
How many Axes are created?
What is the number of Axes objects created by this code?
Matplotlib
import matplotlib.pyplot as plt
fig, axs = plt.subplots(2, 2)
print(len(axs.flatten()))
A4
B2
C1
D0
Attempts:
2 left
💡 Hint
The argument (2, 2) creates a grid of subplots.
🔧 Debug
advanced
2:00remaining
Identify the error in this code
What error will this code raise when run?
Matplotlib
import matplotlib.pyplot as plt
fig = plt.figure()
ax1, ax2 = fig.add_subplot(121)
ax3 = fig.add_subplot(122)
print(type(ax1))
ATypeError: 'int' object is not iterable
BAttributeError: 'Figure' object has no attribute 'add_subplot'
CValueError: not enough values to unpack (expected 2, got 1)
DNo error, prints <class 'matplotlib.axes._subplots.AxesSubplot'>
Attempts:
2 left
💡 Hint
Check the return value of add_subplot when called with a single argument.
❓ visualization
advanced
2:00remaining
What does this plot look like?
Given this code, what is the layout of the subplots?
Matplotlib
import matplotlib.pyplot as plt
fig, axs = plt.subplots(1, 3)
for i, ax in enumerate(axs):
    ax.plot([0, 1], [i, i+1])
plt.show()
AA single empty plot
BThree plots stacked vertically
COne plot with three lines
DThree plots side by side horizontally
Attempts:
2 left
💡 Hint
The arguments (1, 3) create a grid with 1 row and 3 columns.
🧠 Conceptual
expert
3:00remaining
Understanding Figure and Axes relationship
Which statement correctly describes the relationship between Figure and Axes in matplotlib?
AA Figure can only contain one Axes object at a time.
BA Figure can contain multiple Axes, but each Axes belongs to exactly one Figure.
CEach Axes can belong to multiple Figures simultaneously.
DAxes and Figure are independent and unrelated objects.
Attempts:
2 left
💡 Hint
Think about how plots are organized inside a figure.

Practice

(1/5)
1. What does the Figure represent in matplotlib's Figure and Axes model?
easy
A. A single data point on the plot
B. The area where data points are drawn
C. The entire image or window that contains all plots
D. The color scheme of the plot

Solution

  1. Step 1: Understand the role of Figure

    The Figure is the whole container or window that holds one or more plots.
  2. Step 2: Differentiate Figure from Axes

    Axes is the part inside the Figure where data is drawn, not the entire window.
  3. Final Answer:

    The entire image or window that contains all plots -> Option C
  4. Quick Check:

    Figure = whole window [OK]
Hint: Figure is the whole plot window, not just the data area [OK]
Common Mistakes:
  • Confusing Figure with Axes
  • Thinking Figure is a single plot line
  • Mixing Figure with plot colors
2. Which of the following is the correct way to create a Figure and Axes in matplotlib?
easy
A. fig, ax = plt.subplots()
B. fig = plt.figure(), ax = plt.plot()
C. ax = plt.figure(), fig = plt.axes()
D. plt.create_figure(), plt.create_axes()

Solution

  1. Step 1: Recall matplotlib syntax

    The standard way to create Figure and Axes together is using plt.subplots().
  2. Step 2: Check each option

    fig, ax = plt.subplots() correctly assigns Figure and Axes from plt.subplots(). Others misuse functions or assign incorrectly.
  3. Final Answer:

    fig, ax = plt.subplots() -> Option A
  4. Quick Check:

    Use plt.subplots() to get Figure and Axes [OK]
Hint: Use plt.subplots() to get both Figure and Axes [OK]
Common Mistakes:
  • Using plt.plot() to create Axes
  • Confusing plt.figure() with plt.subplots()
  • Trying non-existent functions like plt.create_figure()
3. What will be the output type of the variable ax after running this code?
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
medium
A. A matplotlib Figure object
B. A matplotlib Axes object
C. A list of Axes objects
D. A NumPy array

Solution

  1. Step 1: Understand plt.subplots() return values

    It returns a tuple: (Figure object, Axes object or array of Axes).
  2. Step 2: Check variable assignment

    Here, ax is assigned the second element, which is a single Axes object.
  3. Final Answer:

    A matplotlib Axes object -> Option B
  4. Quick Check:

    ax = Axes object from plt.subplots() [OK]
Hint: plt.subplots() returns (Figure, Axes) tuple [OK]
Common Mistakes:
  • Thinking ax is a Figure
  • Assuming ax is a list without multiple plots
  • Confusing Axes with NumPy arrays
4. Identify the error in this code snippet:
import matplotlib.pyplot as plt
fig = plt.figure()
ax = plt.axes()
ax.plot([1, 2, 3], [4, 5, 6])
plt.show()
medium
A. plt.axes() should be called on the Figure object
B. plt.axes() creates a new Figure, not Axes
C. plt.figure() must be called after plt.axes()
D. No error, code runs fine

Solution

  1. Step 1: Understand plt.figure() and plt.axes()

    plt.figure() creates a Figure and sets it as current. plt.axes() creates Axes in the current Figure using default positioning.
  2. Step 2: Verify code execution

    The plot is correctly added to ax and plt.show() displays the figure. The code runs without errors.
  3. Final Answer:

    No error, code runs fine -> Option D
  4. Quick Check:

    plt.axes() adds to current Figure [OK]
Hint: plt.figure() sets current figure for plt.axes() [OK]
Common Mistakes:
  • Calling plt.axes() without linking to Figure
  • Assuming plt.axes() auto-links to last Figure
  • Calling plt.figure() after plt.axes()
5. You want to create a figure with two side-by-side plots sharing the same y-axis. Which code correctly uses the Figure and Axes model to achieve this?
hard
A. fig, (ax1, ax2) = plt.subplots(1, 2, sharey=True) ax1.plot([1,2,3], [4,5,6]) ax2.plot([1,2,3], [6,5,4])
B. fig = plt.figure() ax1 = fig.add_subplot(1, 2, 1) ax2 = fig.add_subplot(1, 2, 2) ax1.sharey(ax2)
C. fig, ax = plt.subplots(2, 1) ax[0].plot([1,2,3], [4,5,6]) ax[1].plot([1,2,3], [6,5,4])
D. fig, ax = plt.subplots(1, 2) ax[0].plot([1,2,3], [4,5,6]) ax[1].plot([1,2,3], [6,5,4])

Solution

  1. Step 1: Understand subplots with shared axes

    Using plt.subplots(1, 2, sharey=True) creates one row, two columns of Axes sharing the y-axis.
  2. Step 2: Check code correctness

    fig, (ax1, ax2) = plt.subplots(1, 2, sharey=True) ax1.plot([1,2,3], [4,5,6]) ax2.plot([1,2,3], [6,5,4]): fig, (ax1, ax2) = plt.subplots(1, 2, sharey=True) ax1.plot([1,2,3], [4,5,6]) ax2.plot([1,2,3], [6,5,4]) correctly unpacks two Axes and plots data with shared y-axis. fig, ax = plt.subplots(1, 2) ax[0].plot([1,2,3], [4,5,6]) ax[1].plot([1,2,3], [6,5,4]) omits sharey=True. fig = plt.figure() ax1 = fig.add_subplot(1, 2, 1) ax2 = fig.add_subplot(1, 2, 2) ax1.sharey(ax2) calls non-existent sharey() method. fig, ax = plt.subplots(2, 1) ax[0].plot([1,2,3], [4,5,6]) ax[1].plot([1,2,3], [6,5,4]) creates vertical subplots.
  3. Final Answer:

    fig, (ax1, ax2) = plt.subplots(1, 2, sharey=True) ax1.plot([1,2,3], [4,5,6]) ax2.plot([1,2,3], [6,5,4]) -> Option A
  4. Quick Check:

    Use sharey=True in plt.subplots() for shared y-axis [OK]
Hint: Use sharey=True in plt.subplots() for shared y-axis [OK]
Common Mistakes:
  • Trying to call sharey() on Axes objects
  • Creating vertical subplots instead of horizontal
  • Not unpacking multiple Axes correctly
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