Polar Chart
Team Velocity Sprint Metrics
Agile sprint velocity radar showing team performance across different sprint metrics and story completion rates.
Output
Python
import matplotlib.pyplot as plt
import numpy as np
# Sprint metrics
metrics = ['Stories\nCompleted', 'Bug Fixes', 'Code\nReviews', 'Tests\nWritten',
'Documentation', 'Refactoring', 'Tech Debt', 'Deployments']
team_a = [85, 92, 78, 88, 65, 72, 80, 95]
team_b = [78, 75, 90, 82, 85, 88, 70, 85]
# Prepare angles
angles = np.linspace(0, 2 * np.pi, len(metrics), endpoint=False).tolist()
team_a_plot = team_a + [team_a[0]]
team_b_plot = team_b + [team_b[0]]
angles += angles[:1]
# Light theme
fig, ax = plt.subplots(figsize=(10, 10), subplot_kw=dict(polar=True), facecolor='#ffffff')
ax.set_facecolor('#ffffff')
# Team A
ax.fill(angles, team_a_plot, color='#4927F5', alpha=0.2)
ax.plot(angles, team_a_plot, color='#4927F5', linewidth=2.5, label='Team Alpha')
# Team B
ax.fill(angles, team_b_plot, color='#F54927', alpha=0.2)
ax.plot(angles, team_b_plot, color='#F54927', linewidth=2.5, label='Team Beta')
# Styling
ax.set_ylim(0, 100)
ax.set_xticks(angles[:-1])
ax.set_xticklabels(metrics, fontsize=10, color='#1f2937', fontweight='500')
ax.set_yticks([25, 50, 75, 100])
ax.set_yticklabels(['25', '50', '75', '100'], fontsize=9, color='#6b7280')
ax.spines['polar'].set_color('#e5e7eb')
ax.grid(color='#e5e7eb', linewidth=0.8)
ax.tick_params(colors='#374151')
ax.set_title('Sprint Velocity Comparison', fontsize=16, color='#1f2937', fontweight='bold', pad=25)
ax.legend(loc='upper right', bbox_to_anchor=(1.2, 1.1), frameon=False)
plt.tight_layout()
plt.show()
Library
Matplotlib
Category
Part-to-Whole
More Polar Chart examples
☕