A stacked area chart helps you see how different parts add up to a whole over time or categories.
Stacked area chart in Matplotlib
import matplotlib.pyplot as plt # Data for x-axis (categories or time) x = [x1, x2, x3, ...] # Data for each group stacked on top of each other y1 = [y11, y12, y13, ...] y2 = [y21, y22, y23, ...] y3 = [y31, y32, y33, ...] plt.stackplot(x, y1, y2, y3, labels=['Group1', 'Group2', 'Group3']) plt.legend(loc='upper left') plt.show()
The x values must be in order (like time or categories).
Each y list must have the same length as x.
import matplotlib.pyplot as plt x = [1, 2, 3, 4] y1 = [1, 2, 3, 4] y2 = [2, 1, 2, 1] plt.stackplot(x, y1, y2, labels=['A', 'B']) plt.legend() plt.show()
import matplotlib.pyplot as plt x = [] y1 = [] y2 = [] plt.stackplot(x, y1, y2, labels=['Empty1', 'Empty2']) plt.legend() plt.show()
import matplotlib.pyplot as plt x = [1] y1 = [5] y2 = [3] plt.stackplot(x, y1, y2, labels=['Single1', 'Single2']) plt.legend() plt.show()
import matplotlib.pyplot as plt x = [1, 2, 3] y1 = [1, 2, 3] y2 = [3, 2, 1] plt.stackplot(x, y1, y2, labels=['StartHeavy', 'EndHeavy']) plt.legend() plt.show()
This program shows monthly sales for three products as a stacked area chart. It prints the sales data before plotting so you can see the numbers.
import matplotlib.pyplot as plt # Data: months and sales from 3 products months = ['Jan', 'Feb', 'Mar', 'Apr', 'May'] product_a_sales = [100, 120, 130, 90, 110] product_b_sales = [80, 90, 100, 95, 105] product_c_sales = [50, 60, 70, 65, 80] print('Sales before plotting:') print('Months:', months) print('Product A:', product_a_sales) print('Product B:', product_b_sales) print('Product C:', product_c_sales) # Convert months to numbers for x-axis x_values = list(range(len(months))) plt.stackplot(x_values, product_a_sales, product_b_sales, product_c_sales, labels=['Product A', 'Product B', 'Product C']) plt.xticks(x_values, months) # Show month names on x-axis plt.title('Monthly Sales by Product') plt.xlabel('Month') plt.ylabel('Sales') plt.legend(loc='upper left') plt.show()
Time complexity is O(n) where n is the number of data points.
Space complexity is O(n) for storing the data arrays.
Common mistake: x and y arrays must be the same length, or matplotlib will error.
Use stacked area charts to show part-to-whole relationships over time, not for comparing individual groups alone.
Stacked area charts show how parts add up to a whole over categories or time.
Make sure x and y data have matching lengths and x is ordered.
Use labels and legends to make the chart easy to understand.
Practice
matplotlib primarily show?Solution
Step 1: Understand the purpose of stacked area charts
Stacked area charts display multiple data series stacked on top of each other to show how each part contributes to the total over time or categories.Step 2: Compare options with this purpose
How different parts add up to a whole over categories or time correctly describes this purpose. Options A, B, and C describe other chart types or incorrect uses.Final Answer:
How different parts add up to a whole over categories or time -> Option AQuick Check:
Stacked area chart = parts adding to whole [OK]
- Confusing stacked area chart with line chart
- Thinking it shows only totals, not parts
- Mixing it up with scatter plots
matplotlib.pyplot?Solution
Step 1: Recall the correct function name
The correct function to create stacked area charts in matplotlib isstackplotfrommatplotlib.pyplot.Step 2: Check the syntax
plt.stackplot(x, y1, y2, labels=['A', 'B'])usesplt.stackplot(x, y1, y2, labels=['A', 'B']), which is correct. Other options use non-existent functions.Final Answer:
plt.stackplot(x, y1, y2, labels=['A', 'B']) -> Option AQuick Check:
Function name is stackplot [OK]
- Using plt.area which does not exist
- Trying plt.plot_area instead of stackplot
- Forgetting to pass x and multiple y arrays
import matplotlib.pyplot as plt x = [1, 2, 3] y1 = [1, 2, 3] y2 = [2, 1, 2] plt.stackplot(x, y1, y2, labels=['A', 'B']) plt.legend() plt.show()
Solution
Step 1: Analyze the data lengths and function
Both y1 and y2 have length 3 matching x. The function plt.stackplot creates a stacked area chart.Step 2: Understand the output
The code plots two stacked areas labeled 'A' and 'B' over x values 1 to 3, then shows a legend.Final Answer:
A stacked area chart with two layers labeled 'A' and 'B' over x=1 to 3 -> Option DQuick Check:
Stackplot with matching lengths = stacked area chart [OK]
- Thinking stackplot creates line or bar charts
- Assuming error due to lengths when they match
- Ignoring legend labels
import matplotlib.pyplot as plt x = [1, 2, 3] y1 = [1, 2] y2 = [2, 1, 2] plt.stackplot(x, y1, y2) plt.show()
Solution
Step 1: Check lengths of x and y arrays
x has length 3, y1 has length 2, y2 has length 3. Length mismatch causes error.Step 2: Understand stackplot requirements
All y arrays must have the same length as x. This mismatch causes a ValueError.Final Answer:
x and y1 have different lengths causing a ValueError -> Option CQuick Check:
Length mismatch in stackplot = error [OK]
- Assuming labels are required to avoid errors
- Thinking stackplot accepts different length arrays
- Forgetting to call plt.show() with parentheses
months = [1, 2, 3, 4, 5, 6] product_a = [5, 7, 8, 6, 7, 9] product_b = [3, 4, 2, 5, 6, 4] product_c = [2, 3, 4, 3, 2, 3]
How would you create a stacked area chart showing each product's contribution over time with a legend?
Solution
Step 1: Use plt.stackplot with x and multiple y arrays
Pass months as x and product sales as y arrays with labels for legend.Step 2: Add legend and show plot
Call plt.legend() to show labels and plt.show() to display the chart.Final Answer:
plt.stackplot(months, product_a, product_b, product_c, labels=['A', 'B', 'C']) plt.legend() plt.show() -> Option BQuick Check:
Stackplot with labels + legend = stacked area chart [OK]
- Adding y arrays instead of stacking
- Using bar chart with wrong bottom parameter
- Forgetting to pass x as first argument
Ready to prove it?
Pass the test and this pattern moves unknown
