A horizontal bar chart helps you compare values across categories using bars that go from left to right. It is easy to read when category names are long or when you want to show data horizontally.
Comparing sales numbers for different products with long names.
Showing survey results where categories have long labels.
Visualizing time spent on tasks where horizontal layout fits better.
Displaying rankings or scores in a clear horizontal format.
This program creates a horizontal bar chart showing quantities of different fruits. It adds a title and axis labels for clarity.
Matplotlib
import matplotlib.pyplot as plt
# Data
fruits = ['Apples', 'Bananas', 'Cherries', 'Dates']
quantities = [25, 40, 15, 10]
# Create horizontal bar chart
plt.barh(fruits, quantities, color='green')
# Add title and labels
plt.title('Fruit Quantities')
plt.xlabel('Quantity')
plt.ylabel('Fruit')
# Show the plot
plt.show()
OutputSuccess
Important Notes
You can customize colors, bar height, and labels easily with parameters.
Horizontal bars are good when category names are long or many.
Use plt.bar for vertical bars and plt.barh for horizontal bars.
Summary
Horizontal bar charts show data with bars going left to right.
Use plt.barh with categories on y-axis and values as bar lengths.
Customize appearance with colors, bar height, and labels.
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