Bird
Raised Fist0
Matplotlibdata~20 mins

Why multiple plots per figure matter in Matplotlib - Challenge Your Understanding

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Multiple Plots 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 with multiple subplots?

Look at the code below that creates two plots in one figure using matplotlib. What will be the shape of the axes object?

Matplotlib
import matplotlib.pyplot as plt
fig, axes = plt.subplots(1, 2)
print(type(axes))
print(axes.shape)
A<class 'numpy.ndarray'>\n(2,)
B<class 'numpy.ndarray'>\n(1, 2)
C<class 'list'>\n(2,)
D<class 'matplotlib.axes._subplots.AxesSubplot'>\n()
Attempts:
2 left
💡 Hint

When you create multiple subplots in one row and multiple columns, axes is a 1D array with shape (2,).

❓ data_output
intermediate
2:00remaining
How many lines are plotted in this figure with multiple subplots?

This code creates a figure with 2 rows and 1 column of plots. Each subplot plots two lines. How many lines are drawn in total?

Matplotlib
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
fig, axes = plt.subplots(2, 1)
for ax in axes:
    ax.plot(x, np.sin(x))
    ax.plot(x, np.cos(x))
print(sum(len(ax.lines) for ax in axes))
A2
B1
C4
D3
Attempts:
2 left
💡 Hint

Count how many lines each subplot has, then multiply by the number of subplots.

❓ visualization
advanced
2:00remaining
Which option correctly creates a figure with 3 plots arranged in one row?

Choose the code that creates a figure with 3 side-by-side plots using matplotlib. The plots should share the same y-axis.

Afig, axes = plt.subplots(3, 1, sharex=True)
Bfig, axes = plt.subplots(3, 1, sharey=True)
Cfig, axes = plt.subplots(1, 3, sharex=True)
Dfig, axes = plt.subplots(1, 3, sharey=True)
Attempts:
2 left
💡 Hint

Remember, rows come first, then columns in plt.subplots(rows, columns).

🔧 Debug
advanced
2:00remaining
What error does this code raise when creating multiple plots?

What error will this code raise?

import matplotlib.pyplot as plt
fig, axes = plt.subplots(2, 2)
axes.plot([1, 2, 3], [4, 5, 6])
AAttributeError: 'numpy.ndarray' object has no attribute 'plot'
BTypeError: plot() missing 1 required positional argument
CValueError: too many values to unpack
DNo error, plots successfully
Attempts:
2 left
💡 Hint

Remember that axes is an array of subplots, not a single subplot.

🚀 Application
expert
2:00remaining
Why use multiple plots per figure in data analysis?

Which of the following is the best reason to use multiple plots in one figure?

ATo compare different data sets side-by-side easily and spot patterns or differences
BTo reduce the total number of figures saved on disk
CTo make the code run faster by plotting multiple graphs at once
DTo avoid using legends in plots
Attempts:
2 left
💡 Hint

Think about how seeing plots together helps understanding data.

Practice

(1/5)
1. Why is it useful to have multiple plots in one figure when analyzing data?
easy
A. It automatically cleans the data for errors.
B. It reduces the total number of data points shown.
C. It allows easy comparison of different data sets side by side.
D. It makes the figure file size smaller.

Solution

  1. Step 1: Understand the purpose of multiple plots

    Multiple plots in one figure let us see different data sets or views together.
  2. Step 2: Compare data side by side

    This side-by-side view helps spot differences or similarities easily.
  3. Final Answer:

    It allows easy comparison of different data sets side by side. -> Option C
  4. Quick Check:

    Multiple plots = easy comparison [OK]
Hint: Multiple plots show data side by side for easy comparison [OK]
Common Mistakes:
  • Thinking multiple plots reduce data points
  • Believing multiple plots clean data automatically
  • Assuming multiple plots reduce file size
2. Which of the following is the correct way to create a figure with 2 rows and 3 columns of plots using matplotlib?
easy
A. plt.subplots(3, 2)
B. plt.subplots(2, 3)
C. plt.subplot(2, 3)
D. plt.figure(2, 3)

