📖 Scenario: You are helping a small shop owner visualize the sales of three products over a week. They want to see the sales side by side for easy comparison.
🎯 Goal: Create a bar chart using matplotlib that shows sales of three products with custom bar widths and positions so the bars do not overlap.
📋 What You'll Learn
Create a list called days with the days: 'Mon', 'Tue', 'Wed', 'Thu', 'Fri'
Create three lists called sales_A, sales_B, and sales_C with exact sales numbers
Create a variable called bar_width and set it to 0.2
Use matplotlib.pyplot.bar to plot three sets of bars with correct positions using bar_width
Add a legend with labels 'Product A', 'Product B', and 'Product C'
Print the plot using plt.show()
💡 Why This Matters
🌍 Real World
Bar charts are used in business to compare sales, expenses, or other data across categories or time periods.
💼 Career
Data analysts and scientists often create bar charts to visualize and communicate data insights clearly.
Progress0 / 4 steps
1
Create sales data lists
Create a list called days with these exact values: 'Mon', 'Tue', 'Wed', 'Thu', 'Fri'. Then create three lists called sales_A, sales_B, and sales_C with these exact values respectively: [5, 7, 3, 8, 6], [6, 9, 4, 7, 5], and [4, 6, 5, 6, 7].
Matplotlib
Hint
Use square brackets to create lists. Separate items with commas.
2
Set bar width for the bars
Create a variable called bar_width and set it to 0.2. This will control the width of each bar in the chart.
Matplotlib
Hint
Just assign 0.2 to the variable bar_width.
3
Plot the bars with correct positions
Import matplotlib.pyplot as plt. Create a list called positions using range(len(days)). Use plt.bar to plot three sets of bars for sales_A, sales_B, and sales_C. Position the bars so they do not overlap by adding bar_width offsets: positions for sales_A, [p + bar_width for p in positions] for sales_B, and [p + 2 * bar_width for p in positions] for sales_C. Use bar_width as the width for all bars. Add labels 'Product A', 'Product B', and 'Product C' respectively.
Matplotlib
Hint
Use range(len(days)) to get positions. Add bar_width to shift bars right.
4
Add legend, labels, and show the plot
Set the x-axis ticks to the middle of the grouped bars using plt.xticks with positions shifted by bar_width. Use days as labels. Add a legend using plt.legend(). Finally, display the plot using plt.show().
Matplotlib
Hint
Use plt.xticks() to set the ticks in the middle of grouped bars. Use plt.legend() to show labels. Use plt.show() to display the chart.
Practice
(1/5)
1. What does the width parameter control in a matplotlib bar chart?
easy
A. The thickness of each bar
B. The color of each bar
C. The height of each bar
D. The label of each bar
Solution
Step 1: Understand the width parameter
The width parameter in matplotlib's bar chart sets how wide or thick each bar appears on the x-axis.
Step 2: Differentiate from other properties
Color, height, and label are controlled by other parameters, not width.
Final Answer:
The thickness of each bar -> Option A
Quick Check:
Bar width = thickness [OK]
Hint: Width changes bar thickness, not height or color [OK]
Common Mistakes:
Confusing width with height
Thinking width changes bar color
Assuming width changes bar labels
2. Which of the following is the correct way to set the bar width to 0.5 in matplotlib?
easy
A. plt.bar(x, height, thickness=0.5)
B. plt.bar(x, height, width=0.5)
C. plt.bar(x, height, size=0.5)
D. plt.bar(x, height, length=0.5)
Solution
Step 1: Recall matplotlib bar syntax
The plt.bar() function uses the width parameter to set bar thickness.
Step 2: Identify correct parameter name
Only width is valid; size, thickness, and length are invalid for bar width.
Final Answer:
plt.bar(x, height, width=0.5) -> Option B
Quick Check:
Use width to set bar thickness [OK]
Hint: Use 'width' parameter to set bar thickness [OK]
Common Mistakes:
Using 'size' instead of 'width'
Using 'thickness' or 'length' which are invalid
Omitting the width parameter
3. What will be the x positions of bars when running this code?
import matplotlib.pyplot as plt
x = [1, 2, 3]
heights = [4, 5, 6]
plt.bar([pos + 0.2 for pos in x], heights, width=0.4)
plt.show()
medium
A. [1, 2, 3]
B. [0.4, 1.4, 2.4]
C. [1.2, 2.2, 3.2]
D. [0.8, 1.8, 2.8]
Solution
Step 1: Analyze the x positions
The code shifts each x position by adding 0.2, so positions become [1+0.2, 2+0.2, 3+0.2] = [1.2, 2.2, 3.2].
Step 2: Understand bar width effect
The width=0.4 sets bar thickness but does not change the center positions.
Final Answer:
[1.2, 2.2, 3.2] -> Option C
Quick Check:
Positions shifted by 0.2 = [1.2, 2.2, 3.2] [OK]
Hint: Add offset to x list to shift bar positions [OK]
Common Mistakes:
Ignoring the +0.2 shift
Confusing width with position shift
Assuming bars stay at original x
4. Identify the error in this code that tries to plot two sets of bars side by side:
Both bar sets use the same x positions, so bars overlap on the plot.
Step 2: Confirm width and data lengths
Width=0.5 is valid, heights lists have same length, and plt.show() is present.
Final Answer:
Bars overlap because positions are the same -> Option A
Quick Check:
Same x positions cause overlap [OK]
Hint: Shift x positions to avoid bar overlap [OK]
Common Mistakes:
Not shifting x for multiple bar sets
Thinking width causes overlap
Ignoring plt.show() call
5. You want to plot three groups of bars side by side for categories 1, 2, 3. Each group has 3 bars. Which code correctly positions bars to avoid overlap?
import matplotlib.pyplot as plt
x = [1, 2, 3]
heights_a = [3, 5, 7]
heights_b = [4, 6, 8]
heights_c = [2, 4, 6]
width = 0.2
plt.bar([p - width for p in x], heights_a, width=width)
plt.bar(x, heights_b, width=width)
plt.bar([p + width for p in x], heights_c, width=width)
plt.show()
hard
A. Incorrect: width parameter missing
B. Incorrect: bars overlap because width is too large
C. Incorrect: bars all plotted at same x positions
D. Correct: bars shifted left, center, right by width
Solution
Step 1: Analyze bar positions
Bars for group A are shifted left by width, group B at center, group C shifted right by width, so bars are side by side without overlap.
Step 2: Check width and spacing
Width=0.2 is small enough to fit three bars side by side within each category.
Final Answer:
Correct: bars shifted left, center, right by width -> Option D
Quick Check:
Shift bars by ±width to avoid overlap [OK]
Hint: Shift bars by ±width to place side by side [OK]
Common Mistakes:
Not shifting bars, causing overlap
Using width too large for spacing
Forgetting to set width parameter
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.