Bird
Raised Fist0
Data Analysis Pythondata~10 mins

Subplots for multiple charts in Data Analysis Python - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Subplots for multiple charts
Start
↓
Create Figure and Axes with subplots()
↓
Plot chart 1 on Axes 1
↓
Plot chart 2 on Axes 2
↓
Adjust layout if needed
↓
Show or save the figure
↓
End
This flow shows how to create a figure with multiple charts using subplots, plot each chart on its own axes, adjust layout, and display the result.
Execution Sample
Data Analysis Python
import matplotlib.pyplot as plt

fig, axs = plt.subplots(1, 2)
axs[0].plot([1, 2, 3], [1, 4, 9])
axs[1].bar([1, 2, 3], [3, 2, 5])
plt.show()
This code creates a figure with two side-by-side charts: a line plot and a bar chart.
Execution Table
StepActionObject Created/ModifiedResult/Output
1Call plt.subplots(1, 2)fig, axsFigure with 1 row, 2 columns of Axes created
2Plot line on axs[0]axs[0]Line plot with points (1,1), (2,4), (3,9) drawn
3Plot bar on axs[1]axs[1]Bar chart with bars at x=1,2,3 and heights 3,2,5 drawn
4Call plt.show()Figure windowDisplays figure with two charts side by side
5End-Execution stops after showing the figure
💡 Figure displayed and script ends
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3Final
figNoneFigure object createdFigure unchangedFigure unchangedFigure unchanged
axsNoneArray of 2 Axes objectsaxs[0] has line plotaxs[1] has bar chartBoth Axes have their plots
Key Moments - 2 Insights
Why do we use axs[0] and axs[1] to plot instead of just axs?
Because plt.subplots(1, 2) returns an array of Axes objects, each representing a separate chart area. axs[0] is the first chart, axs[1] the second. See execution_table steps 2 and 3.
What happens if we call plt.show() before plotting on axs[1]?
The figure will display only the plots drawn before plt.show(). So axs[1] would be empty. See execution_table step 4 shows all plots after both are drawn.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what does axs contain after Step 1?
AA Figure object
BA list of two Axes objects
CA single Axes object
DAn empty list
💡 Hint
Check execution_table row 1: plt.subplots(1, 2) returns fig and axs array
At which step is the bar chart drawn on the figure?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
See execution_table row 3: axs[1] bar chart is drawn
If we change plt.subplots(1, 2) to plt.subplots(2, 1), how does axs change?
Aaxs becomes a 2-element array with vertical layout
Baxs becomes a single Axes object
Caxs becomes a 4-element array
Daxs becomes empty
💡 Hint
plt.subplots(rows, cols) creates rows x cols Axes; changing to (2,1) stacks charts vertically
Concept Snapshot
Use plt.subplots(rows, cols) to create multiple charts in one figure.
It returns a Figure and an array of Axes.
Plot each chart on its Axes (e.g., axs[0], axs[1]).
Call plt.show() to display all charts together.
Adjust layout with plt.tight_layout() if needed.
Full Transcript
This lesson shows how to create multiple charts in one figure using matplotlib's subplots function. First, plt.subplots(1, 2) creates a figure with two side-by-side chart areas, returning a Figure object and an array of two Axes objects. We plot a line chart on the first Axes (axs[0]) and a bar chart on the second (axs[1]). Finally, plt.show() displays the figure with both charts. Variables fig and axs track the figure and axes states. Key points include understanding that axs is an array of Axes, and plotting must be done on each Axes separately before showing the figure.

Practice

(1/5)
1. What is the main purpose of using plt.subplots() in data visualization?
easy
A. To create multiple charts in one figure for easy comparison
B. To save a plot as an image file
C. To change the color of a single plot
D. To add a title to a chart

Solution

  1. Step 1: Understand the function of plt.subplots()

    This function creates a figure and a grid of subplots (axes) to hold multiple charts.
  2. Step 2: Recognize the benefit of multiple charts in one figure

    Having multiple charts in one figure helps compare data visually side-by-side.
  3. Final Answer:

    To create multiple charts in one figure for easy comparison -> Option A
  4. Quick Check:

    Subplots = multiple charts in one figure [OK]
Hint: Subplots = multiple charts in one figure [OK]
Common Mistakes:
  • Thinking it saves images
  • Confusing with styling functions
  • Assuming it adds titles
