Bird
Raised Fist0
Matplotlibdata~10 mins

3D wireframe 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 wireframe plots
Import matplotlib and numpy
Create grid data (X, Y)
Calculate Z values from X, Y
Create 3D plot figure and axes
Plot wireframe using X, Y, Z
Show plot window
The flow shows how to prepare data and plot a 3D wireframe step-by-step using matplotlib.
Execution Sample
Matplotlib
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

X = np.linspace(-5, 5, 10)
Y = np.linspace(-5, 5, 10)
X, Y = np.meshgrid(X, Y)
Z = np.sin(np.sqrt(X**2 + Y**2))

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_wireframe(X, Y, Z)
plt.show()
This code creates a 3D wireframe plot of a sine wave surface based on X and Y grid data.
Execution Table
StepActionVariables Created/UpdatedResult/Output
1Import numpy and matplotlibnumpy, matplotlib modules loadedReady to use functions
2Create 1D arrays X and Y with linspaceX, Y arrays of 10 points eachArrays from -5 to 5
3Create 2D grid arrays with meshgridX, Y updated to 2D arrays (10x10)Grid coordinates for plotting
4Calculate Z as sin of sqrt(X^2 + Y^2)Z 2D array (10x10)Z values for surface height
5Create figure and 3D axesfig, ax objectsEmpty 3D plot ready
6Plot wireframe with X, Y, ZWireframe drawn on ax3D wireframe visible
7Show plot windowPlot window opensUser sees 3D wireframe plot
8End of scriptNo further actionsExecution stops
💡 Script ends after showing the 3D wireframe plot window.
Variable Tracker
VariableStartAfter Step 2After Step 3After Step 4After Step 5After Step 6Final
Xundefined1D array (10 values)2D array (10x10 grid)2D array (unchanged)2D array (unchanged)2D array (unchanged)2D array (unchanged)
Yundefined1D array (10 values)2D array (10x10 grid)2D array (unchanged)2D array (unchanged)2D array (unchanged)2D array (unchanged)
Zundefinedundefinedundefined2D array (10x10) calculated2D array (unchanged)2D array (unchanged)2D array (unchanged)
figundefinedundefinedundefinedundefinedFigure object createdFigure object (unchanged)Figure object (unchanged)
axundefinedundefinedundefinedundefined3D axes object createdAxes with wireframe plottedAxes with wireframe plotted
Key Moments - 3 Insights
Why do we use meshgrid on X and Y before calculating Z?
meshgrid converts 1D arrays X and Y into 2D grids so we can calculate Z values for every (X, Y) point, as shown in execution_table step 3 and 4.
What does plot_wireframe actually draw on the axes?
plot_wireframe draws lines connecting points on the surface defined by X, Y, Z grids, creating a wireframe mesh visible in step 6.
Why do we need to create a 3D axes with projection='3d'?
The 3D axes allows matplotlib to render 3D plots like wireframes; without it, plot_wireframe won't work, as in step 5.
Visual Quiz - 3 Questions
Test your understanding
Look at the variable_tracker table, what is the shape of X after step 3?
A2D array with shape (10, 10)
B1D array with 10 elements
CScalar value
DUndefined
💡 Hint
Check the 'X' row under 'After Step 3' column in variable_tracker.
According to the execution_table, at which step is the wireframe actually drawn?
AStep 4
BStep 6
CStep 5
DStep 7
💡 Hint
Look for the action mentioning 'Plot wireframe' in execution_table.
If we skip meshgrid and calculate Z directly from 1D X and Y, what happens?
AZ will be a 2D array as expected
BPlot will show correctly anyway
CCode will raise an error or produce incorrect shape
DX and Y become 3D arrays
💡 Hint
Refer to key_moments about why meshgrid is needed and variable shapes in variable_tracker.
Concept Snapshot
3D wireframe plots in matplotlib:
- Use numpy.meshgrid to create X, Y grids
- Calculate Z values for each (X, Y) point
- Create 3D axes with projection='3d'
- Use ax.plot_wireframe(X, Y, Z) to draw
- Call plt.show() to display the plot
Full Transcript
This visual execution trace shows how to create a 3D wireframe plot using matplotlib in Python. First, numpy and matplotlib are imported. Then, 1D arrays X and Y are created with linspace. These are converted to 2D grid arrays using meshgrid, which allows calculation of Z values for each grid point. Z is computed as the sine of the distance from the origin. A matplotlib figure and 3D axes are created. The wireframe is plotted on the axes using plot_wireframe with X, Y, Z data. Finally, plt.show() displays the 3D wireframe plot window. Variable states and key moments clarify why meshgrid is needed and how the wireframe is drawn. The quizzes test understanding of array shapes, plotting steps, and meshgrid importance.

