Bird
Raised Fist0
Data Analysis Pythondata~10 mins

Figure and axes creation in Data Analysis Python - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Figure and axes creation
Import matplotlib.pyplot
↓
Create Figure object
↓
Add Axes or Subplots to Figure
↓
Use Axes to plot data
↓
Show or save the Figure
This flow shows how to import the plotting library, create a figure, add axes to it, plot data on the axes, and finally display or save the figure.
Execution Sample
Data Analysis Python
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([1, 2, 3], [4, 5, 6])
plt.show()
This code creates a figure, adds one axes, plots a simple line, and displays the plot window.
Execution Table
StepActionObject CreatedState/ValueOutput/Effect
1Import matplotlib.pyplot as pltplt moduleAvailable for useNo visual output
2Create figure with plt.figure()Figure objectEmpty figure with no axesNo visual output
3Add subplot 111 to figureAxes objectOne axes added to figureNo visual output
4Plot data on axesLine2D objectLine plotted on axesNo visual output
5Call plt.show()N/AFigure window opensPlot window displays line graph
6End of scriptN/AAll objects remain in memoryPlot window remains open until closed
💡 Script ends after showing the plot window
Variable Tracker
VariableStartAfter Step 2After Step 3After Step 4Final
pltNot definedmatplotlib.pyplot modulematplotlib.pyplot modulematplotlib.pyplot modulematplotlib.pyplot module
figNot definedFigure object (empty)Figure object (with 1 axes)Figure object (with 1 axes and line)Figure object (with 1 axes and line)
axNot definedNot definedAxes object (subplot 111)Axes object (with line plotted)Axes object (with line plotted)
Key Moments - 3 Insights
Why do we need to create a Figure before adding Axes?
The Figure is the main container for plots. Without it, Axes have no place to live. See execution_table step 2 and 3 where Figure is created first, then Axes are added.
What does '111' mean in add_subplot(111)?
It means 1 row, 1 column, and this is the 1st subplot. This creates a single axes filling the figure. See execution_table step 3.
Why doesn't plotting data immediately show the plot?
Plotting adds data to the Axes but does not display it. plt.show() must be called to open the plot window. See execution_table step 4 vs step 5.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what object is created at step 3?
AFigure object
BLine2D object
CAxes object
Dplt module
💡 Hint
Check the 'Object Created' column at step 3 in the execution_table.
At which step does the plot window appear?
AStep 3
BStep 5
CStep 4
DStep 2
💡 Hint
Look at the 'Output/Effect' column to find when the figure window opens.
If we skip creating the Figure object, what happens when adding Axes?
AError because no Figure exists
BAxes are added to a default figure automatically
CAxes are created but not shown
DPlot shows without axes
💡 Hint
The code calls fig.add_subplot(111), so 'fig' must be defined first; skipping causes NameError: name 'fig' is not defined.
Concept Snapshot
import matplotlib.pyplot as plt
fig = plt.figure()  # Create a figure container
ax = fig.add_subplot(111)  # Add one axes (1 row, 1 col, 1st plot)
ax.plot(x, y)  # Plot data on axes
plt.show()  # Display the figure window
Key: Figure holds Axes; Axes hold plots; show() displays all.
Full Transcript
This lesson shows how to create a figure and axes using matplotlib in Python. First, we import matplotlib.pyplot as plt. Then we create a Figure object with plt.figure(). Next, we add an Axes object to the figure using fig.add_subplot(111), which means one row, one column, first subplot. We plot data on the axes with ax.plot(). Finally, plt.show() opens a window displaying the plot. Variables plt, fig, and ax change as we create and add objects. Beginners often wonder why Figure must be created first, what '111' means, and why plotting doesn't immediately show the plot. The execution table traces each step and object creation. The visual quiz tests understanding of these steps. Remember: Figure is the container, Axes is the plot area, and show() displays the figure.

Practice

(1/5)
1. What does the plt.subplots() function return in matplotlib?
easy
A. A figure and one or more axes objects
B. Only a figure object
C. Only an axes object
D. A list of data points

