Bird
Raised Fist0
Matplotlibdata~10 mins

3D scatter plots in Matplotlib - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Concept Flow - 3D scatter plots
Import matplotlib and mpl_toolkits
Create 3D Axes object
Prepare x, y, z data arrays
Call scatter() with x, y, z
Render 3D scatter plot
Show plot window
The flow starts by importing needed libraries, then creating a 3D plot area, preparing data points, plotting them in 3D, and finally displaying the plot.
Execution Sample
Matplotlib
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]

ax.scatter(x, y, z)
plt.show()
This code creates a 3D scatter plot with three points at coordinates (1,4,7), (2,5,8), and (3,6,9).
Execution Table
StepActionVariable/FunctionValue/ResultNotes
1Import matplotlib.pyplotpltmodule loadedReady for plotting
2Import Axes3D from mpl_toolkits.mplot3dAxes3Dclass loadedEnables 3D plotting
3Create figurefigFigure object createdCanvas for plots
4Add 3D subplotax3D Axes objectPlotting area with 3D projection
5Define x datax[1, 2, 3]X coordinates of points
6Define y datay[4, 5, 6]Y coordinates of points
7Define z dataz[7, 8, 9]Z coordinates of points
8Call ax.scatter(x, y, z)scatter plot3 points plottedPoints placed in 3D space
9Call plt.show()plot window3D scatter plot displayedUser sees the plot
10End--Plot window open, execution stops
💡 Execution stops after displaying the 3D scatter plot window.
Variable Tracker
VariableStartAfter Step 5After Step 6After Step 7Final
xundefined[1, 2, 3][1, 2, 3][1, 2, 3][1, 2, 3]
yundefinedundefined[4, 5, 6][4, 5, 6][4, 5, 6]
zundefinedundefinedundefined[7, 8, 9][7, 8, 9]
figundefinedFigure objectFigure objectFigure objectFigure object
axundefinedundefinedundefined3D Axes object3D Axes object
Key Moments - 3 Insights
Why do we need to import Axes3D from mpl_toolkits.mplot3d?
Axes3D enables 3D plotting capabilities. Without it, the 'projection="3d"' argument in add_subplot would not work. See execution_table step 2 and 4.
What does ax.scatter(x, y, z) do exactly?
It plots points in 3D space using the x, y, and z coordinates. Each list element corresponds to one point. See execution_table step 8.
Why do we call plt.show() at the end?
plt.show() opens the plot window so we can see the graph. Without it, the plot is created but not displayed. See execution_table step 9.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 7, what is the value of variable z?
A[7, 8, 9]
B[1, 2, 3]
C[4, 5, 6]
Dundefined
💡 Hint
Check the 'Value/Result' column for step 7 in execution_table.
At which step is the 3D Axes object created?
AStep 2
BStep 3
CStep 4
DStep 5
💡 Hint
Look at the 'Action' and 'Variable/Function' columns in execution_table.
If we skip plt.show(), what happens?
AThe plot window will still open automatically.
BThe plot will be created but not displayed.
CAn error will occur at ax.scatter().
DThe data points will not be plotted.
💡 Hint
Refer to key_moments explanation about plt.show() and execution_table step 9.
Concept Snapshot
3D scatter plots with matplotlib:
- Import Axes3D for 3D support
- Create figure and 3D axes: fig.add_subplot(111, projection='3d')
- Prepare x, y, z data lists
- Use ax.scatter(x, y, z) to plot points
- Call plt.show() to display the plot
Full Transcript
This visual execution traces how to create a 3D scatter plot using matplotlib in Python. First, we import matplotlib.pyplot and Axes3D from mpl_toolkits.mplot3d to enable 3D plotting. Then, we create a figure object and add a 3D subplot to it. Next, we define three lists x, y, and z containing coordinates of points. We call ax.scatter(x, y, z) to plot these points in 3D space. Finally, plt.show() displays the plot window so the user can see the 3D scatter plot. Variables like x, y, z, fig, and ax are initialized and updated step-by-step. Key moments include understanding why Axes3D is needed, what ax.scatter does, and the role of plt.show(). The execution table shows each step's action and result, helping beginners follow the process visually.

Practice

(1/5)
1. What is the main purpose of using a 3D scatter plot in matplotlib?
easy
A. To display text annotations in 3D space
B. To visualize data points in three dimensions and observe patterns
C. To plot a line graph with three lines
D. To create a bar chart with three bars