Practice

(1/5)
1. What does a 3D wireframe plot in matplotlib primarily show?
easy
A. Only the color distribution of data points
B. A flat 2D scatter plot
C. The shape of data or functions in three dimensions using lines
D. A pie chart with 3D effects

Solution

  1. Step 1: Understand the purpose of 3D wireframe plots

    3D wireframe plots use a grid of lines to represent the shape of data or functions in three dimensions.
  2. Step 2: Compare with other plot types

    Unlike scatter or pie charts, wireframe plots focus on the surface structure, not just colors or flat points.
  3. Final Answer:

    The shape of data or functions in three dimensions using lines -> Option C
  4. Quick Check:

    3D wireframe = 3D shape with lines [OK]
Hint: Wireframe plots show 3D shapes with lines, not colors or points [OK]
Common Mistakes:
  • Confusing wireframe with scatter or surface plots
  • Thinking wireframe shows only colors
  • Assuming wireframe is 2D
2. Which of the following is the correct way to create a 3D wireframe plot using matplotlib?
easy
A. ax.plot_wireframe(X, Y, Z)
B. ax.plot_surface(X, Y, Z)
C. plt.plot_wireframe(X, Y, Z)
D. ax.scatter_wireframe(X, Y, Z)

Solution

  1. Step 1: Identify the correct method for wireframe plots

    The method plot_wireframe is called on the 3D axes object ax.
  2. Step 2: Eliminate incorrect options

    plot_surface creates a surface plot, not wireframe. plt.plot_wireframe is invalid because plt does not have this method. scatter_wireframe does not exist.
  3. Final Answer:

    ax.plot_wireframe(X, Y, Z) -> Option A
  4. Quick Check:

    Wireframe method is plot_wireframe on ax [OK]
Hint: Use ax.plot_wireframe for 3D wireframe plots [OK]
Common Mistakes:
  • Calling plot_wireframe on plt instead of ax
  • Using plot_surface instead of plot_wireframe
  • Using non-existent methods like scatter_wireframe
3. What will the following code output?
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
X = np.arange(-5, 6, 5)
Y = np.arange(-5, 6, 5)
X, Y = np.meshgrid(X, Y)
Z = X**2 - Y**2
ax.plot_wireframe(X, Y, Z, rstride=1, cstride=1)
plt.show()
medium
A. A 3D wireframe plot showing a saddle shape
B. A 2D line plot of X and Y
C. A scatter plot of points
D. An error due to incorrect meshgrid usage

Solution

  1. Step 1: Understand the meshgrid and function

    X and Y create a grid from -5 to 5 with step 5, so points at -5, 0, 5. Z = X^2 - Y^2 forms a saddle shape.
  2. Step 2: Analyze the plot_wireframe call

    Using rstride=1 and cstride=1 plots all grid lines, producing a wireframe of the saddle surface.
  3. Final Answer:

    A 3D wireframe plot showing a saddle shape -> Option A
  4. Quick Check:

    Wireframe of Z = X^2 - Y^2 = saddle shape [OK]
Hint: Z = X² - Y² creates a saddle; wireframe shows surface shape [OK]
Common Mistakes:
  • Thinking meshgrid creates error
  • Confusing wireframe with scatter or 2D plot
  • Ignoring the shape of Z function
