Diverging bar charts help us compare positive and negative values side by side. They make it easy to see which items are above or below a baseline.
Diverging bar charts in Matplotlib
import matplotlib.pyplot as plt # Data labels = ['A', 'B', 'C', 'D'] values = [10, -5, 15, -10] # Plot plt.bar(labels, values, color=['green' if v >= 0 else 'red' for v in values]) plt.axhline(0, color='black') plt.show()
Use colors to separate positive and negative bars for clarity.
Draw a horizontal line at zero to show the baseline.
import matplotlib.pyplot as plt labels = ['Jan', 'Feb', 'Mar'] values = [20, -10, 15] colors = ['blue' if v >= 0 else 'orange' for v in values] plt.bar(labels, values, color=colors) plt.axhline(0, color='gray') plt.show()
import matplotlib.pyplot as plt labels = ['X', 'Y', 'Z'] values = [-5, 10, -3] plt.bar(labels, values, color=['red' if v < 0 else 'green' for v in values]) plt.axhline(0, color='black') plt.title('Diverging Bar Chart') plt.show()
This program creates a diverging bar chart showing positive and negative values for products. Green bars go up, red bars go down, and a black line marks zero.
import matplotlib.pyplot as plt # Categories and their values categories = ['Product A', 'Product B', 'Product C', 'Product D'] values = [30, -20, 15, -10] # Choose colors: green for positive, red for negative colors = ['green' if v >= 0 else 'red' for v in values] # Create bar chart plt.bar(categories, values, color=colors) # Draw baseline at zero plt.axhline(0, color='black') # Add labels and title plt.ylabel('Value') plt.title('Diverging Bar Chart Example') # Show plot plt.show()
Always include a zero baseline line to separate positive and negative bars clearly.
Use contrasting colors for positive and negative bars to make the chart easy to read.
Keep labels short and clear to avoid clutter.
Diverging bar charts show positive and negative values side by side.
Use colors and a zero line to make differences clear.
They are great for comparing gains and losses or opinions above and below a midpoint.
Practice
diverging bar chart in data visualization?Solution
Step 1: Understand the chart type
Diverging bar charts are designed to display data that has both positive and negative values.Step 2: Identify the purpose
They place positive and negative bars side by side to highlight differences clearly.Final Answer:
To show positive and negative values side by side for easy comparison -> Option BQuick Check:
Diverging bar chart = positive & negative side by side [OK]
- Confusing diverging bar charts with stacked bar charts
- Thinking they only show positive values
- Mixing up with line charts
barh function for negative and positive values?Solution
Step 1: Understand color assignment for diverging bars
Colors should differ based on whether values are positive or negative to highlight divergence.Step 2: Check the color list comprehension
plt.barh(y_pos, values, color=['red' if v < 0 else 'green' for v in values]) uses a list comprehension assigning 'red' for negative and 'green' for positive values, which is correct.Final Answer:
plt.barh(y_pos, values, color=['red' if v < 0 else 'green' for v in values]) -> Option CQuick Check:
Color by sign = plt.barh(y_pos, values, color=['red' if v < 0 else 'green' for v in values]) [OK]
- Using a single color for all bars
- Taking absolute values which lose sign info
- Assigning wrong colors to positive/negative values
import matplotlib.pyplot as plt values = [4, -3, 2, -1] y_pos = range(len(values)) colors = ['green' if v > 0 else 'red' for v in values] plt.barh(y_pos, values, color=colors) plt.show()
Solution
Step 1: Analyze the color assignment logic
The list comprehension assigns 'green' if value > 0, else 'red'.Step 2: Check the value -3
-3 is less than 0, so it gets 'red'.Final Answer:
Red -> Option DQuick Check:
Negative value color = red [OK]
- Assuming negative values get green
- Confusing color assignment logic
- Ignoring the else condition in list comprehension
values = [5, -2, 3, -4] y_pos = range(len(values)) colors = ['green' if v < 0 else 'red' for v in values] plt.barh(y_pos, values, color=colors) plt.show()
Solution
Step 1: Review the color condition
The code assigns 'green' if value < 0, else 'red'. This means negative values are green and positive are red.Step 2: Understand diverging bar chart color convention
Usually, positive values are green and negative values are red to show gains and losses clearly.Final Answer:
The color condition is reversed; positive values should be green -> Option AQuick Check:
Positive = green, negative = red [OK]
- Reversing color conditions
- Thinking range is invalid for y_pos
- Using absolute values for coloring
{'A': 10, 'B': -5, 'C': 0, 'D': 7, 'E': -3}. How would you create a diverging bar chart that clearly shows gains in green, losses in red, and zero values in gray using matplotlib?Solution
Step 1: Define color conditions for all cases
Assign 'green' for positive, 'red' for negative, and 'gray' for zero values to distinguish all clearly.Step 2: Create color list and plot
Use a list comprehension to assign colors based on value sign, then plot with plt.barh using these colors.Final Answer:
Use a color list with a condition: green if >0, red if <0, gray if 0, then plot with plt.barh -> Option AQuick Check:
Color by sign including zero = Use a color list with a condition: green if >0, red if <0, gray if 0, then plot with plt.barh [OK]
- Ignoring zero values color
- Using absolute values losing sign info
- Assigning random colors without logic
Ready to prove it?
Pass the test and this pattern moves unknown
