Dumbbell charts help compare two related values side by side for each item. They make it easy to see differences and changes.
Dumbbell charts in Matplotlib
import matplotlib.pyplot as plt # Data categories = ['A', 'B', 'C'] value1 = [10, 20, 15] value2 = [15, 18, 20] # Plot plt.hlines(y=categories, xmin=value1, xmax=value2, color='gray') plt.scatter(value1, categories, color='blue', label='Value 1') plt.scatter(value2, categories, color='red', label='Value 2') plt.legend() plt.show()
Use hlines to draw horizontal lines between two values.
Use scatter to plot points at each value.
import matplotlib.pyplot as plt categories = ['X', 'Y'] val1 = [5, 7] val2 = [8, 6] plt.hlines(y=categories, xmin=val1, xmax=val2, color='black') plt.scatter(val1, categories, color='green') plt.scatter(val2, categories, color='orange') plt.show()
import matplotlib.pyplot as plt categories = ['Item1', 'Item2', 'Item3'] val1 = [12, 9, 14] val2 = [15, 11, 13] plt.hlines(categories, val1, val2, color='purple', linewidth=2) plt.scatter(val1, categories, color='purple', s=100) plt.scatter(val2, categories, color='orange', s=100) plt.title('Dumbbell Chart Example') plt.show()
This program creates a dumbbell chart comparing sales for 2023 and 2024 for four products. Lines connect the two sales values for each product, and points show exact sales.
import matplotlib.pyplot as plt # Categories and two sets of values categories = ['Product A', 'Product B', 'Product C', 'Product D'] sales_2023 = [200, 340, 300, 280] sales_2024 = [220, 310, 330, 290] # Draw lines between sales of 2023 and 2024 plt.hlines(y=categories, xmin=sales_2023, xmax=sales_2024, color='gray', linewidth=2) # Plot sales points for each year plt.scatter(sales_2023, categories, color='blue', label='2023 Sales', s=100) plt.scatter(sales_2024, categories, color='red', label='2024 Sales', s=100) # Add labels and legend plt.xlabel('Sales') plt.title('Sales Comparison Dumbbell Chart') plt.legend() plt.show()
Make sure your two value lists have the same length as the categories list.
You can customize colors and sizes of points to improve clarity.
Dumbbell charts work best when comparing exactly two values per category.
Dumbbell charts show two values side by side for easy comparison.
Use horizontal lines and scatter points to build the chart in matplotlib.
They help visualize changes or differences clearly.
Practice
dumbbell chart in data visualization?Solution
Step 1: Understand dumbbell chart structure
Dumbbell charts show two points per category connected by a line to highlight differences or changes.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.Final Answer:
To compare two related values for each category using connected points -> Option AQuick Check:
Dumbbell chart = compare two values [OK]
- Confusing dumbbell charts with bar charts
- Thinking dumbbell charts show distributions
- Mixing up scatter plots with dumbbell charts
Solution
Step 1: Identify dumbbell chart components
Dumbbell charts use horizontal lines to connect two points and scatter points to mark values.Step 2: Match matplotlib functions
hlinesdraws horizontal lines,scatterplots points, so these two create dumbbell charts.Final Answer:
hlinesandscatter-> Option DQuick Check:
Lines + points = hlines & scatter [OK]
- Using bar instead of hlines for connecting lines
- Confusing hist with scatter
- Trying pie charts for dumbbell visualization
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()
Solution
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.Step 2: Confirm scatter commands also fail
plt.scatter(start, categories)and subsequent scatter require numeric y-values, leading to the same error.Final Answer:
An error because categories cannot be used as y-values -> Option CQuick Check:
Strings as y-values in hlines/scatter -> error [OK]
- Assuming strings work directly as y-values
- Expecting horizontal dumbbell chart output
- Confusing with bar chart output
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()
Solution
Step 1: Check data types for plotting
hlinesandscatterboth require numeric y-values. Passing string categories as y causes ValueError (cannot convert string to float).Step 2: Fix by using numeric indices
Createy_pos = list(range(len(categories))), usey=y_posin hlines and scatters, thenplt.yticks(y_pos, categories).Final Answer:
Error because categories are strings; convert categories to numeric indices -> Option BQuick Check:
Categories (str) -> numeric indices [OK]
- Assuming hlines and scatter accept strings equally
- Ignoring axis data type requirements
- Missing that scatter needs numeric coordinates
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?Solution
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.Step 2: Map data to plotting functions
hlinesdraws lines between sales_2022 and sales_2023 at y=products;scatterplots points for each year's sales.Final Answer:
Useplt.hlineswith y as products, xmin as sales_2022, xmax as sales_2023, andplt.scatterfor points -> Option AQuick Check:
Dumbbell = hlines + scatter with two values [OK]
- Using bar charts instead of dumbbell charts
- Plotting only one year's data
- Not connecting points with lines
Ready to prove it?
Pass the test and this pattern moves unknown