4. Identify the error in this code snippet for a 3D wireframe plot:
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
X = np.linspace(-3, 3, 10)
Y = np.linspace(-3, 3, 10)
Z = np.sin(X) * np.cos(Y)
ax.plot_wireframe(X, Y, Z)
plt.show()
medium
A. X and Y should be lists, not arrays
B. Missing import for Axes3D
C. plot_wireframe does not exist
D. Z is not a 2D array matching X and Y meshgrid shape

Solution

  1. Step 1: Check shapes of X, Y, and Z

    X and Y are 1D arrays; Z is computed element-wise but is also 1D, not 2D grid.
  2. Step 2: Understand plot_wireframe requirements

    plot_wireframe requires X, Y, Z to be 2D arrays from meshgrid to plot a surface grid.
  3. Final Answer:

    Z is not a 2D array matching X and Y meshgrid shape -> Option D
  4. Quick Check:

    plot_wireframe needs 2D X, Y, Z arrays [OK]
Hint: Use meshgrid to make X, Y, Z 2D arrays for wireframe [OK]
Common Mistakes:
  • Passing 1D arrays instead of meshgrid 2D arrays
  • Ignoring shape mismatch errors
  • Assuming plot_wireframe works with 1D inputs
5. You want to plot a 3D wireframe of the function Z = sin(sqrt(X² + Y²)) over the range -6 to 6 for both X and Y with a grid spacing of 0.5. Which code snippet correctly creates this plot with a blue wireframe and stride of 5?
hard
A. import numpy as np import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111, projection='3d') X = np.linspace(-6, 6, 25) Y = np.linspace(-6, 6, 25) Z = np.sin(np.sqrt(X**2 + Y**2)) ax.plot_wireframe(X, Y, Z, color='blue', stride=5) plt.show()
B. import numpy as np import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111, projection='3d') X = np.arange(-6, 6.5, 0.5) Y = np.arange(-6, 6.5, 0.5) X, Y = np.meshgrid(X, Y) R = np.sqrt(X**2 + Y**2) Z = np.sin(R) ax.plot_wireframe(X, Y, Z, rstride=5, cstride=5, color='blue') plt.show()
C. import numpy as np import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111, projection='3d') X = np.arange(-6, 6, 0.5) Y = np.arange(-6, 6, 0.5) X, Y = np.meshgrid(X, Y) Z = np.sin(np.sqrt(X**2 + Y**2)) ax.plot_wireframe(X, Y, Z, rstride=5, cstride=5, color='red') plt.show()
D. import numpy as np import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111, projection='3d') X = np.arange(-6, 6, 0.5) Y = np.arange(-6, 6, 0.5) X, Y = np.meshgrid(X, Y) Z = np.sin(np.sqrt(X**2 + Y**2)) ax.plot_wireframe(X, Y, Z, rstride=0.5, cstride=0.5, color='blue') plt.show()

Solution

  1. Step 1: Create X and Y grids with correct range and spacing

    Using np.arange(-6, 6.5, 0.5) ensures points from -6 to 6 with 0.5 spacing. Then meshgrid creates 2D arrays.
  2. Step 2: Calculate Z and plot with correct stride and color

    Z is computed as sin(sqrt(X² + Y²)). The wireframe uses rstride=5 and cstride=5 for spacing lines, and color='blue' for blue lines.
  3. Final Answer:

    Code snippet A correctly creates the desired 3D wireframe plot -> Option B
  4. Quick Check:

    Correct meshgrid, stride=5, color='blue' = import numpy as np import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111, projection='3d') X = np.arange(-6, 6.5, 0.5) Y = np.arange(-6, 6.5, 0.5) X, Y = np.meshgrid(X, Y) R = np.sqrt(X**2 + Y**2) Z = np.sin(R) ax.plot_wireframe(X, Y, Z, rstride=5, cstride=5, color='blue') plt.show() [OK]
Hint: Use meshgrid, rstride/cstride for spacing, color param for wireframe [OK]
Common Mistakes:
  • Using stride instead of rstride and cstride
  • Incorrect range or missing meshgrid
  • Wrong color or stride values