Heatmap

Team Skills Matrix

Employee competency heatmap across skill areas

Output
Team Skills Matrix
Python
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
from matplotlib.colors import LinearSegmentedColormap

np.random.seed(42)

# Team members and skills
members = ['Alice', 'Bob', 'Carol', 'David', 'Eve', 'Frank', 'Grace', 'Henry']
skills = ['Python', 'SQL', 'ML/AI', 'Cloud', 'DevOps', 'Communication', 'Leadership', 'Problem Solving']

# Skill levels (1-5)
levels = np.random.randint(2, 5, (len(members), len(skills))) + np.random.rand(len(members), len(skills))
# Add specializations
levels[0, 0:3] += 1  # Alice: Data Science
levels[1, 3:5] += 1  # Bob: Infrastructure
levels[2, 5:8] += 1  # Carol: Soft skills
levels[3, 2] += 1.5  # David: ML specialist
levels = np.clip(levels, 1, 5)

df = pd.DataFrame(levels, index=members, columns=skills)

# NEON green-blue colormap
neon_skill = LinearSegmentedColormap.from_list('neon_skill', ['#f3f4f6', '#27F5B0', '#27D3F5', '#4927F5'])

fig, ax = plt.subplots(figsize=(10, 6), facecolor='#ffffff')
ax.set_facecolor('#ffffff')

sns.heatmap(df, cmap=neon_skill, annot=True, fmt='.1f', linewidths=2, linecolor='#ffffff',
            vmin=1, vmax=5, annot_kws={'size': 10, 'fontweight': '500'},
            cbar_kws={'shrink': 0.8, 'label': 'Skill Level (1-5)'}, ax=ax)

ax.set_title('Team Skills Assessment', color='#1f2937', fontsize=14, fontweight='bold', pad=15)
ax.set_xlabel('Skill', color='#1f2937', fontsize=11)
ax.set_ylabel('Team Member', color='#1f2937', fontsize=11)
ax.tick_params(colors='#374151', labelsize=10)
ax.set_xticklabels(ax.get_xticklabels(), rotation=30, ha='right')

plt.tight_layout()
plt.show()
Library

Matplotlib

Category

Heatmaps & Density

Did this help you?

Support PyLucid to keep it free & growing

Support