Bird
Raised Fist0
Matplotlibdata~20 mins

Horizontal bar chart with plt.barh in Matplotlib - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Horizontal Bar Chart Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of plt.barh with given data
What will be the output of this code snippet that creates a horizontal bar chart?
Matplotlib
import matplotlib.pyplot as plt

categories = ['A', 'B', 'C']
values = [3, 7, 5]
plt.barh(categories, values)
plt.show()
AA vertical bar chart with bars for A=3, B=7, C=5
BSyntaxError due to wrong function usage
CA horizontal bar chart with bars for A=7, B=3, C=5
DA horizontal bar chart with bars for A=3, B=7, C=5
Attempts:
2 left
💡 Hint
plt.barh creates horizontal bars where the first argument is the y-axis labels and the second is the bar lengths.
❓ data_output
intermediate
1:30remaining
Number of bars in plt.barh chart
How many bars will be displayed by this code?
Matplotlib
import matplotlib.pyplot as plt

labels = ['X', 'Y', 'Z', 'W']
values = [10, 20, 15, 5]
plt.barh(labels, values)
plt.show()
A3
B4
C5
D0
Attempts:
2 left
💡 Hint
Count the number of labels given to plt.barh.
🔧 Debug
advanced
2:00remaining
Identify the error in horizontal bar chart code
What error will this code produce?
Matplotlib
import matplotlib.pyplot as plt

labels = ['Jan', 'Feb', 'Mar']
values = [5, 8]
plt.barh(labels, values)
plt.show()
AValueError: y and width must be the same size
BTypeError: unsupported operand type(s)
CNo error, chart displays correctly
DSyntaxError due to missing colon
Attempts:
2 left
💡 Hint
Check if the lengths of labels and values match.
❓ visualization
advanced
1:30remaining
Effect of changing bar height in plt.barh
What visual effect does changing the 'height' parameter in plt.barh have?
Matplotlib
import matplotlib.pyplot as plt

labels = ['P', 'Q', 'R']
values = [4, 6, 8]
plt.barh(labels, values, height=0.1)
plt.show()
ABars change color
BBars become wider horizontally
CBars become thinner vertically
DBars disappear
Attempts:
2 left
💡 Hint
Height controls the thickness of horizontal bars.
🚀 Application
expert
3:00remaining
Create a horizontal bar chart with sorted values
Which code snippet correctly creates a horizontal bar chart with categories sorted by their values in ascending order?
A
import matplotlib.pyplot as plt
categories = ['A', 'B', 'C']
values = [5, 2, 7]
sorted_pairs = sorted(zip(values, categories))
sorted_values, sorted_categories = zip(*sorted_pairs)
plt.barh(sorted_categories, sorted_values)
plt.show()
B
import matplotlib.pyplot as plt
categories = ['A', 'B', 'C']
values = [5, 2, 7]
plt.barh(categories.sort(), values.sort())
plt.show()
C
import matplotlib.pyplot as plt
categories = ['A', 'B', 'C']
values = [5, 2, 7]
plt.barh(sorted(categories), sorted(values))
plt.show()
D
import matplotlib.pyplot as plt
categories = ['A', 'B', 'C']
values = [5, 2, 7]
plt.barh(categories, values)
plt.show()
Attempts:
2 left
💡 Hint
You need to sort values and categories together to keep their pairs aligned.

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

  1. Step 1: Understand the function purpose

    plt.barh() is designed to create horizontal bar charts, where bars extend from left to right.
  2. Step 2: Compare with other plot types

    Vertical bar charts use plt.bar(), line graphs use plt.plot(), and scatter plots use plt.scatter().
  3. Final Answer:

    Creates a horizontal bar chart with bars extending left to right -> Option C
  4. 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

  1. 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).
  2. Step 2: Check each option

    plt.barh(['A', 'B', 'C'], [5, 7, 3]) correctly uses plt.barh(['A', 'B', 'C'], [5, 7, 3]). plt.bar([5, 7, 3], ['A', 'B', 'C']) uses vertical bars and reverses arguments. plt.barh([5, 7, 3], ['A', 'B', 'C']) reverses arguments for horizontal bars. plt.plot(['A', 'B', 'C'], [5, 7, 3]) plots a line graph.
  3. Final Answer:

    plt.barh(['A', 'B', 'C'], [5, 7, 3]) -> Option A
  4. Quick Check:

    Categories first, values second in plt.barh() [OK]
Hint: In plt.barh(), categories come first, then values [OK]
Common Mistakes:
  • Swapping categories and values in arguments
  • Using plt.bar() instead of plt.barh() for horizontal bars
  • Using plt.plot() instead of bar chart functions
3. What will be the output of the following code?
import matplotlib.pyplot as plt
categories = ['X', 'Y', 'Z']
values = [10, 5, 8]
plt.barh(categories, values, color='green')
plt.show()
medium
A. A vertical bar chart with green bars for categories X, Y, Z
B. A line plot connecting points (X,10), (Y,5), (Z,8)
C. An error because color must be a list
D. A horizontal bar chart with green bars for categories X, Y, Z

Solution

  1. Step 1: Analyze the function and parameters

    The code uses plt.barh() with categories on y-axis and values as bar lengths, colored green.
  2. Step 2: Understand the plot output

    This produces a horizontal bar chart with green bars labeled X, Y, Z with lengths 10, 5, and 8 respectively.
  3. Final Answer:

    A horizontal bar chart with green bars for categories X, Y, Z -> Option D
  4. Quick Check:

    plt.barh() + color='green' = horizontal green bars [OK]
Hint: plt.barh() always creates horizontal bars, color accepts string [OK]
Common Mistakes:
  • Thinking plt.barh() creates vertical bars
  • Assuming color must be a list
  • Confusing bar chart with line plot
4. Identify the error in this code snippet that tries to create a horizontal bar chart:
import matplotlib.pyplot as plt
labels = ['A', 'B', 'C']
values = [4, 6, 8]
plt.barh(values, labels)
plt.show()
medium
A. plt.barh() does not accept lists as arguments
B. Arguments are reversed; categories should be first, values second
C. Missing plt.show() call
D. Color argument is required for plt.barh()

Solution

  1. Step 1: Check argument order in plt.barh()

    The first argument should be categories (labels), the second argument should be values (bar lengths).
  2. 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.
  3. Final Answer:

    Arguments are reversed; categories should be first, values second -> Option B
  4. 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

  1. Step 1: Use plt.barh() with correct arguments

    Categories come first, then values. Set color='red' and height=0.5 to adjust bar thickness.
  2. 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.
  3. Step 3: Verify other options

    plt.barh([200, 150, 300], ['Jan', 'Feb', 'Mar'], color='red', height=0.5) plt.show() reverses arguments, plt.bar(['Jan', 'Feb', 'Mar'], [200, 150, 300], color='red', height=0.5) plt.show() uses vertical bars, plt.barh(['Jan', 'Feb', 'Mar'], [200, 150, 300], color='red', width=0.5) plt.show() uses 'width' instead of 'height' which is invalid for barh.
  4. Final Answer:

    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
  5. Quick Check:

    plt.barh(categories, values, height=0.5) + plt.text() labels [OK]
Hint: Use height for bar thickness in plt.barh(), add labels with plt.text() [OK]
Common Mistakes:
  • Swapping categories and values
  • Using width instead of height for bar thickness
  • Not adding text labels or placing them incorrectly
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard