Bird
Raised Fist0
Matplotlibdata~20 mins

Fig, ax = plt.subplots pattern in Matplotlib - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Subplots Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
1:30remaining
What does this code output?
Consider the following code using plt.subplots(). What will be the type of ax?
Matplotlib
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
print(type(ax))
A<class 'tuple'>
B<class 'matplotlib.axes._subplots.AxesSubplot'>
C<class 'list'>
D<class 'matplotlib.figure.Figure'>
Attempts:
2 left
💡 Hint
Remember that plt.subplots() returns a figure and axes object.
❓ data_output
intermediate
1:30remaining
How many axes are created?
What is the shape and type of ax after running this code?
Matplotlib
import matplotlib.pyplot as plt
fig, ax = plt.subplots(2, 3)
print(type(ax))
print(ax.shape)
Anumpy.ndarray with shape (2, 3)
Blist with length 6
Ctuple with 2 elements
Dmatplotlib.axes._subplots.AxesSubplot with no shape
Attempts:
2 left
💡 Hint
When multiple subplots are created, ax is an array of axes.
❓ visualization
advanced
2:00remaining
Identify the correct subplot layout
Which option shows the correct subplot layout for fig, ax = plt.subplots(1, 4)?
Matplotlib
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 4)
for i, axis in enumerate(ax):
    axis.plot([0, 1], [i, i+1])
plt.show()
AFour plots arranged vertically in one column
BTwo rows and two columns of plots
CFour plots arranged horizontally in one row
DSingle plot only
Attempts:
2 left
💡 Hint
The arguments (1, 4) mean 1 row and 4 columns.
🔧 Debug
advanced
1:30remaining
Why does this code raise an error?
What error does this code raise and why?
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax[0].plot([1, 2, 3])
Matplotlib
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax[0].plot([1, 2, 3])
ATypeError: 'AxesSubplot' object is not subscriptable
BIndexError: list index out of range
CAttributeError: 'Figure' object has no attribute 'plot'
DNo error, plots successfully
Attempts:
2 left
💡 Hint
Check the type of ax when only one subplot is created.
🚀 Application
expert
2:00remaining
How to flatten axes array for iteration?
Given fig, ax = plt.subplots(3, 2), which option correctly iterates over all axes to plot a line on each?
Matplotlib
import matplotlib.pyplot as plt
fig, ax = plt.subplots(3, 2)
# Fill in the blank to plot on each axis
for axis in _____:
    axis.plot([0, 1], [1, 2])
plt.show()
Alist(ax)
Bax.tolist()
Cax
Dax.flatten()
Attempts:
2 left
💡 Hint
The axes array is 2D; flatten it to 1D for simple iteration.

Practice

(1/5)
1. What does the variable fig represent when you write fig, ax = plt.subplots() in matplotlib?
easy
A. The specific plot area where data is drawn
B. The whole figure container that holds all plot elements
C. A list of all plots in the figure
D. The title of the plot

Solution

  1. Step 1: Understand the role of fig in plt.subplots()

    The fig variable holds the entire figure container, which can include multiple plots, titles, legends, and other elements.
  2. Step 2: Differentiate fig from ax

    The ax variable is the specific plot area inside the figure where data is drawn, not the whole container.
  3. Final Answer:

    The whole figure container that holds all plot elements -> Option B
  4. Quick Check:

    fig = whole figure container [OK]
Hint: Remember: fig = full figure, ax = plot area [OK]
Common Mistakes:
  • Confusing fig with ax as the plot area
  • Thinking fig is just the plot title
  • Assuming fig is a list of plots
2. Which of the following is the correct syntax to create a figure and axes using matplotlib's plt.subplots()?
easy
A. plt.subplots = fig, ax
B. fig = plt.subplots(ax)
C. ax, fig = plt.subplots()
D. fig, ax = plt.subplots()

