Bird
Raised Fist0
Matplotlibdata~20 mins

Dumbbell charts in Matplotlib - Practice Problems & Coding Challenges

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

categories = ['A', 'B', 'C']
values_1 = [10, 20, 30]
values_2 = [15, 18, 35]

plt.hlines(y=categories, xmin=values_1, xmax=values_2, color='gray')
plt.scatter(values_1, categories, color='blue', label='Start')
plt.scatter(values_2, categories, color='red', label='End')
plt.legend()
plt.show()
AA scatter plot with points only for values_1 and values_2 without connecting lines
BA vertical bar chart with three bars for categories A, B, and C
CA horizontal dumbbell chart with three lines connecting blue and red dots for categories A, B, and C
DA line plot connecting values_1 and values_2 points in sequence
Attempts:
2 left
💡 Hint
Look at how hlines and scatter are used to connect points horizontally.
❓ data_output
intermediate
1:30remaining
Number of Lines in Dumbbell Chart
Given the following data, how many horizontal lines will be drawn in the dumbbell chart code below?
Matplotlib
categories = ['X', 'Y', 'Z', 'W']
values_1 = [5, 10, 15, 20]
values_2 = [7, 12, 18, 25]

# Lines drawn using plt.hlines(y=categories, xmin=values_1, xmax=values_2)
A4
B3
C2
D5
Attempts:
2 left
💡 Hint
Each category corresponds to one horizontal line.
❓ visualization
advanced
2:00remaining
Identify the Dumbbell Chart Visualization
Which option best describes the visual output of this dumbbell chart code snippet?
Matplotlib
import matplotlib.pyplot as plt

labels = ['Group1', 'Group2']
start = [100, 150]
end = [120, 130]

plt.hlines(y=labels, xmin=start, xmax=end, color='green', linewidth=4)
plt.scatter(start, labels, color='orange', s=100)
plt.scatter(end, labels, color='purple', s=100)
plt.show()
ATwo horizontal thick green lines with orange dots on the left and purple dots on the right for each group
BA scatter plot with orange and purple dots randomly placed
CTwo vertical green lines with orange and purple dots stacked vertically
DA bar chart with green bars and dots on top
Attempts:
2 left
💡 Hint
Check the use of hlines and scatter with horizontal y-axis labels.
🔧 Debug
advanced
2:00remaining
Error in Dumbbell Chart Code
What error will this dumbbell chart code produce when run?
Matplotlib
import matplotlib.pyplot as plt

categories = ['A', 'B', 'C']
values_1 = [10, 20]
values_2 = [15, 25, 30]

plt.hlines(y=categories, xmin=values_1, xmax=values_2, color='black')
plt.scatter(values_1, categories, color='blue')
plt.scatter(values_2, categories, color='red')
plt.show()
ANo error, chart displays correctly
BTypeError because categories are strings
CIndexError from accessing out-of-range list elements
DValueError due to mismatched lengths of y and xmin arrays
Attempts:
2 left
💡 Hint
Check if all input lists have the same length.
🚀 Application
expert
2:30remaining
Calculate Difference from Dumbbell Chart Data
Given the following data used in a dumbbell chart, what is the average difference between the two value sets?
Matplotlib
categories = ['P', 'Q', 'R', 'S']
values_1 = [50, 60, 70, 80]
values_2 = [55, 65, 75, 90]

differences = [v2 - v1 for v1, v2 in zip(values_1, values_2)]
avg_diff = sum(differences) / len(differences)
print(round(avg_diff, 2))
A10.0
B6.25
C5.0
D7.5
Attempts:
2 left
💡 Hint
Calculate each difference, then average them.

Practice

(1/5)
1. What is the main purpose of a dumbbell chart in data visualization?
easy
A. To compare two related values for each category using connected points
B. To show the distribution of a single variable using bars
C. To display the relationship between two continuous variables as a scatter plot
D. To visualize hierarchical data using nested rectangles

Solution

  1. Step 1: Understand dumbbell chart structure

    Dumbbell charts show two points per category connected by a line to highlight differences or changes.
  2. Step 2: Compare with other chart types

    Bar charts show single values, scatter plots show relationships, and treemaps show hierarchies, so they don't fit dumbbell chart purpose.
  3. Final Answer:

    To compare two related values for each category using connected points -> Option A
  4. Quick Check:

    Dumbbell chart = compare two values [OK]
Hint: Dumbbell charts connect two points per category [OK]
Common Mistakes:
  • Confusing dumbbell charts with bar charts
  • Thinking dumbbell charts show distributions
  • Mixing up scatter plots with dumbbell charts
