Bird
Raised Fist0
Matplotlibdata~20 mins

Horizontal grouped bars in Matplotlib - Practice Problems & Coding Challenges

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

labels = ['A', 'B', 'C']
values1 = [5, 7, 3]
values2 = [6, 2, 4]

x = np.arange(len(labels))
width = 0.35

fig, ax = plt.subplots()
ax.barh(x - width/2, values1, width, label='Group 1')
ax.barh(x + width/2, values2, width, label='Group 2')
ax.set_yticks(x)
ax.set_yticklabels(labels)
ax.legend()
plt.show()
AA vertical grouped bar chart with bars for each label A, B, C stacked on top of each other
BA horizontal grouped bar chart with two bars side by side for each label A, B, C, showing values from values1 and values2
CA horizontal bar chart with bars for values1 only, no grouping
DA scatter plot with points at coordinates from values1 and values2
Attempts:
2 left
💡 Hint
Look at the use of barh and the x positions shifted by width/2
❓ data_output
intermediate
1:30remaining
Number of bars in horizontal grouped bar chart
Given this code for a horizontal grouped bar chart, how many bars will be drawn in total?
Matplotlib
import matplotlib.pyplot as plt
import numpy as np

labels = ['X', 'Y', 'Z', 'W']
values1 = [3, 5, 2, 4]
values2 = [1, 6, 3, 7]
values3 = [2, 4, 5, 1]

x = np.arange(len(labels))
width = 0.2

fig, ax = plt.subplots()
ax.barh(x - width, values1, width, label='Set 1')
ax.barh(x, values2, width, label='Set 2')
ax.barh(x + width, values3, width, label='Set 3')
ax.set_yticks(x)
ax.set_yticklabels(labels)
ax.legend()
plt.show()
A4
B7
C3
D12
Attempts:
2 left
💡 Hint
Count bars per group times number of groups
🔧 Debug
advanced
2:00remaining
Identify the error in horizontal grouped bar chart code
What error will this code produce when trying to plot a horizontal grouped bar chart?
Matplotlib
import matplotlib.pyplot as plt
import numpy as np

labels = ['P', 'Q', 'R']
values1 = [4, 6, 5]
values2 = [7, 3, 8]

x = np.arange(len(labels))
width = 0.3

fig, ax = plt.subplots()
ax.barh(x, values1, width, label='First')
ax.barh(x + width, values2, width, label='Second')
ax.set_yticks(x)
ax.set_yticklabels(labels)
ax.legend()
plt.show()
ATypeError: unsupported operand type(s) for +: 'numpy.ndarray' and 'float'
BValueError: x and height must have the same size
CNo error, the chart displays correctly
DTypeError: unsupported operand type(s) for +: 'range' and 'float'
Attempts:
2 left
💡 Hint
Check the type of x and the operation x + width
❓ visualization
advanced
1:30remaining
Interpret the horizontal grouped bar chart visualization
You see a horizontal grouped bar chart with labels ['Jan', 'Feb', 'Mar'] on the y-axis. Each label has two bars side by side. The first bar is always longer than the second. What can you conclude about the data?
AThe first group has higher values than the second group for all months
BThe second group has higher values than the first group for all months
CBoth groups have equal values for all months
DThe chart shows stacked bars, not grouped bars
Attempts:
2 left
💡 Hint
Look at the length of bars for each group per label
🚀 Application
expert
2:30remaining
Calculate bar positions for horizontal grouped bar chart
You want to plot a horizontal grouped bar chart with 4 groups and 5 bars in each group. The bar height should be 0.15. What is the correct numpy expression to calculate the y positions for the bars in the third group (index 2)?
Anp.arange(5) + (2 - 1.5) * 0.15
Bnp.arange(5) + (2 - 2) * 0.15
Cnp.arange(5) + (2 - 1.5) * 0.15 - 0.075
Dnp.arange(5) + 2 * 0.15
Attempts:
2 left
💡 Hint
The offset for group j in n=4 groups is (j - (n-1)/2 ) * height = (j - 1.5) * 0.15. The y in barh is the center position.

Practice

(1/5)
1.

What is the main purpose of using horizontal grouped bars in a chart?

easy
A. To compare multiple categories side by side horizontally
B. To show data as a pie chart
C. To display data only vertically
D. To create a line graph

Solution

  1. Step 1: Understand the chart type

    Horizontal grouped bars place bars side by side horizontally to compare groups.
  2. Step 2: Identify the purpose

    This layout helps compare multiple categories clearly across groups.
  3. Final Answer:

    To compare multiple categories side by side horizontally -> Option A
  4. Quick Check:

    Horizontal grouped bars = compare categories horizontally [OK]
Hint: Grouped bars show side-by-side comparisons horizontally [OK]
Common Mistakes:
  • Confusing horizontal bars with pie charts
  • Thinking grouped bars are vertical only
  • Mixing line graphs with bar charts
2.

Which of the following is the correct way to create horizontal grouped bars in matplotlib?

import matplotlib.pyplot as plt
import numpy as np

labels = ['A', 'B', 'C']
values1 = [5, 7, 3]
values2 = [6, 2, 4]

x = np.arange(len(labels))
width = 0.35

plt.barh(x, values1, height=width)
plt.barh(x + width, values2, height=width)
plt.show()
easy
A. Use plt.scatter for grouped bars
B. Use plt.bar with shifted positions for each group
C. Use plt.plot with x and y values
D. Use plt.barh with shifted positions for each group

Solution

  1. Step 1: Check the function used

    The code uses plt.barh which creates horizontal bars.
  2. Step 2: Verify grouping method

    Positions are shifted by adding width to x to group bars side by side horizontally.
  3. Final Answer:

    Use plt.barh with shifted positions for each group -> Option D
  4. Quick Check:

    plt.barh + shifted positions = grouped horizontal bars [OK]
Hint: Use plt.barh and shift positions to group bars horizontally [OK]
Common Mistakes:
  • Using plt.bar instead of plt.barh for horizontal bars
  • Not shifting positions causing overlapping bars
  • Using plt.plot or plt.scatter which are not bar charts
3.

What will be the output of the following code?

import matplotlib.pyplot as plt
import numpy as np

labels = ['X', 'Y']
values1 = [3, 8]
values2 = [5, 2]

x = np.arange(len(labels))
width = 0.4

plt.barh(x, values1, height=width, color='blue')
plt.barh(x + width, values2, height=width, color='red')
plt.yticks(x + width / 2, labels)
plt.show()
medium
A. A line plot with two lines
B. Two vertical bar groups overlapping
C. Two sets of horizontal bars side by side for each label
D. A scatter plot with points at x positions

Solution

  1. Step 1: Analyze barh usage

    plt.barh creates horizontal bars at positions x and x + width, shifted to group bars.
  2. Step 2: Check y-axis labels

    yticks are set at middle positions between bars for labels 'X' and 'Y'.
  3. Final Answer:

    Two sets of horizontal bars side by side for each label -> Option C
  4. Quick Check:

    barh + shifted positions + ytick labels = grouped horizontal bars [OK]
Hint: Shift y positions and set yticks for grouped horizontal bars [OK]
Common Mistakes:
  • Confusing horizontal bars with vertical bars
  • Not setting yticks causing label misalignment
  • Expecting line or scatter plot output
4.

Identify the error in this code for horizontal grouped bars:

import matplotlib.pyplot as plt
import numpy as np

labels = ['P', 'Q', 'R']
values1 = [4, 6, 5]
values2 = [7, 3, 8]

x = np.arange(len(labels))
width = 0.3

plt.barh(x, values1, height=width)
plt.barh(x, values2, height=width)
plt.yticks(x + width / 2, labels)
plt.show()
medium
A. Bars overlap because positions are not shifted for grouping
B. Height parameter is missing
C. yticks are set incorrectly
D. Values lists have different lengths

Solution

  1. Step 1: Check bar positions

    Both plt.barh calls use the same x positions, so bars overlap instead of grouping.
  2. Step 2: Verify grouping method

    Positions should be shifted by width to separate groups horizontally.
  3. Final Answer:

    Bars overlap because positions are not shifted for grouping -> Option A
  4. Quick Check:

    Same x positions without shift = overlapping bars [OK]
Hint: Shift bar positions to avoid overlap in grouped bars [OK]
Common Mistakes:
  • Not shifting positions for second group
  • Incorrect yticks placement
  • Assuming height parameter fixes overlap
5.

You have sales data for 3 products over 2 years:

products = ['A', 'B', 'C']
year1 = [10, 15, 7]
year2 = [12, 9, 14]

How would you create a horizontal grouped bar chart to compare sales by product and year, ensuring product labels appear centered between grouped bars?

hard
A. Use plt.plot to draw lines for each product
B. Use plt.barh with positions shifted by width and set yticks at x + width/2
C. Use plt.barh with same positions for both years and set yticks at x
D. Use plt.bar with positions shifted by width and set xticks at x + width/2

Solution

  1. Step 1: Use plt.barh with shifted positions

    Shift positions by width for each year to group bars horizontally side by side.
  2. Step 2: Set yticks at middle of grouped bars

    Set yticks at x + width/2 so product labels appear centered between bars.
  3. Final Answer:

    Use plt.barh with positions shifted by width and set yticks at x + width/2 -> Option B
  4. Quick Check:

    Shift positions + yticks center = clear grouped horizontal bars [OK]
Hint: Shift bars and center yticks for clear grouped horizontal bars [OK]
Common Mistakes:
  • Using vertical bars instead of horizontal
  • Not shifting positions causing overlap
  • Setting yticks incorrectly causing label misalignment
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