Bird
Raised Fist0
Pandasdata~10 mins

Subplots for multiple charts in Pandas - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Subplots for multiple charts
Create Figure and Axes with subplots()
↓
Prepare Data for each chart
↓
Plot data on each Axes
↓
Adjust layout for clarity
↓
Show or save the combined figure
This flow shows how to create multiple charts in one figure using subplots, plot data on each, and display them together.
Execution Sample
Pandas
import pandas as pd
import matplotlib.pyplot as plt

fig, axs = plt.subplots(1, 2)
data = pd.DataFrame({'A': [1,2,3], 'B': [4,5,6]})
axs[0].plot(data['A'])
axs[1].plot(data['B'])
plt.show()
This code creates a figure with two side-by-side charts plotting columns 'A' and 'B' from a DataFrame.
Execution Table
StepActionCode/MethodResult/State
1Import pandas and matplotlib.pyplotimport pandas as pd; import matplotlib.pyplot as pltLibraries ready for use
2Create figure and axes with 1 row, 2 columnsfig, axs = plt.subplots(1, 2)Figure with 2 Axes objects created
3Create DataFrame with columns A and Bdata = pd.DataFrame({'A': [1,2,3], 'B': [4,5,6]})DataFrame with 3 rows and 2 columns
4Plot column 'A' on first Axesaxs[0].plot(data['A'])Line chart of [1,2,3] on left subplot
5Plot column 'B' on second Axesaxs[1].plot(data['B'])Line chart of [4,5,6] on right subplot
6Display the figure with both subplotsplt.show()Window opens showing two side-by-side line charts
7End of executionN/AAll charts displayed successfully
💡 Execution stops after displaying the figure with all subplots.
Variable Tracker
VariableStartAfter Step 2After Step 3After Step 4After Step 5Final
figNoneFigure object createdFigure object unchangedFigure with first plotFigure with two plotsFigure with two plots
axsNoneArray of 2 Axes objectsUnchangedFirst Axes has plotBoth Axes have plotsBoth Axes have plots
dataNoneNoneDataFrame with columns A and BUnchangedUnchangedUnchanged
Key Moments - 3 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 subplot is accessed by its index like axs[0] for the first chart and axs[1] for the second, as shown in execution_table steps 2, 4, and 5.
What happens if we try to plot data directly on fig instead of axs?
The figure object 'fig' does not have a plot method; plotting must be done on Axes objects (axs). This is why in steps 4 and 5, plotting is done on axs[0] and axs[1], not on fig.
How does plt.show() know to display both charts together?
Because both plots are drawn on subplots within the same figure 'fig', calling plt.show() in step 6 displays the entire figure with all its subplots.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the state of 'axs' after step 2?
AAn array of 2 Axes objects
BA single Axes object
CNone
DA DataFrame
💡 Hint
Check the 'Result/State' column for step 2 in the execution_table.
At which step does the first plot appear on the figure?
AStep 3
BStep 4
CStep 5
DStep 6
💡 Hint
Look at the 'Action' and 'Result/State' columns for when plotting on axs[0] happens.
If we change plt.subplots(1, 2) to plt.subplots(2, 1), how would the layout change?
ATwo charts side by side
BOnly one chart shown
CTwo charts stacked vertically
DNo charts shown
💡 Hint
Recall that plt.subplots(rows, columns) defines the grid layout of subplots.
Concept Snapshot
Use plt.subplots(rows, cols) to create multiple charts in one figure.
Access each subplot via the returned Axes array (e.g., axs[0], axs[1]).
Plot data on each Axes separately.
Call plt.show() once to display all charts together.
Adjust layout if needed for clarity.
Full Transcript
This lesson shows how to create multiple charts in one figure using pandas and matplotlib. First, we import the needed libraries. Then, we create a figure and multiple subplots using plt.subplots. We prepare a DataFrame with data columns. Each column is plotted on a separate subplot accessed by index. Finally, we display the combined figure with all charts using plt.show. Key points include accessing subplots via axs array and plotting on each separately. The execution table traces each step from creating the figure to showing the plots. The variable tracker shows how fig, axs, and data change. Common confusions about subplot indexing and plotting on figure vs axes are clarified. The quiz tests understanding of subplot creation, plotting steps, and layout changes.

Practice

(1/5)
1. What is the main purpose of using subplots in pandas plotting?
easy
A. To display multiple charts in one figure for easy comparison
B. To save plots as separate image files automatically
C. To change the color of a single plot
D. To increase the size of a single chart

Solution

  1. Step 1: Understand what subplots do

    Subplots allow multiple charts to be shown together in one figure.
  2. Step 2: Compare options

    Only To display multiple charts in one figure for easy comparison describes this purpose correctly.
  3. Final Answer:

    To display 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 subplots save images automatically
  • Confusing subplots with styling options
  • Believing subplots only affect one chart
