Figure size and DPI in Matplotlib - Time & Space Complexity
We want to understand how changing figure size and DPI affects the time matplotlib takes to create a figure.
How does the work grow when we increase these settings?
Analyze the time complexity of the following code snippet.
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(width, height), dpi=dpi)
ax = fig.add_subplot(111)
ax.plot(data_x, data_y)
plt.show()
This code creates a figure with a given size and resolution, then plots data on it.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Drawing pixels on the figure canvas based on size and DPI.
- How many times: Number of pixels = width x height x dpi² (because DPI scales pixels per inch).
As figure size or DPI increases, the number of pixels to draw grows, making rendering take longer.
| Input Size (width x height x dpi²) | Approx. Operations |
|---|---|
| 10 x 10 x 50² | ~250,000 |
| 20 x 20 x 100² | ~4,000,000 |
| 30 x 30 x 200² | ~36,000,000 |
Pattern observation: Operations grow roughly with the square of DPI and linearly with figure size.
Time Complexity: O(width x height x dpi²)
This means the time to draw the figure grows with the area times the square of the DPI setting.
[X] Wrong: "Increasing DPI only slightly increases drawing time because it's just a setting."
[OK] Correct: Higher DPI means many more pixels to draw, so time grows much faster than expected.
Understanding how figure size and DPI affect rendering time helps you explain performance in data visualization tasks clearly and confidently.
"What if we keep figure size fixed but double the DPI? How would the time complexity change?"
Practice
figsize parameter control in a matplotlib figure?Solution
Step 1: Understand the role of
Thefigsizefigsizeparameter sets the width and height of the figure in inches.Step 2: Differentiate from DPI
DPI controls resolution, not size. Color and font size are unrelated tofigsize.Final Answer:
The physical size of the figure in inches -> Option AQuick Check:
Figure size = physical dimensions [OK]
- Confusing DPI with figure size
- Thinking figsize controls resolution
- Mixing up color or font size with figsize
Solution
Step 1: Recall correct parameter name
The parameter to set figure size isfigsize, which takes a tuple (width, height).Step 2: Check syntax correctness
Only plt.figure(figsize=(8, 4)) usesfigsizecorrectly. Others use invalid parameter names.Final Answer:
plt.figure(figsize=(8, 4)) -> Option CQuick Check:
Use figsize=(width, height) [OK]
- Using wrong parameter names like size or shape
- Passing DPI values instead of size
- Not using a tuple for figsize
fig = plt.figure(figsize=(6, 3), dpi=150)
Solution
Step 1: Identify the DPI parameter value
The code explicitly setsdpi=150when creating the figure.Step 2: Understand DPI meaning
DPI means dots per inch, so the figure resolution is 150 dots per inch.Final Answer:
150 -> Option BQuick Check:
DPI parameter sets resolution [OK]
- Confusing DPI with figure size
- Choosing width or height as DPI
- Assuming default DPI without checking code
plt.figure(figsize=8, dpi=100)
Solution
Step 1: Check the type of figsize argument
figsizeexpects a tuple (width, height), but 8 is a single integer.Step 2: Verify dpi argument
dpiaccepts an integer, so dpi=100 is correct.Final Answer:
figsize must be a tuple, not a single integer -> Option DQuick Check:
figsize = (width, height) tuple [OK]
- Passing single int instead of tuple to figsize
- Thinking dpi needs a tuple
- Assuming figsize can be a single number
Solution
Step 1: Understand figure creation and saving
Settingfigsizeinplt.figure()controls size on screen, but saving with specific DPI requires passingdpitosavefig().Step 2: Analyze each option
fig = plt.figure(figsize=(10, 5), dpi=100) plt.plot([1, 2, 3]) fig.savefig('plot.png') sets DPI in figure but saving uses default DPI, so output may differ. fig = plt.figure(figsize=(10, 5)) plt.plot([1, 2, 3]) fig.savefig('plot.png', dpi=300) sets size in figure and DPI in savefig, ensuring correct size and resolution. fig = plt.figure(dpi=300) plt.plot([1, 2, 3]) fig.savefig('plot.png', figsize=(10, 5)) wrongly passes figsize to savefig, which is invalid. fig = plt.figure(figsize=10, dpi=300) plt.plot([1, 2, 3]) fig.savefig('plot.png') passes single int to figsize, causing error.Final Answer:
fig = plt.figure(figsize=(10, 5)) plt.plot([1, 2, 3]) fig.savefig('plot.png', dpi=300) -> Option AQuick Check:
Set size in figure, DPI in savefig for correct output [OK]
- Setting dpi only in figure but not in savefig
- Passing figsize to savefig instead of figure
- Using single int instead of tuple for figsize
Ready to prove it?
Pass the test and this pattern moves unknown