Solution

  1. Step 1: Recall the function for multiple plots

    Use plt.subplots(rows, columns) to create a grid of plots.
  2. Step 2: Match rows and columns

    For 2 rows and 3 columns, call plt.subplots(2, 3).
  3. Final Answer:

    plt.subplots(2, 3) -> Option B
  4. Quick Check:

    plt.subplots(rows, cols) = plt.subplots(2, 3) [OK]
Hint: Use plt.subplots(rows, columns) to create grid [OK]
Common Mistakes:
  • Confusing plt.subplot with plt.subplots
  • Swapping rows and columns
  • Using plt.figure for subplots
3. What will be the output of this code snippet?
import matplotlib.pyplot as plt
fig, axs = plt.subplots(1, 2)
axs[0].plot([1, 2, 3], [4, 5, 6])
axs[1].plot([1, 2, 3], [6, 5, 4])
plt.show()
medium
A. Two separate plots side by side, each with its own line.
B. A blank figure with no plots.
C. An error because axs is not iterable.
D. A single plot with two lines overlapping.

Solution

  1. Step 1: Understand plt.subplots(1, 2)

    This creates 1 row and 2 columns of plots, so axs is an array of two axes.
  2. Step 2: Plot on each axis separately

    axs[0] and axs[1] each get their own line plot, so two plots appear side by side.
  3. Final Answer:

    Two separate plots side by side, each with its own line. -> Option A
  4. Quick Check:

    plt.subplots(1,2) + axs[0], axs[1] plots = two side-by-side plots [OK]
Hint: plt.subplots(1,2) creates two side-by-side plots [OK]
Common Mistakes:
  • Thinking axs is a single axis, not an array
  • Expecting one plot with two lines
  • Assuming code causes error
4. Identify the error in this code that tries to create 2 plots in one figure:
import matplotlib.pyplot as plt
fig, ax = plt.subplots(2)
ax.plot([1, 2, 3], [4, 5, 6])
plt.show()
medium
A. ax is an array but used as a single axis, causing an error.
B. plt.subplots(2) creates only one plot, so ax.plot is invalid.
C. The plot data lists have different lengths causing error.
D. plt.show() is missing and causes no output.

Solution

  1. Step 1: Check plt.subplots(2) output

    It creates 2 subplots in one column, so ax is an array of axes.
  2. Step 2: Using ax.plot() on array causes error

    ax.plot() expects a single axis, but ax is an array, so this causes an AttributeError.
  3. Final Answer:

    ax is an array but used as a single axis, causing an error. -> Option A
  4. Quick Check:

    Multiple subplots return array, must index before plot [OK]
Hint: Multiple subplots return array; index before plotting [OK]
Common Mistakes:
  • Calling plot on array of axes instead of one axis
  • Assuming plt.subplots(2) returns single axis
  • Ignoring plt.show() is present
5. You want to compare sales data for 3 products over 4 quarters in one figure. Which approach best uses multiple plots per figure to achieve this?
hard
A. Plot all products on a single plot with overlapping lines and no labels.
B. Use plt.figure() once and call plt.plot() three times without subplots.
C. Create 3 separate figures, each with one product's sales plot.
D. Create a 1x3 grid of plots using plt.subplots(1, 3), plot each product's quarterly sales separately, and label each plot.

Solution

  1. Step 1: Understand the goal

    We want to compare 3 products side by side in one figure for clarity.
  2. Step 2: Use plt.subplots(1, 3) for side-by-side plots

    This creates 3 plots in one row, perfect for comparing products separately but together.
  3. Step 3: Label each plot for clarity

    Clear labels help understand which plot shows which product's sales.
  4. Final Answer:

    Create a 1x3 grid of plots using plt.subplots(1, 3), plot each product's quarterly sales separately, and label each plot. -> Option D
  5. Quick Check:

    Multiple plots + labels = clear side-by-side comparison [OK]
Hint: Use plt.subplots(1,3) and label each plot for clear comparison [OK]
Common Mistakes:
  • Plotting all lines on one plot without labels
  • Creating separate figures instead of subplots
  • Not labeling plots causing confusion
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