Using the Fig, ax = plt.subplots Pattern in Matplotlib
📖 Scenario: You are a data analyst who wants to create a simple line chart to show sales over a week. You will use the fig, ax = plt.subplots() pattern to create the plot.
🎯 Goal: Build a line plot using fig, ax = plt.subplots() to display sales data for 7 days.
📋 What You'll Learn
Create a list called days with the values: 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'.
Create a list called sales with the values: 150, 200, 170, 220, 180, 190, 210.
Use fig, ax = plt.subplots() to create the figure and axes.
Plot the sales data on the axes with days on the x-axis and sales on the y-axis.
Set the title of the plot to 'Weekly Sales'.
Display the plot using plt.show().
💡 Why This Matters
🌍 Real World
Creating clear and simple charts is important for sharing data insights with others in business, science, and everyday life.
💼 Career
Data analysts and scientists use matplotlib and the fig, ax = plt.subplots() pattern to build flexible and professional plots for reports and presentations.
Progress0 / 4 steps
1
Create the sales data lists
Create a list called days with the values 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'. Also create a list called sales with the values 150, 200, 170, 220, 180, 190, 210.
Matplotlib
Hint
Use square brackets to create lists. Separate each day and sales number with commas.
2
Create the figure and axes using plt.subplots()
Import matplotlib.pyplot as plt. Then create the figure and axes by writing fig, ax = plt.subplots().
Matplotlib
Hint
Use import matplotlib.pyplot as plt to import. Then call plt.subplots() to get fig and ax.
3
Plot the sales data on the axes
Use the ax.plot() method to plot days on the x-axis and sales on the y-axis. Then set the plot title to 'Weekly Sales' using ax.set_title().
Matplotlib
Hint
Use ax.plot(x, y) to draw the line. Use ax.set_title('Weekly Sales') to add the title.
4
Display the plot
Use plt.show() to display the plot on the screen.
Matplotlib
Hint
Call plt.show() to open the plot window.
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
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.
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.
Final Answer:
The whole figure container that holds all plot elements -> Option B
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
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().
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.
Final Answer:
fig, ax = plt.subplots() -> Option D
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
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.
Step 2: Identify the type of ax
After unpacking, ax is the axes object, which is of type matplotlib.axes._subplots.AxesSubplot.
Final Answer:
<class 'matplotlib.axes._subplots.AxesSubplot'> -> Option A
Quick Check:
ax type = AxesSubplot [OK]
Hint: ax is the plot area object, not the figure [OK]
The code uses plt.subplots without parentheses, so it assigns the function itself, not its result.
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.
Final Answer:
Missing parentheses after plt.subplots -> Option C
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?