Bird
Raised Fist0
Matplotlibdata~20 mins

Bar width and positioning in Matplotlib - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
πŸŽ–οΈ
Bar Chart Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
1:30remaining
Bar chart with custom bar width
What is the width of each bar in the resulting bar chart from this code?
Matplotlib
import matplotlib.pyplot as plt

x = [1, 2, 3]
heights = [4, 5, 6]
plt.bar(x, heights, width=0.5)
plt.show()
A0.8
B0.3
C1.0
D0.5
Attempts:
2 left
πŸ’‘ Hint
Look at the width parameter in plt.bar function.
❓ data_output
intermediate
2:00remaining
Positions of grouped bars
Given two groups of bars plotted side by side with width 0.4, what are the x positions of the bars in the second group?
Matplotlib
import numpy as np
import matplotlib.pyplot as plt

labels = ['A', 'B', 'C']
x = np.arange(len(labels))
width = 0.4

plt.bar(x - width/2, [1, 2, 3], width=width)
plt.bar(x + width/2, [4, 5, 6], width=width)
plt.show()

positions_second_group = x + width/2
print(positions_second_group)
A[0.2 1.2 2.2]
B[-0.2 0.8 1.8]
C[0.4 1.4 2.4]
D[0.0 1.0 2.0]
Attempts:
2 left
πŸ’‘ Hint
Positions are shifted by half the bar width to the right for the second group.
❓ visualization
advanced
2:00remaining
Effect of bar width on bar overlap
Which bar width will cause the bars to overlap when plotted at positions [0, 1, 2]?
Matplotlib
import matplotlib.pyplot as plt

x = [0, 1, 2]
heights = [3, 4, 5]

plt.bar(x, heights, width=1.2)
plt.show()
A0.5
B0.8
C1.2
D1.0
Attempts:
2 left
πŸ’‘ Hint
Bars overlap if width is greater than the distance between bar centers.
🧠 Conceptual
advanced
1:30remaining
Understanding bar alignment parameter
What does setting the 'align' parameter to 'edge' do in plt.bar compared to the default 'center'?
ABars are aligned so their left edges are at the x positions instead of centers.
BBars are aligned so their centers are at the x positions (default behavior).
CBars are aligned so their right edges are at the x positions.
DBars are stacked vertically instead of side by side.
Attempts:
2 left
πŸ’‘ Hint
Think about where the bar starts relative to the x coordinate.
πŸ”§ Debug
expert
2:30remaining
Fixing incorrect bar positions in grouped bar chart
Given this code, which option correctly fixes the bar positions so the two groups do not overlap?
Matplotlib
import numpy as np
import matplotlib.pyplot as plt

labels = ['X', 'Y', 'Z']
x = np.arange(len(labels))
width = 0.3

plt.bar(x, [5, 7, 9], width=width)
plt.bar(x, [6, 8, 10], width=width)
plt.show()
AChange second plt.bar to plt.bar(x + width, [6, 8, 10], width=width)
BChange first plt.bar to plt.bar(x - width/2, [5, 7, 9], width=width) and second to plt.bar(x + width/2, [6, 8, 10], width=width)
CChange second plt.bar to plt.bar(x - width, [6, 8, 10], width=width)
DChange width to 0.6 for both bars
Attempts:
2 left
πŸ’‘ Hint
To avoid overlap, shift bars left and right by half the width.

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

  1. 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.
  2. Step 2: Differentiate from other properties

    Color, height, and label are controlled by other parameters, not width.
  3. Final Answer:

    The thickness of each bar -> Option A
  4. 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

  1. Step 1: Recall matplotlib bar syntax

    The plt.bar() function uses the width parameter to set bar thickness.
  2. Step 2: Identify correct parameter name

    Only width is valid; size, thickness, and length are invalid for bar width.
  3. Final Answer:

    plt.bar(x, height, width=0.5) -> Option B
  4. 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

  1. 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].
  2. Step 2: Understand bar width effect

    The width=0.4 sets bar thickness but does not change the center positions.
  3. Final Answer:

    [1.2, 2.2, 3.2] -> Option C
  4. 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:
import matplotlib.pyplot as plt
x = [1, 2, 3]
heights1 = [4, 5, 6]
heights2 = [7, 8, 9]
plt.bar(x, heights1, width=0.5)
plt.bar(x, heights2, width=0.5)
plt.show()
medium
A. Bars overlap because positions are the same
B. Width parameter is invalid
C. Heights lists have different lengths
D. Missing plt.show() call

Solution

  1. Step 1: Check bar positions

    Both bar sets use the same x positions, so bars overlap on the plot.
  2. Step 2: Confirm width and data lengths

    Width=0.5 is valid, heights lists have same length, and plt.show() is present.
  3. Final Answer:

    Bars overlap because positions are the same -> Option A
  4. 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

  1. 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.
  2. Step 2: Check width and spacing

    Width=0.2 is small enough to fit three bars side by side within each category.
  3. Final Answer:

    Correct: bars shifted left, center, right by width -> Option D
  4. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard