Saving figures in Data Analysis Python - Time & Space Complexity
When saving figures in data analysis, we want to know how the time needed changes as the figure size or data grows.
We ask: How does saving time grow when the figure gets more complex or larger?
Analyze the time complexity of the following code snippet.
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 1000)
y = np.sin(x)
plt.plot(x, y)
plt.savefig('figure.png')
plt.close()
This code creates a line plot with 1000 points and saves it as an image file.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Plotting the 1000 points and writing the image file.
- How many times: The plotting processes each of the 1000 points once; saving writes the whole image once.
As the number of points increases, the time to plot and save grows roughly in proportion.
| Input Size (n points) | Approx. Operations |
|---|---|
| 10 | Low, quick plot and save |
| 100 | About 10 times more work than 10 points |
| 1000 | About 100 times more work than 10 points |
Pattern observation: The time grows roughly linearly with the number of points plotted and saved.
Time Complexity: O(n)
This means the time to save the figure grows in a straight line as the number of points increases.
[X] Wrong: "Saving a figure always takes the same time no matter how big it is."
[OK] Correct: Larger figures with more data points take longer to process and save because more information must be handled.
Understanding how saving figures scales helps you explain performance in data projects and shows you can think about efficiency in real tasks.
"What if we save the figure in a different format like SVG instead of PNG? How would the time complexity change?"
Practice
Solution
Step 1: Identify the function for saving plots
The functionplt.savefig()is designed to save the current figure to a file.Step 2: Differentiate from other functions
plt.show()displays the plot,plt.plot()creates the plot, andplt.save()does not exist.Final Answer:
plt.savefig() -> Option BQuick Check:
Save plot = plt.savefig() [OK]
- Confusing plt.show() with saving
- Using plt.save() which is not a valid function
- Thinking plt.plot() saves the figure
Solution
Step 1: Check the function name and argument type
The correct function isplt.savefig()and it requires the filename as a string.Step 2: Verify the filename format
The filename must be a string with the extension, e.g., 'plot.png'.plt.savefig('plot.png')matches this exactly.Final Answer:
plt.savefig('plot.png') -> Option AQuick Check:
Save with filename string = plt.savefig('plot.png') [OK]
- Omitting quotes around filename
- Using plt.save() instead of plt.savefig()
- Missing file extension in filename
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [4, 5, 6])
plt.savefig('myplot.pdf', dpi=300, bbox_inches='tight')Solution
Step 1: Understand plt.savefig parameters
The code saves the plot as 'myplot.pdf' with dpi=300 for high resolution and bbox_inches='tight' to reduce whitespace.Step 2: Confirm file format and parameters compatibility
PDF supports dpi and bbox_inches parameters, so no error occurs and the file is saved correctly.Final Answer:
Saves a PDF file named 'myplot.pdf' with high resolution and tight layout -> Option DQuick Check:
Save PDF with dpi and tight bbox = correct [OK]
- Thinking dpi is ignored for PDF
- Confusing save with display (plt.show())
- Assuming dpi causes error for PDF
import matplotlib.pyplot as plt plt.plot([1, 2, 3], [4, 5, 6]) plt.savefig(myplot.png)
Solution
Step 1: Check the argument to plt.savefig()
The filename must be a string, so it needs quotes around 'myplot.png'.Step 2: Verify other parts of the code
Calling plt.plot() before plt.savefig() is correct, dpi is optional, and '.png' is a valid extension.Final Answer:
Missing quotes around filename 'myplot.png' -> Option CQuick Check:
Filename must be string with quotes [OK]
- Forgetting quotes around filename
- Thinking dpi is mandatory
- Misordering plot and savefig calls
Solution
Step 1: Understand dpi and bbox_inches parameters
High dpi (e.g., 600) means better image quality. bbox_inches='tight' reduces extra white space.Step 2: Evaluate each option
plt.savefig('figure.png', dpi=600, bbox_inches='tight')uses dpi=600 and bbox_inches='tight' correctly.plt.savefig('figure.png', dpi=72, bbox_inches='standard')uses low dpi and invalid bbox_inches.plt.savefig('figure.png', dpi=600, bbox_inches='loose')uses bbox_inches='loose' which adds space.plt.savefig('figure.png', dpi='high', bbox_inches='tight')uses invalid dpi value 'high'.Final Answer:
plt.savefig('figure.png', dpi=600, bbox_inches='tight') -> Option AQuick Check:
High dpi + tight bbox = best quality [OK]
- Using invalid dpi values like strings
- Choosing bbox_inches='loose' which adds whitespace
- Ignoring dpi leading to low-quality images
Ready to prove it?
Pass the test and this pattern moves unknown