Solution

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

    The function is designed to create a figure and axes together for plotting.
  2. Step 2: Check the return values

    It returns a tuple: the first is the figure, the second is the axes (single or array).
  3. Final Answer:

    A figure and one or more axes objects -> Option A
  4. Quick Check:

    plt.subplots() = (figure, axes) [OK]
Hint: Remember plt.subplots() returns figure and axes together [OK]
Common Mistakes:
  • Thinking it returns only figure or only axes
  • Confusing axes with data points
  • Assuming it returns a plot directly
2. Which of the following is the correct syntax to create a figure with 2 rows and 3 columns of axes using matplotlib?
easy
A. fig, axes = plt.subplots(rows=3, cols=2)
B. fig, axes = plt.subplots(2, 3)
C. fig, axes = plt.subplots(3, 2)
D. fig, axes = plt.subplots(2*3)

Solution

  1. Step 1: Recall plt.subplots() parameters

    The first argument is number of rows, the second is number of columns.
  2. Step 2: Match the correct order

    To create 2 rows and 3 columns, use plt.subplots(2, 3).
  3. Final Answer:

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

    Rows first, columns second in plt.subplots() [OK]
Hint: Remember rows first, columns second in plt.subplots() [OK]
Common Mistakes:
  • Swapping rows and columns order
  • Using keyword arguments incorrectly
  • Passing a single number instead of two
3. What will be the shape of axes when running fig, axes = plt.subplots(2, 2)?
medium
A. A 2x2 numpy array of AxesSubplot objects
B. A list of 4 AxesSubplot objects
C. A single AxesSubplot object
D. A dictionary of axes objects

Solution

  1. Step 1: Understand axes structure for multiple subplots

    When more than one subplot is created, axes is a 2D array matching the grid shape.
  2. Step 2: Check the shape for 2 rows and 2 columns

    Axes will be a 2x2 numpy array of AxesSubplot objects.
  3. Final Answer:

    A 2x2 numpy array of AxesSubplot objects -> Option A
  4. Quick Check:

    Multiple subplots = axes array matching grid [OK]
Hint: Multiple subplots return axes array matching rows and columns [OK]
Common Mistakes:
  • Expecting a flat list instead of 2D array
  • Thinking axes is a single object always
  • Confusing axes with figure
4. Identify the error in this code snippet:
fig, ax = plt.subplots(2, 2)
ax.plot([1, 2, 3], [4, 5, 6])
medium
A. fig and ax are swapped in assignment
B. plt.subplots() cannot create 2x2 axes
C. ax is an array, so ax.plot() causes an error
D. The plot data lists have different lengths

Solution

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

    ax is a 2x2 array of axes, not a single axes object.
  2. Step 2: Understand why ax.plot() fails

    Calling plot() on an array causes an AttributeError because arrays don't have plot method.
  3. Final Answer:

    ax is an array, so ax.plot() causes an error -> Option C
  4. Quick Check:

    Array of axes needs indexing before plot() [OK]
Hint: Index axes array before plotting when multiple subplots exist [OK]
Common Mistakes:
  • Trying to plot on axes array directly
  • Assuming plt.subplots(2,2) returns single axes
  • Ignoring need to index axes for plotting
5. You want to create a figure with 3 subplots stacked vertically and set the figure size to 8 inches wide and 12 inches tall. Which code correctly does this?
hard
A. fig, axes = plt.subplots(1, 3, figsize=(12, 8))
B. fig, axes = plt.subplots(3, figsize=(8, 12))
C. fig, axes = plt.subplots(3, 1, size=(8, 12))
D. fig, axes = plt.subplots(3, 1, figsize=(8, 12))

Solution

  1. Step 1: Determine subplot layout for vertical stacking

    3 subplots stacked vertically means 3 rows and 1 column.
  2. Step 2: Set figure size correctly

    Use figsize=(width, height) with width=8 and height=12 inches.
  3. Final Answer:

    fig, axes = plt.subplots(3, 1, figsize=(8, 12)) -> Option D
  4. Quick Check:

    Rows=3, cols=1, figsize=(8,12) [OK]
Hint: Use figsize=(width, height) and rows, columns order [OK]
Common Mistakes:
  • Swapping rows and columns
  • Using wrong keyword 'size' instead of 'figsize'
  • Confusing width and height order
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