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
Recall & Review
beginner
What is a 3D surface plot?
A 3D surface plot is a graph that shows a three-dimensional surface. It helps us see how two variables affect a third variable by drawing a surface in 3D space.
Click to reveal answer
beginner
Which matplotlib module is used to create 3D surface plots?
The mpl_toolkits.mplot3d module is used to create 3D plots, including surface plots, in matplotlib.
Click to reveal answer
beginner
What function in matplotlib creates a 3D surface plot?
The plot_surface() function of a 3D axis object creates a 3D surface plot.
Click to reveal answer
intermediate
How do you prepare data for a 3D surface plot?
You create two 2D arrays for the X and Y coordinates using numpy.meshgrid(). Then calculate the Z values for each (X, Y) pair.
Click to reveal answer
intermediate
How can you change the color of a 3D surface plot?
You can use the cmap parameter in plot_surface() to set a color map, like cmap='viridis' or cmap='coolwarm'.
Click to reveal answer
Which function creates a grid of X and Y values for 3D surface plots?
Anumpy.meshgrid()
Bnumpy.linspace()
Cmatplotlib.plot_surface()
Dmatplotlib.figure()
✗ Incorrect
numpy.meshgrid() creates coordinate matrices from coordinate vectors, needed for 3D surface plots.
What does the Z array represent in a 3D surface plot?
AThe color map
BThe X coordinates
CThe Y coordinates
DThe height values for each (X, Y) point
✗ Incorrect
Z holds the values that define the surface height at each X and Y coordinate.
Which import is necessary to enable 3D plotting in matplotlib?
Afrom mpl_toolkits.mplot3d import Axes3D
Bimport matplotlib.pyplot as plt
Cimport numpy as np
Dfrom matplotlib import cm
✗ Incorrect
The Axes3D class from mpl_toolkits.mplot3d enables 3D plotting.
How do you add a 3D subplot to a matplotlib figure?
Afig.add_subplot(111)
Bplt.subplot(111)
Cfig.add_subplot(111, projection='3d')
Dplt.figure(3d=True)
✗ Incorrect
Use projection='3d' to create a 3D subplot.
Which parameter controls the color style of a 3D surface plot?
Acolor
Bcmap
Cstyle
Dpalette
✗ Incorrect
The cmap parameter sets the color map for the surface.
Explain the steps to create a 3D surface plot using matplotlib.
Think about data preparation, figure setup, and plotting function.
You got /5 concepts.
Describe how changing the color map affects a 3D surface plot.
Consider how colors help show data differences.
You got /4 concepts.
Practice
(1/5)
1. What does a 3D surface plot in matplotlib primarily show?
easy
A. The relationship between two input variables and one output variable as a curved surface
B. A simple 2D line graph of data points
C. Only the distribution of a single variable
D. A bar chart comparing categories
Solution
Step 1: Understand the purpose of 3D surface plots
3D surface plots visualize how two inputs relate to an output by showing a curved surface in three dimensions.
Step 2: Compare with other plot types
Unlike 2D line graphs or bar charts, 3D surface plots show a continuous surface representing output values over a grid of inputs.
Final Answer:
The relationship between two input variables and one output variable as a curved surface -> Option A
Quick Check:
3D surface plot = curved surface of inputs and output [OK]
Hint: 3D surface plots show two inputs and one output as a surface [OK]
Common Mistakes:
Confusing 3D surface plots with 2D line plots
Thinking it shows only one variable distribution
Mixing up bar charts with surface plots
2. Which of the following is the correct way to import the 3D plotting toolkit in matplotlib?
easy
A. import matplotlib.pyplot as plt3d
B. from matplotlib import surface3d
C. from mpl_toolkits.mplot3d import Axes3D
D. import mpl3d as m3d
Solution
Step 1: Recall the standard import for 3D plotting
Matplotlib uses mpl_toolkits.mplot3d to enable 3D plotting, and the correct import is from mpl_toolkits.mplot3d import Axes3D.
Step 2: Check other options for correctness
Options A, C, and D are not valid matplotlib import statements for 3D plotting.
Final Answer:
from mpl_toolkits.mplot3d import Axes3D -> Option C
Quick Check:
3D import = mpl_toolkits.mplot3d Axes3D [OK]
Hint: Use mpl_toolkits.mplot3d import Axes3D for 3D plots [OK]
Common Mistakes:
Trying to import non-existent modules
Using wrong aliases like plt3d
Assuming 3D is included by default in pyplot
3. What will the following code output?
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 = X**2 + Y**2
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z)
plt.show()
medium
A. A 3D surface plot showing a bowl-shaped paraboloid
B. A flat 2D plot with points scattered
C. A syntax error due to missing import
D. A 3D scatter plot of random points
Solution
Step 1: Analyze the function Z = X^2 + Y^2
This function creates a paraboloid shape, which looks like a bowl opening upwards.
Step 2: Understand the plot_surface call
plot_surface plots the Z values over the grid defined by X and Y, producing a smooth 3D surface.
Final Answer:
A 3D surface plot showing a bowl-shaped paraboloid -> Option A
Quick Check:
plot_surface with X^2+Y^2 = bowl shape [OK]
Hint: Z = X² + Y² forms a bowl shape in 3D surface plots [OK]
Common Mistakes:
Confusing surface plot with scatter plot
Expecting 2D plot instead of 3D
Missing meshgrid usage for X, Y
4. Identify the error in this code snippet for creating a 3D surface plot:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-3, 3, 50)
y = np.linspace(-3, 3, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot_surface(X, Y, Z)
plt.show()
medium
A. Z calculation is incorrect
B. Missing projection='3d' in add_subplot
C. meshgrid is not needed for surface plots
D. plt.show() is missing
Solution
Step 1: Check subplot creation for 3D plotting
To plot 3D surfaces, the subplot must have projection='3d'. The code misses this, so ax is 2D.
Step 2: Verify other parts
Z calculation and meshgrid usage are correct. plt.show() is present.
Final Answer:
Missing projection='3d' in add_subplot -> Option B
Quick Check:
3D plot needs projection='3d' [OK]
Hint: Always add projection='3d' for 3D subplots [OK]
Common Mistakes:
Forgetting projection='3d' in add_subplot
Misusing meshgrid or Z calculation
Omitting plt.show()
5. You want to visualize the function Z = sin(X) * cos(Y) over the range -π to π for both X and Y with a smooth surface and a color map that highlights height differences. Which of the following code snippets correctly achieves this?
hard
A. import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x = np.linspace(-np.pi, np.pi, 100)
y = np.linspace(-np.pi, np.pi, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) * np.cos(Y)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot_surface(X, Y, Z, cmap='coolwarm')
plt.show()
B. import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi, np.pi, 100)
y = np.linspace(-np.pi, np.pi, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) * np.cos(Y)
plt.plot_surface(X, Y, Z, cmap='plasma')
plt.show()
C. import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x = np.linspace(-np.pi, np.pi, 50)
y = np.linspace(-np.pi, np.pi, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) + np.cos(Y)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z)
plt.show()
D. import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x = np.linspace(-np.pi, np.pi, 100)
y = np.linspace(-np.pi, np.pi, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) * np.cos(Y)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
surf = ax.plot_surface(X, Y, Z, cmap='viridis')
fig.colorbar(surf)
plt.show()
Solution
Step 1: Check function and range correctness
The correct code uses Z = np.sin(X) * np.cos(Y) over -np.pi to np.pi with 100 points for smoothness.
Step 2: Verify 3D plotting and color map usage
The correct code uses projection='3d', plot_surface with cmap='viridis', and adds a colorbar to highlight height differences.
Step 3: Identify errors in other options
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi, np.pi, 100)
y = np.linspace(-np.pi, np.pi, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) * np.cos(Y)
plt.plot_surface(X, Y, Z, cmap='plasma')
plt.show() misses 3D axis creation; import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x = np.linspace(-np.pi, np.pi, 50)
y = np.linspace(-np.pi, np.pi, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) + np.cos(Y)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z)
plt.show() uses wrong function Z and fewer points; import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x = np.linspace(-np.pi, np.pi, 100)
y = np.linspace(-np.pi, np.pi, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) * np.cos(Y)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot_surface(X, Y, Z, cmap='coolwarm')
plt.show() misses projection='3d' in subplot.
Final Answer:
The code with projection='3d', cmap='viridis', colorbar, correct Z, and 100 points -> Option D