Before-after comparison plots in Matplotlib - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
We want to understand how the time to create before-after comparison plots changes as the amount of data grows.
How does the plotting time increase when we add more points to compare?
Analyze the time complexity of the following code snippet.
import matplotlib.pyplot as plt
before = [1, 2, 3, 4, 5]
after = [2, 3, 5, 7, 11]
plt.figure(figsize=(6,4))
plt.plot(before, label='Before')
plt.plot(after, label='After')
plt.legend()
plt.show()
This code plots two lines showing values before and after some change for 5 points.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Plotting each data point for both before and after lists.
- How many times: Once for each point in the data arrays (n times per line).
As the number of points increases, the plotting work grows roughly in direct proportion.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | Plot about 20 points (10 before + 10 after) |
| 100 | Plot about 200 points |
| 1000 | Plot about 2000 points |
Pattern observation: Doubling the number of points doubles the plotting work.
Time Complexity: O(n)
This means the time to create the plot grows linearly with the number of data points.
[X] Wrong: "Plotting two lines takes twice as long as plotting one line, so time complexity is O(2n)."
[OK] Correct: Constants like 2 are ignored in time complexity, so O(2n) is simplified to O(n).
Understanding how plotting time grows helps you explain performance when working with bigger datasets in real projects.
"What if we added a loop to create multiple before-after plots for different groups? How would the time complexity change?"
Practice
Solution
Step 1: Understand the concept of before-after plots
Before-after plots are used to compare data points from two different times or conditions to see changes.Step 2: Identify the correct purpose
Among the options, only To visually compare data from two different time points describes comparing data from two time points, which matches the before-after plot purpose.Final Answer:
To visually compare data from two different time points -> Option AQuick Check:
Before-after plots = compare two time points [OK]
- Confusing before-after plots with distribution plots
- Thinking they show correlation instead of change
- Assuming they create 3D plots
Solution
Step 1: Understand bar plot positioning
To show before and after side-by-side, bars must not overlap. Using different x positions for before and after data avoids overlap.Step 2: Analyze options for correct bar positions
plt.bar([0,1], before_data); plt.bar([1,2], after_data) places before_data at positions 0 and 1, and after_data at 1 and 2, so bars for the same category are side-by-side without overlap.Final Answer:
plt.bar([0,1], before_data); plt.bar([1,2], after_data) -> Option CQuick Check:
Side-by-side bars need different x positions [OK]
- Plotting bars at same x positions causing overlap
- Using plt.plot instead of plt.bar for categorical data
- Passing data incorrectly as list of lists
import matplotlib.pyplot as plt before = [5, 7] after = [8, 6] plt.plot([1, 2], before, label='Before') plt.plot([1, 2], after, label='After') plt.legend() plt.show()
Solution
Step 1: Understand plt.plot with x and y lists
plt.plot([1, 2], before) plots points (1,5) and (2,7) connected by a line. Similarly for after data.Step 2: Identify plot type and legend
Two line plots will appear overlapping on the same axes with labels 'Before' and 'After'. No error occurs.Final Answer:
Two overlapping line plots showing before and after data -> Option DQuick Check:
plt.plot with x,y lists = line plot [OK]
- Thinking plt.plot creates bar charts
- Expecting scatter plot without plt.scatter
- Assuming plt.plot with two lists causes error
import matplotlib.pyplot as plt before = [3, 4] after = [5, 6] plt.bar([0, 1], before) plt.bar([0, 1], after) plt.show()
Solution
Step 1: Check bar positions
Both before and after bars are plotted at positions 0 and 1, causing them to overlap and hide one another.Step 2: Identify correct fix
To avoid overlap, after bars should be shifted to different x positions, e.g., [0.3, 1.3].Final Answer:
Bars for before and after overlap at same positions -> Option BQuick Check:
Same x positions cause bar overlap [OK]
- Thinking plt.bar needs 3 arguments
- Ignoring bar overlap issue
- Assuming plt.show() is missing
Solution
Step 1: Plan bar positions and labels
To compare before and after clearly, plot bars side-by-side with shifted x positions, e.g., before at [0,1,2], after at [0.3,1.3,2.3]. Add x-axis labels for products.Step 2: Add legend and labels for clarity
Use plt.legend() to distinguish before and after bars, and plt.xlabel/plt.ylabel for axis labels.Final Answer:
Use plt.bar with shifted x positions for before and after, add labels and legend -> Option AQuick Check:
Shift bars + labels + legend = clear before-after plot [OK]
- Plotting bars at same positions causing confusion
- Skipping labels and legend
- Using scatter plot instead of bar plot
