# Sort by market demand (highest first)
skills_sorted = skills_df.sort_values('Market_Demand', ascending=False).reset_index(drop=True)
# Status based on proficiency level (not gap)
def get_status(proficiency):
if proficiency > 70:
return '✅ Strong'
elif proficiency >= 50:
return '⚡ On Track'
else:
return '🎯 Focus Area'
skills_sorted['Mishal_Status'] = skills_sorted['Mishal'].apply(get_status)
skills_sorted['Almas_Status'] = skills_sorted['Almas'].apply(get_status)
# Color coding for status
def get_cell_color(status):
if '✅' in status:
return 'rgba(0, 204, 150, 0.3)'
elif '⚡' in status:
return 'rgba(255, 193, 7, 0.3)'
else:
return 'rgba(239, 85, 59, 0.25)'
mishal_colors = [get_cell_color(s) for s in skills_sorted['Mishal_Status']]
almas_colors = [get_cell_color(s) for s in skills_sorted['Almas_Status']]
cell_colors = [
['rgba(248, 249, 250, 0.8)'] * len(skills_sorted),
['rgba(99, 110, 250, 0.15)'] * len(skills_sorted),
['rgba(239, 85, 59, 0.1)'] * len(skills_sorted),
mishal_colors,
['rgba(0, 204, 150, 0.1)'] * len(skills_sorted),
almas_colors
]
headers = ['<b>Skill</b>', '<b>Market<br>Demand</b>',
'<b>Mishal<br>Level</b>', '<b>Mishal<br>Status</b>',
'<b>Almas<br>Level</b>', '<b>Almas<br>Status</b>']
fig = go.Figure()
fig.add_trace(go.Table(
header=dict(
values=headers,
fill_color='#2c3e50',
font=dict(color='white', size=13, family='Arial'),
align='center',
height=45,
line=dict(color='white', width=2)
),
cells=dict(
values=[
skills_sorted['Skill'],
[f"{v}%" for v in skills_sorted['Market_Demand']],
[f"{v}%" for v in skills_sorted['Mishal']],
skills_sorted['Mishal_Status'],
[f"{v}%" for v in skills_sorted['Almas']],
skills_sorted['Almas_Status']
],
fill_color=cell_colors,
font=dict(color='#2c3e50', size=12, family='Arial'),
align=['left', 'center', 'center', 'center', 'center', 'center'],
height=35,
line=dict(color='rgba(0,0,0,0.1)', width=1)
)
))
fig.update_layout(
title=dict(
text='<b>Skill Gap Analysis Dashboard</b><br><sup>🎯 Focus Area (<50%) | ⚡ On Track (50-70%) | ✅ Strong (>70%)</sup>',
font=dict(size=18, color='#2c3e50', family='Arial Black'),
x=0.5,
y=0.98
),
height=550,
width=900,
margin=dict(t=80, b=20, l=20, r=20),
paper_bgcolor='white'
)
fig.write_image('figures/skill_gap_table.png', scale=2)
fig.show()