2. Which matplotlib functions are typically used together to create a dumbbell chart?
easy
A. bar and plot
B. pie and bar
C. hist and scatter
D. hlines and scatter

Solution

  1. Step 1: Identify dumbbell chart components

    Dumbbell charts use horizontal lines to connect two points and scatter points to mark values.
  2. Step 2: Match matplotlib functions

    hlines draws horizontal lines, scatter plots points, so these two create dumbbell charts.
  3. Final Answer:

    hlines and scatter -> Option D
  4. Quick Check:

    Lines + points = hlines & scatter [OK]
Hint: Use hlines for lines and scatter for points [OK]
Common Mistakes:
  • Using bar instead of hlines for connecting lines
  • Confusing hist with scatter
  • Trying pie charts for dumbbell visualization
3. What will be the output of this code snippet creating a dumbbell chart?
import matplotlib.pyplot as plt
categories = ['A', 'B']
start = [1, 3]
end = [4, 5]
plt.hlines(y=categories, xmin=start, xmax=end, color='gray')
plt.scatter(start, categories, color='blue')
plt.scatter(end, categories, color='red')
plt.show()
medium
A. A horizontal dumbbell chart with two categories showing blue and red points connected by gray lines
B. A vertical bar chart with categories on x-axis and values on y-axis
C. An error because categories cannot be used as y-values
D. A scatter plot with categories on y-axis and points only at start values

Solution

  1. Step 1: Analyze hlines command

    plt.hlines(y=categories, xmin=start, xmax=end, color='gray') fails because y-coordinates must be numeric, but categories=['A', 'B'] are strings. Raises ValueError: could not convert string to float.
  2. Step 2: Confirm scatter commands also fail

    plt.scatter(start, categories) and subsequent scatter require numeric y-values, leading to the same error.
  3. Final Answer:

    An error because categories cannot be used as y-values -> Option C
  4. Quick Check:

    Strings as y-values in hlines/scatter -> error [OK]
Hint: hlines and scatter require numeric y-positions; map categories to indices [OK]
Common Mistakes:
  • Assuming strings work directly as y-values
  • Expecting horizontal dumbbell chart output
  • Confusing with bar chart output
4. Identify the error in this dumbbell chart code and select the fix:
import matplotlib.pyplot as plt
categories = ['X', 'Y']
start = [2, 4]
end = [5, 7]
plt.hlines(y=categories, xmin=start, xmax=end)
plt.scatter(start, categories)
plt.scatter(end, categories)
plt.show()
medium
A. No error; code runs correctly
B. Error because categories are strings; convert categories to numeric indices
C. Error because scatter requires numeric y-values; swap x and y in scatter
D. Error due to missing color argument in hlines

Solution

  1. Step 1: Check data types for plotting

    hlines and scatter both require numeric y-values. Passing string categories as y causes ValueError (cannot convert string to float).
  2. Step 2: Fix by using numeric indices

    Create y_pos = list(range(len(categories))), use y=y_pos in hlines and scatters, then plt.yticks(y_pos, categories).
  3. Final Answer:

    Error because categories are strings; convert categories to numeric indices -> Option B
  4. Quick Check:

    Categories (str) -> numeric indices [OK]
Hint: Use numeric y_pos = range(len(categories)); set labels with yticks [OK]
Common Mistakes:
  • Assuming hlines and scatter accept strings equally
  • Ignoring axis data type requirements
  • Missing that scatter needs numeric coordinates
5. You have sales data for two years for 4 products: products = ['P1', 'P2', 'P3', 'P4'], sales_2022 = [100, 150, 200, 130], sales_2023 = [120, 140, 210, 160]. How would you create a dumbbell chart to compare sales changes using matplotlib?
hard
A. Use plt.hlines with y as products, xmin as sales_2022, xmax as sales_2023, and plt.scatter for points
B. Use plt.bar for both years side by side
C. Use plt.plot with products on x-axis and sales on y-axis
D. Use plt.scatter only with sales_2023 values

Solution

  1. Step 1: Understand dumbbell chart requirements

    We need to show two values per product connected by a line to compare sales in 2022 and 2023.
  2. Step 2: Map data to plotting functions

    hlines draws lines between sales_2022 and sales_2023 at y=products; scatter plots points for each year's sales.
  3. Final Answer:

    Use plt.hlines with y as products, xmin as sales_2022, xmax as sales_2023, and plt.scatter for points -> Option A
  4. Quick Check:

    Dumbbell = hlines + scatter with two values [OK]
Hint: Connect two year values with hlines; mark points with scatter [OK]
Common Mistakes:
  • Using bar charts instead of dumbbell charts
  • Plotting only one year's data
  • Not connecting points with lines
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