Skip to content

Instantly share code, notes, and snippets.

@summerofgeorge
Last active December 5, 2024 23:20
Show Gist options
  • Save summerofgeorge/bea17c24084dab8e2c2b35e72080cc57 to your computer and use it in GitHub Desktop.
Save summerofgeorge/bea17c24084dab8e2c2b35e72080cc57 to your computer and use it in GitHub Desktop.
Dumbbell chart Python in Excel
dumbbell_df = xl("dumbbell[#All]", headers=True)
# Plot Dumbbell Chart
fig, ax = plt.subplots(figsize=(8, 5))
# Offset for the gray line to stop before entering the dots
line_offset = 2 # Adjust this value as needed
# Plot lines connecting before and after values with an offset
ax.hlines(dumbbell_df.index,
dumbbell_df['Before'] + line_offset,
dumbbell_df['After'] - line_offset,
color='gray', linewidth=2)
# Scatter points for 'Before' and 'After' with larger size
dot_size = 700 # Increase the dot size
ax.scatter(dumbbell_df['Before'], dumbbell_df.index, color='blue', label='Before', s=dot_size)
ax.scatter(dumbbell_df['After'], dumbbell_df.index, color='green', label='After', s=dot_size)
# Add value labels inside the dots
for i in range(len(dumbbell_df)):
ax.text(dumbbell_df['Before'][i], i, f"{dumbbell_df['Before'][i]:.1f}",
color='white', ha='center', va='center', fontsize=10, fontweight='bold')
ax.text(dumbbell_df['After'][i], i, f"{dumbbell_df['After'][i]:.1f}",
color='white', ha='center', va='center', fontsize=10, fontweight='bold')
# Labels and formatting
ax.set_yticks(dumbbell_df.index)
ax.set_yticklabels(dumbbell_df['Category'])
ax.set_xlabel('Value')
ax.set_title('Dumbbell Chart Example')
# Adjust ylim to add vertical space
ax.set_ylim(-0.5, len(dumbbell_df) - 0.5)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment