📖 Scenario: You work in a small bakery and want to show how many cakes of each type you sold last week. You want to create a simple horizontal bar chart to share with your team.
🎯 Goal: Create a horizontal bar chart using plt.barh to display the number of cakes sold for each cake type.
📋 What You'll Learn
Create a list called cake_types with the cake names exactly as: 'Chocolate', 'Vanilla', 'Strawberry', 'Lemon', 'Carrot'
Create a list called cakes_sold with the numbers exactly as: 50, 40, 30, 20, 10
Use plt.barh to create a horizontal bar chart with cake_types on the y-axis and cakes_sold on the x-axis
Add labels for the x-axis as 'Number of Cakes Sold' and y-axis as 'Cake Type'
Display the chart using plt.show()
💡 Why This Matters
🌍 Real World
Horizontal bar charts are useful to compare categories when category names are long or when you want to display data horizontally for better readability.
💼 Career
Data analysts and scientists often use horizontal bar charts to present categorical data clearly in reports and presentations.
Progress0 / 4 steps
1
Create the data lists
Create a list called cake_types with these exact values: 'Chocolate', 'Vanilla', 'Strawberry', 'Lemon', 'Carrot'. Also create a list called cakes_sold with these exact numbers: 50, 40, 30, 20, 10.
Matplotlib
Hint
Use square brackets [] to create lists. Separate items with commas.
2
Import matplotlib and set up the plot
Import matplotlib.pyplot as plt. This will allow you to create the chart.
Matplotlib
Hint
Use import matplotlib.pyplot as plt to import the plotting library.
3
Create the horizontal bar chart
Use plt.barh with cake_types as the y-values and cakes_sold as the x-values to create a horizontal bar chart. Then add x-axis label 'Number of Cakes Sold' and y-axis label 'Cake Type'.
Matplotlib
Hint
Use plt.barh(y, x) where y is the list of categories and x is the list of values.
4
Display the chart
Use plt.show() to display the horizontal bar chart.
Matplotlib
Hint
Call plt.show() to open the chart window.
Practice
(1/5)
1. What does the plt.barh() function in matplotlib do?
easy
A. Generates a scatter plot with dots
B. Creates a vertical bar chart with bars extending bottom to top
C. Creates a horizontal bar chart with bars extending left to right
D. Plots a line graph connecting data points
Solution
Step 1: Understand the function purpose
plt.barh() is designed to create horizontal bar charts, where bars extend from left to right.
Step 2: Compare with other plot types
Vertical bar charts use plt.bar(), line graphs use plt.plot(), and scatter plots use plt.scatter().
Final Answer:
Creates a horizontal bar chart with bars extending left to right -> Option C
Quick Check:
Horizontal bar chart = plt.barh() [OK]
Hint: Remember 'h' in barh means horizontal bars [OK]
Common Mistakes:
Confusing plt.barh() with plt.bar()
Thinking plt.barh() creates vertical bars
Mixing bar charts with line or scatter plots
2. Which of the following is the correct syntax to create a horizontal bar chart with categories ['A', 'B', 'C'] and values [5, 7, 3] using matplotlib?
easy
A. plt.barh(['A', 'B', 'C'], [5, 7, 3])
B. plt.bar([5, 7, 3], ['A', 'B', 'C'])
C. plt.barh([5, 7, 3], ['A', 'B', 'C'])
D. plt.plot(['A', 'B', 'C'], [5, 7, 3])
Solution
Step 1: Identify correct function and argument order
plt.barh() takes categories as the first argument (y-axis labels) and values as the second argument (bar lengths).
B. Arguments are reversed; categories should be first, values second
C. Missing plt.show() call
D. Color argument is required for plt.barh()
Solution
Step 1: Check argument order in plt.barh()
The first argument should be categories (labels), the second argument should be values (bar lengths).
Step 2: Identify the mistake in the code
The code passes values first and labels second, which reverses the expected order and causes incorrect plotting.
Final Answer:
Arguments are reversed; categories should be first, values second -> Option B
Quick Check:
plt.barh(categories, values) order matters [OK]
Hint: Categories first, values second in plt.barh() [OK]
Common Mistakes:
Swapping the order of categories and values
Forgetting plt.show() (though present here)
Thinking color argument is mandatory
5. You have a dataset with categories ['Jan', 'Feb', 'Mar'] and sales [200, 150, 300]. You want to create a horizontal bar chart with red bars, bar height of 0.5, and display the sales values on the bars. Which code snippet correctly achieves this?
hard
A. plt.barh(['Jan', 'Feb', 'Mar'], [200, 150, 300], color='red', height=0.5)
for i, v in enumerate([200, 150, 300]):
plt.text(v + 5, i, str(v))
plt.show()
B. plt.barh([200, 150, 300], ['Jan', 'Feb', 'Mar'], color='red', height=0.5)
plt.show()
C. plt.bar(['Jan', 'Feb', 'Mar'], [200, 150, 300], color='red', height=0.5)
plt.show()
D. plt.barh(['Jan', 'Feb', 'Mar'], [200, 150, 300], color='red', width=0.5)
plt.show()
Solution
Step 1: Use plt.barh() with correct arguments
Categories come first, then values. Set color='red' and height=0.5 to adjust bar thickness.
Step 2: Add sales values as text labels on bars
Use a for loop with plt.text() to place sales numbers slightly right of each bar end.
plt.barh(['Jan', 'Feb', 'Mar'], [200, 150, 300], color='red', height=0.5)
for i, v in enumerate([200, 150, 300]):
plt.text(v + 5, i, str(v))
plt.show() -> Option A