3D scatter plots in Matplotlib - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
When creating 3D scatter plots, we want to know how the time to draw points changes as we add more data.
How does the number of points affect the work matplotlib does to show the plot?
Analyze the time complexity of the following code snippet.
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = np.random.rand(1000)
y = np.random.rand(1000)
z = np.random.rand(1000)
ax.scatter(x, y, z)
plt.show()
This code creates a 3D scatter plot with 1000 points randomly placed in space.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Plotting each point in the 3D space.
- How many times: Once for each point, here 1000 times.
As the number of points increases, the time to plot grows roughly in direct proportion.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 operations |
| 100 | 100 operations |
| 1000 | 1000 operations |
Pattern observation: Doubling the points roughly doubles the work needed to plot them.
Time Complexity: O(n)
This means the time to create the 3D scatter plot grows linearly with the number of points.
[X] Wrong: "Adding more points won't affect the plotting time much because the plot size stays the same."
[OK] Correct: Each point requires drawing work, so more points mean more work and longer plotting time.
Understanding how plotting time grows helps you explain performance when working with large datasets in data visualization tasks.
"What if we changed the scatter plot to plot only every 10th point? How would the time complexity change?"
Practice
Solution
Step 1: Understand the role of 3D scatter plots
3D scatter plots show points in three dimensions, helping to see relationships among three variables.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.Final Answer:
To visualize data points in three dimensions and observe patterns -> Option BQuick Check:
3D scatter plots = visualize points in 3D [OK]
- Confusing 3D scatter with bar or line plots
- Thinking 3D scatter is for text annotations
- Assuming 3D scatter plots show continuous surfaces
Solution
Step 1: Recall how to create 3D axes
In matplotlib,plt.axes(projection='3d')creates a 3D axes object.Step 2: Check other options
plt.subplotandplt.subplotsdo not acceptprojectiondirectly;plt.figurecreates a figure, not axes.Final Answer:
ax = plt.axes(projection='3d') -> Option AQuick Check:
Use plt.axes with projection='3d' for 3D axes [OK]
- Using plt.subplot instead of plt.axes for 3D
- Passing projection to plt.figure instead of axes
- Confusing plt.subplots with plt.subplot
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()
Solution
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.Step 2: Confirm the plot output
The points will appear in 3D space as red circles; no errors occur.Final Answer:
A 3D scatter plot with two red circular points at coordinates (1,3,5) and (2,4,6) -> Option AQuick Check:
3D scatter with given points = red circles at (1,3,5) and (2,4,6) [OK]
- Thinking it creates 2D plot instead of 3D
- Assuming syntax error without checking imports
- Expecting no points plotted
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()
Solution
Step 1: Check subplot creation for 3D
The code usesfig.add_subplot(111)withoutprojection='3d', so it creates a 2D axes.Step 2: Understand scatter with 3D data
On 2D axes, passing three lists toscatterwill treat the third list as point sizes instead of z-coordinates, producing a 2D scatter plot rather than 3D.Final Answer:
Missing projection='3d' in add_subplot, so 3D plotting fails -> Option DQuick Check:
3D scatter needs projection='3d' [OK]
- Forgetting projection='3d' in add_subplot
- Thinking scatter can't take three arguments
- Assuming list length mismatch causes error
Solution
Step 1: Understand color mapping in scatter
To color points by a variable, pass that variable toc=and specifycmapfor colormap.Step 2: Check correct parameter names
cis correct for colors;colororcolorswith string 'z' orcolormapare incorrect.Final Answer:
ax.scatter(x, y, z, c=z, cmap='viridis') -> Option CQuick Check:
Use c=variable and cmap='name' for color mapping [OK]
- Using color='z' instead of c=z
- Using colormap instead of cmap
- Passing colors=z which is invalid