2. Which of the following is the correct way to create a 2x2 grid of subplots using matplotlib with pandas?
easy
A. fig, axes = plt.subplots(rows=2)
B. fig, axes = plt.subplots(4)
C. fig, axes = plt.subplots(columns=2)
D. fig, axes = plt.subplots(2, 2)

Solution

  1. Step 1: Recall plt.subplots syntax

    The function plt.subplots(rows, columns) creates a grid of plots.
  2. Step 2: Match the 2x2 grid

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

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

    plt.subplots(2, 2) = 2 rows, 2 columns [OK]
Hint: Use plt.subplots(rows, columns) for grid size [OK]
Common Mistakes:
  • Using plt.subplots(4) creates 4 rows, not a 2x2 grid
  • Using keyword arguments incorrectly
  • Confusing rows and columns parameters
3. Given the code below, what will axes be?
import matplotlib.pyplot as plt
fig, axes = plt.subplots(1, 3)
print(type(axes))
medium
A. <class 'numpy.ndarray'>
B. <class 'matplotlib.axes._subplots.AxesSubplot'>
C. <class 'list'>
D. <class 'tuple'>

Solution

  1. Step 1: Understand plt.subplots output for multiple plots

    When creating multiple subplots in one row, axes is a numpy array of AxesSubplot objects.
  2. Step 2: Check the printed type

    Printing type(axes) shows numpy.ndarray because axes is an array of subplot axes.
  3. Final Answer:

    <class 'numpy.ndarray'> -> Option A
  4. Quick Check:

    Multiple subplots = axes is numpy array [OK]
Hint: Multiple subplots return numpy array of axes [OK]
Common Mistakes:
  • Thinking axes is a single AxesSubplot object
  • Assuming axes is a list or tuple
  • Confusing axes with figure object
4. What is wrong with this code snippet for creating subplots?
fig, axes = plt.subplots(1)
axes[0].plot([1, 2, 3])
axes[1].plot([4, 5, 6])
medium
A. plt.subplots needs two arguments for multiple plots
B. axes is a single AxesSubplot, so indexing causes an error
C. axes is not iterable when only one argument is given
D. plot data lists must be the same length

Solution

  1. Step 1: Understand plt.subplots(1) output

    plt.subplots(1) creates a single subplot (1 row, 1 column), so axes is a single AxesSubplot object, not an array.
  2. Step 2: Indexing causes error

    Trying axes[0] or axes[1] on a single AxesSubplot raises TypeError: 'AxesSubplot' object is not subscriptable.
  3. Final Answer:

    axes is a single AxesSubplot, so indexing causes an error -> Option B
  4. Quick Check:

    plt.subplots(1) = single axes, indexing fails [OK]
Hint: Check if axes is array before indexing [OK]
Common Mistakes:
  • Assuming axes is always a single plot
  • Forgetting axes can be array for multiple subplots
  • Confusing number of arguments with subplot shape
5. You want to plot three different pandas DataFrame columns side-by-side using subplots in one row. Which code correctly creates the subplots and plots each column separately?
hard
A. fig, axes = plt.subplots(3, 1) for i, col in enumerate(df.columns[:3]): df[col].plot(ax=axes[i])
B. fig, axes = plt.subplots(3) for i, col in enumerate(df.columns[:3]): df[col].plot(ax=axes[i])
C. fig, axes = plt.subplots(1, 3) for i, col in enumerate(df.columns[:3]): df[col].plot(ax=axes[i])
D. fig, axes = plt.subplots(1, 3) for i, col in enumerate(df.columns[:3]): df[col].plot(ax=fig[i])

Solution

  1. Step 1: Determine subplot layout for side-by-side plots

    Side-by-side means 1 row and 3 columns, so plt.subplots(1, 3) is correct.
  2. Step 2: Check plotting loop and axes usage

    Looping over columns and plotting on axes[i] is correct usage.
  3. Step 3: Identify errors in other options

    fig, axes = plt.subplots(3, 1) for i, col in enumerate(df.columns[:3]): df[col].plot(ax=axes[i]) uses (3,1) which is vertical layout, not side-by-side. fig, axes = plt.subplots(1, 3) for i, col in enumerate(df.columns[:3]): df[col].plot(ax=fig[i]) uses fig[i] which is invalid. fig, axes = plt.subplots(3) for i, col in enumerate(df.columns[:3]): df[col].plot(ax=axes[i]) uses plt.subplots(3) which creates 3 rows and 1 column, not side-by-side.
  4. Final Answer:

    fig, axes = plt.subplots(1, 3) for i, col in enumerate(df.columns[:3]): df[col].plot(ax=axes[i]) -> Option C
  5. Quick Check:

    Side-by-side = plt.subplots(1, 3) + axes[i] [OK]
Hint: Side-by-side = 1 row, multiple columns in plt.subplots [OK]
Common Mistakes:
  • Using wrong subplot shape for layout
  • Passing fig instead of axes to plot
  • Confusing rows and columns in plt.subplots
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