Bird
Raised Fist0
Matplotlibdata~5 mins

Fig, ax = plt.subplots pattern in Matplotlib - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Fig, ax = plt.subplots pattern
O(n)
Understanding Time Complexity

We want to understand how the time it takes to create plots with plt.subplots changes as we increase the number of plots.

How does adding more subplots affect the work matplotlib does?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.

import matplotlib.pyplot as plt

fig, axs = plt.subplots(3, 3)
for i, ax in enumerate(axs.flat):
    ax.plot([0, 1, 2], [i, i+1, i+2])
plt.show()

This code creates a 3 by 3 grid of plots and draws a simple line on each subplot.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Looping over each subplot to draw a line.
  • How many times: Once for each subplot, here 9 times (3 rows x 3 columns).
How Execution Grows With Input

As the number of subplots increases, the time to draw each line grows proportionally.

Input Size (n)Approx. Operations
10 subplots10 line plots drawn
100 subplots100 line plots drawn
1000 subplots1000 line plots drawn

Pattern observation: The work grows directly with the number of subplots.

Final Time Complexity

Time Complexity: O(n)

This means the time to create and draw on subplots grows linearly with how many subplots you have.

Common Mistake

[X] Wrong: "Creating multiple subplots happens instantly no matter how many there are."

[OK] Correct: Each subplot requires drawing operations, so more subplots mean more work and more time.

Interview Connect

Understanding how plotting scales helps you write efficient code when working with many charts or dashboards.

Self-Check

"What if we added nested loops to plot multiple lines per subplot? How would the time complexity change?"

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