3D scatter plots in Matplotlib - Time & Space Complexity
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?"