2. Which of the following is the correct way to create a 2x2 grid of subplots using Matplotlib?
easy
A. fig, axs = plt.subplots(2)
B. fig, axs = plt.subplots(4)
C. fig, axs = plt.subplots(1, 4)
D. fig, axs = plt.subplots(2, 2)

Solution

  1. Step 1: Recall the syntax of plt.subplots()

    The function takes rows and columns as arguments to create a grid.
  2. Step 2: Identify the 2x2 grid syntax

    Using plt.subplots(2, 2) creates 2 rows and 2 columns, making 4 subplots.
  3. Final Answer:

    fig, axs = plt.subplots(2, 2) -> Option D
  4. Quick Check:

    Rows and columns = plt.subplots(2, 2) [OK]
Hint: Rows and columns go as two numbers in plt.subplots() [OK]
Common Mistakes:
  • Passing only one number for grid
  • Confusing total plots with grid shape
  • Using wrong argument order
3. What will be the output shape of axs when you run fig, axs = plt.subplots(3, 1)?
medium
A. A list of 3 Axes objects
B. A single Axes object
C. A 3x1 numpy array of Axes objects
D. A 1x3 numpy array of Axes objects

Solution

  1. Step 1: Understand plt.subplots(3, 1) creates 3 rows and 1 column

    This means 3 subplots stacked vertically.
  2. Step 2: Check the type of axs for single column

    When columns = 1, axs is a 2D numpy array of shape (3,1) of Axes objects, not a list.
  3. Final Answer:

    A 3x1 numpy array of Axes objects -> Option C
  4. Quick Check:

    Single column = 2D numpy array of shape (3,1) [OK]
Hint: Single column subplots return 2D numpy array of shape (n,1) [OK]
Common Mistakes:
  • Assuming always 1D list
  • Confusing rows and columns order
  • Expecting single Axes object
4. Identify the error in this code snippet for plotting on subplots:
fig, axs = plt.subplots(2, 2)
axs[2, 0].plot([1, 2, 3])
medium
A. TypeError because axs is not subscriptable
B. IndexError because axs[2, 0] is out of range
C. No error, code runs fine
D. SyntaxError due to wrong indexing

Solution

  1. Step 1: Check the shape of axs from plt.subplots(2, 2)

    It creates a 2x2 grid, so valid indices are 0 or 1 for rows and columns.
  2. Step 2: Analyze the index axs[2, 0]

    Index 2 for rows is out of range (only 0 and 1 allowed), causing IndexError.
  3. Final Answer:

    IndexError because axs[2, 0] is out of range -> Option B
  4. Quick Check:

    Index out of range = IndexError [OK]
Hint: Check subplot indices start at 0 and max is rows-1 [OK]
Common Mistakes:
  • Using indices beyond grid size
  • Confusing syntax error with index error
  • Assuming axs is a flat list
5. You want to plot 5 different line charts in a single figure using subplots arranged in 2 rows and 3 columns. Which code correctly handles the extra subplot that will remain empty?
hard
A. fig, axs = plt.subplots(2, 3) for i in range(5): axs.flat[i].plot([i, i+1, i+2]) axs.flat[5].axis('off')
B. fig, axs = plt.subplots(2, 3) for i in range(6): axs[i].plot([i, i+1, i+2])
C. fig, axs = plt.subplots(5, 1) for i in range(5): axs[i].plot([i, i+1, i+2])
D. fig, axs = plt.subplots(1, 5) for i in range(5): axs[i].plot([i, i+1, i+2])

Solution

  1. Step 1: Understand subplot grid and number of plots

    A 2x3 grid has 6 subplots but only 5 are needed, so one remains empty.
  2. Step 2: Use axs.flat to iterate all subplots in 1D

    This allows easy indexing over the 2D array of axes.
  3. Step 3: Turn off the extra subplot axis

    Calling axs.flat[5].axis('off') hides the unused subplot.
  4. Final Answer:

    fig, axs = plt.subplots(2, 3) for i in range(5): axs.flat[i].plot([i, i+1, i+2]) axs.flat[5].axis('off') -> Option A
  5. Quick Check:

    Use axs.flat and turn off extra subplot [OK]
Hint: Use axs.flat to index subplots and turn off unused ones [OK]
Common Mistakes:
  • Ignoring extra subplot and leaving it blank
  • Indexing axs as 1D when it's 2D without flat
  • Creating wrong grid shape for number of plots
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