Solution

  1. Step 1: Recall the correct unpacking syntax

    The function plt.subplots() returns two objects: the figure and the axes. The correct way to capture them is fig, ax = plt.subplots().
  2. Step 2: Check each option for syntax correctness

    fig = plt.subplots(ax) tries to pass ax as an argument incorrectly. ax, fig = plt.subplots() reverses the order, which is wrong. plt.subplots = fig, ax tries to assign incorrectly.
  3. Final Answer:

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

    Correct unpacking = fig, ax = plt.subplots() [OK]
Hint: Remember: fig first, then ax from plt.subplots() [OK]
Common Mistakes:
  • Swapping fig and ax order
  • Passing ax as argument to plt.subplots()
  • Incorrect assignment syntax
3. What will be the output type of ax after running this code?
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
medium
A.
B.
C.
D.

Solution

  1. Step 1: Understand what plt.subplots() returns

    The function returns a figure object and an axes object. The axes object is usually an instance of AxesSubplot class.
  2. Step 2: Identify the type of ax

    After unpacking, ax is the axes object, which is of type matplotlib.axes._subplots.AxesSubplot.
  3. Final Answer:

    <class 'matplotlib.axes._subplots.AxesSubplot'> -> Option A
  4. Quick Check:

    ax type = AxesSubplot [OK]
Hint: ax is the plot area object, not the figure [OK]
Common Mistakes:
  • Confusing ax type with fig type
  • Thinking ax is a list or tuple
  • Assuming ax is a string or number
4. Identify the error in this code snippet:
import matplotlib.pyplot as plt
fig, ax = plt.subplots
ax.plot([1, 2, 3], [4, 5, 6])
plt.show()
medium
A. fig and ax are reversed in assignment
B. ax.plot() arguments are incorrect
C. Missing parentheses after plt.subplots
D. plt.show() is called before plotting

Solution

  1. Step 1: Check the call to plt.subplots

    The code uses plt.subplots without parentheses, so it assigns the function itself, not its result.
  2. Step 2: Understand the impact on ax.plot

    Since fig, ax are assigned incorrectly, ax is a function, not an axes object, so ax.plot() will cause an error.
  3. Final Answer:

    Missing parentheses after plt.subplots -> Option C
  4. Quick Check:

    Call plt.subplots() with () [OK]
Hint: Always add () to call plt.subplots function [OK]
Common Mistakes:
  • Forgetting parentheses on plt.subplots
  • Mixing up fig and ax variables
  • Calling plt.show() too early
5. You want to create a figure with 2 rows and 1 column of plots using plt.subplots(). Which code correctly creates the figure and axes, and plots a line on the second subplot?
hard
A. fig, ax = plt.subplots(2, 1) ax[1].plot([1, 2, 3], [3, 2, 1])
B. fig, ax = plt.subplots(1, 2) ax[2].plot([1, 2, 3], [3, 2, 1])
C. fig, ax = plt.subplots(2, 1) ax.plot([1, 2, 3], [3, 2, 1])
D. fig, ax = plt.subplots(2) ax[0].plot([1, 2, 3], [3, 2, 1])

Solution

  1. Step 1: Create figure with 2 rows and 1 column

    Use plt.subplots(2, 1) to create 2 vertical subplots. This returns ax as an array of axes.
  2. Step 2: Plot on the second subplot

    Access the second subplot with ax[1] (indexing starts at 0) and call plot() on it.
  3. Final Answer:

    fig, ax = plt.subplots(2, 1) ax[1].plot([1, 2, 3], [3, 2, 1]) -> Option A
  4. Quick Check:

    2 rows, 1 col = plt.subplots(2,1), plot on ax[1] [OK]
Hint: Use ax[index] for multiple subplots, index starts at 0 [OK]
Common Mistakes:
  • Using wrong subplot shape (1,2) instead of (2,1)
  • Trying to plot on ax without indexing when multiple axes exist
  • Using invalid index like ax[2] when only 2 subplots exist
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