Bird
Raised Fist0
Matplotlibdata~3 mins

Why Fig, ax = plt.subplots pattern in Matplotlib? - Purpose & Use Cases

Choose your learning style10 modes available
The Big Idea

What if you could create multiple charts perfectly aligned with just one simple line of code?

The Scenario

Imagine you want to draw several charts to compare data side by side. You try to create each chart separately and then arrange them manually on your screen or paper.

The Problem

This manual way is slow and confusing. You might lose track of which chart belongs where. Adjusting sizes or adding titles to each chart becomes a headache. It's easy to make mistakes and hard to fix them quickly.

The Solution

The fig, ax = plt.subplots() pattern helps you create one or many charts in a clean, organized way. It gives you control over each chart (called an axis) while keeping them all inside one figure. This makes drawing, labeling, and arranging charts simple and error-free.

Before vs After
✗ Before
plt.figure()
plt.plot(data1)
plt.figure()
plt.plot(data2)
✓ After
fig, ax = plt.subplots(1, 2)
ax[0].plot(data1)
ax[1].plot(data2)
What It Enables

It lets you build clear, neat, and flexible multi-chart layouts that are easy to update and understand.

Real Life Example

Think of a weather report showing temperature and rainfall side by side. Using fig, ax = plt.subplots(), you can create both charts together, label them properly, and adjust their sizes to fit perfectly on one page.

Key Takeaways

Manual chart creation is slow and messy.

fig, ax = plt.subplots() organizes multiple charts in one figure.

This pattern makes plotting easier, clearer, and more flexible.

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