Solution

  1. Step 1: Understand the role of 3D scatter plots

    3D scatter plots show points in three dimensions, helping to see relationships among three variables.
  2. Step 2: Compare with other plot types

    Bar charts and line graphs do not show points in 3D space, and text annotations are not the main purpose.
  3. Final Answer:

    To visualize data points in three dimensions and observe patterns -> Option B
  4. Quick Check:

    3D scatter plots = visualize points in 3D [OK]
Hint: 3D scatter plots show points in 3D space [OK]
Common Mistakes:
  • Confusing 3D scatter with bar or line plots
  • Thinking 3D scatter is for text annotations
  • Assuming 3D scatter plots show continuous surfaces
2. Which of the following is the correct way to create a 3D scatter plot axis in matplotlib?
easy
A. ax = plt.axes(projection='3d')
B. ax = plt.subplots(projection='3d')
C. ax = plt.figure(projection='3d')
D. ax = plt.subplot(projection='3d')

Solution

  1. Step 1: Recall how to create 3D axes

    In matplotlib, plt.axes(projection='3d') creates a 3D axes object.
  2. Step 2: Check other options

    plt.subplot and plt.subplots do not accept projection directly; plt.figure creates a figure, not axes.
  3. Final Answer:

    ax = plt.axes(projection='3d') -> Option A
  4. Quick Check:

    Use plt.axes with projection='3d' for 3D axes [OK]
Hint: Use plt.axes(projection='3d') to get 3D axes [OK]
Common Mistakes:
  • Using plt.subplot instead of plt.axes for 3D
  • Passing projection to plt.figure instead of axes
  • Confusing plt.subplots with plt.subplot
3. What will be the output of this code snippet?
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter([1, 2], [3, 4], [5, 6], c='r', marker='o')
plt.show()
medium
A. A 3D scatter plot with two red circular points at coordinates (1,3,5) and (2,4,6)
B. A 2D scatter plot with red points
C. A syntax error due to missing import
D. An empty plot with no points

Solution

  1. Step 1: Analyze the code for 3D scatter plot creation

    The code creates a figure, adds a 3D subplot, and plots two points with coordinates (1,3,5) and (2,4,6) in red circles.
  2. Step 2: Confirm the plot output

    The points will appear in 3D space as red circles; no errors occur.
  3. Final Answer:

    A 3D scatter plot with two red circular points at coordinates (1,3,5) and (2,4,6) -> Option A
  4. Quick Check:

    3D scatter with given points = red circles at (1,3,5) and (2,4,6) [OK]
Hint: Check coordinates and color for scatter points [OK]
Common Mistakes:
  • Thinking it creates 2D plot instead of 3D
  • Assuming syntax error without checking imports
  • Expecting no points plotted
4. Identify the error in this code that tries to plot a 3D scatter plot:
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter([1,2,3], [4,5,6], [7,8,9])
plt.show()
medium
A. scatter function does not accept three arguments
B. The lists for x, y, z have different lengths
C. plt.figure() is not imported correctly
D. Missing projection='3d' in add_subplot, so 3D plotting fails

Solution

  1. Step 1: Check subplot creation for 3D

    The code uses fig.add_subplot(111) without projection='3d', so it creates a 2D axes.
  2. Step 2: Understand scatter with 3D data

    On 2D axes, passing three lists to scatter will treat the third list as point sizes instead of z-coordinates, producing a 2D scatter plot rather than 3D.
  3. Final Answer:

    Missing projection='3d' in add_subplot, so 3D plotting fails -> Option D
  4. Quick Check:

    3D scatter needs projection='3d' [OK]
Hint: Always add projection='3d' for 3D plots [OK]
Common Mistakes:
  • Forgetting projection='3d' in add_subplot
  • Thinking scatter can't take three arguments
  • Assuming list length mismatch causes error
5. You want to plot a 3D scatter plot with points colored by their z-value using a colormap. Which code snippet correctly achieves this?
hard
A. ax.scatter(x, y, z, c='z', colormap='viridis')
B. ax.scatter(x, y, z, color='z', cmap='viridis')
C. ax.scatter(x, y, z, c=z, cmap='viridis')
D. ax.scatter(x, y, z, colors=z, cmap='viridis')

Solution

  1. Step 1: Understand color mapping in scatter

    To color points by a variable, pass that variable to c= and specify cmap for colormap.
  2. Step 2: Check correct parameter names

    c is correct for colors; color or colors with string 'z' or colormap are incorrect.
  3. Final Answer:

    ax.scatter(x, y, z, c=z, cmap='viridis') -> Option C
  4. Quick Check:

    Use c=variable and cmap='name' for color mapping [OK]
Hint: Use c=values and cmap='name' to color points [OK]
Common Mistakes:
  • Using color='z' instead of c=z
  • Using colormap instead of cmap
  • Passing colors=z which is invalid