📖 Scenario: You are preparing a report with multiple charts. You want to organize these charts neatly using nested subplots and subfigures in matplotlib. This will help you compare different data groups side by side.
🎯 Goal: Create a figure with two subfigures arranged horizontally. Each subfigure contains two vertically stacked subplots showing simple line plots.
📋 What You'll Learn
Create a figure with matplotlib.pyplot.figure() using constrained_layout=True
Create two subfigures arranged in one row and two columns using fig.subfigures()
Each subfigure should have two subplots arranged vertically using subfig.subplots()
Plot simple line plots in each subplot with different data
Display the final figure with plt.show()
💡 Why This Matters
🌍 Real World
Nested subplots with subfigures help organize multiple related charts in reports or presentations, making it easier to compare data groups side by side.
💼 Career
Data scientists and analysts often create complex visualizations to communicate insights clearly. Knowing how to use nested subplots and subfigures is valuable for producing professional-quality charts.
Progress0 / 4 steps
1
Create the main figure with constrained layout
Create a figure called fig using plt.figure() with constrained_layout=True.
Matplotlib
Hint
Use plt.figure(constrained_layout=True) to create the figure.
2
Add two subfigures side by side
Using the figure fig, create two subfigures called subfig1 and subfig2 arranged in 1 row and 2 columns using fig.subfigures(1, 2).
Matplotlib
Hint
Use fig.subfigures(1, 2) to create two subfigures in one row and two columns.
3
Create two vertical subplots in each subfigure and plot lines
For each subfigure subfig1 and subfig2, create two subplots arranged vertically using subfig.subplots(2, 1). Then plot simple line plots on each subplot using ax.plot() with these data: for subfig1 use [1, 2, 3] and [3, 2, 1], for subfig2 use [4, 5, 6] and [6, 5, 4].
Matplotlib
Hint
Use subfig.subplots(2, 1) to create two vertical subplots. Use ax.plot() to draw lines.
4
Display the figure with nested subplots
Use plt.show() to display the figure with the nested subplots and subfigures.
Matplotlib
Hint
Call plt.show() to display the figure.
Practice
(1/5)
1. What is the main purpose of using fig.subfigures() in matplotlib?
easy
A. To add a single plot to a figure
B. To create large groups inside a figure that can hold their own smaller plots
C. To change the color of a plot
D. To save a figure as an image file
Solution
Step 1: Understand the role of fig.subfigures()
This method creates subfigures, which are large groups inside a main figure.
Step 2: Recognize the use of subfigures
Each subfigure can contain its own grid of smaller plots, helping organize complex layouts.
Final Answer:
To create large groups inside a figure that can hold their own smaller plots -> Option B
Quick Check:
Subfigures = large groups inside figure [OK]
Hint: Subfigures group plots inside a figure [OK]
Common Mistakes:
Thinking subfigures add only one plot
Confusing subfigures with saving figures
Assuming subfigures change plot colors
2. Which of the following is the correct way to create two subfigures side by side in matplotlib?
easy
A. fig.subplots(1, 2)
B. fig.subfigures(2, 1)
C. fig.subfigures(1, 2)
D. fig.subfigures(2, 2)
Solution
Step 1: Understand subfigures layout parameters
The parameters (rows, columns) define the grid of subfigures. For side by side, use 1 row and 2 columns.
Step 2: Match parameters to options
fig.subfigures(1, 2) uses fig.subfigures(1, 2), which creates 1 row and 2 columns, placing subfigures side by side.
Final Answer:
fig.subfigures(1, 2) -> Option C
Quick Check:
Side by side = 1 row, 2 columns [OK]
Hint: Rows first, columns second in subfigures() [OK]
Common Mistakes:
Swapping rows and columns
Using subplots() instead of subfigures()
Choosing more rows than needed
3. What will be the output shape of the axes array when running this code?
A. subfigs.subplots() should be called on each subfigure, not on the list
B. fig.subfigures() requires 3 arguments, missing one
C. subfigs is a list, so subfigs.subplots() is invalid
D. subfigures cannot have nested subplots
Solution
Step 1: Understand the type of subfigs
fig.subfigures(1, 2) returns a list or array of subfigure objects, not a single subfigure.
Step 2: Correct method call for subplots
We must call subplots() on each individual subfigure, not on the entire list subfigs.
Final Answer:
subfigs.subplots() should be called on each subfigure, not on the list -> Option A
Quick Check:
Call subplots() on single subfigure [OK]
Hint: Call subplots() on one subfigure, not list [OK]
Common Mistakes:
Calling subplots() on the list of subfigures
Assuming subfigures() needs 3 args
Thinking subfigures can't have subplots
5. You want to create a figure with 2 subfigures stacked vertically. The top subfigure should have a 2x2 grid of plots, and the bottom subfigure a single plot. Which code correctly achieves this?