Mirror Chart
Startup vs Corporate Employee Age
Mirror density comparing workforce demographics with experience analysis
Output
Python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import gaussian_kde
np.random.seed(1982)
BG_COLOR = '#ffffff'
TEXT_COLOR = '#1f2937'
startup = np.random.gamma(4, 3, 600) + 22
corporate = np.random.normal(42, 10, 800)
startup = startup[(startup > 20) & (startup < 60)]
corporate = corporate[(corporate > 22) & (corporate < 65)]
fig, ax = plt.subplots(figsize=(12, 7), facecolor=BG_COLOR)
ax.set_facecolor(BG_COLOR)
x = np.linspace(20, 65, 400)
kde_s = gaussian_kde(startup)
y_s = kde_s(x)
ax.fill_between(x, y_s, alpha=0.3, color='#F5276C')
ax.plot(x, y_s, color='#F5276C', linewidth=2, label='Startup Employees')
kde_c = gaussian_kde(corporate)
y_c = kde_c(x) * -1
ax.fill_between(x, y_c, alpha=0.3, color='#4927F5')
ax.plot(x, y_c, color='#4927F5', linewidth=2, label='Corporate Employees')
ax.axhline(0, color=TEXT_COLOR, linewidth=1.5)
med_s = np.median(startup)
med_c = np.median(corporate)
ax.axvline(med_s, color='#F5276C', linestyle='--', linewidth=1.5, alpha=0.7)
ax.axvline(med_c, color='#4927F5', linestyle='--', linewidth=1.5, alpha=0.7)
age_gap = med_c - med_s
pct_under_30_s = (startup < 30).sum() / len(startup) * 100
pct_under_30_c = (corporate < 30).sum() / len(corporate) * 100
stats_text = 'Demographics:\nStartup median: %.0f yrs\nCorporate median: %.0f yrs\nGap: %.0f years' % (med_s, med_c, age_gap)
ax.text(0.02, 0.98, stats_text.replace('\n', chr(10)), transform=ax.transAxes, fontsize=10,
color=TEXT_COLOR, verticalalignment='top', fontfamily='monospace',
bbox=dict(boxstyle='round,pad=0.5', facecolor='#f8fafc', edgecolor='#e5e7eb', alpha=0.9))
ax.text(0.98, 0.02, 'Under 30: Startup %.0f%% vs Corp %.0f%%' % (pct_under_30_s, pct_under_30_c),
transform=ax.transAxes, fontsize=10, color='#6b7280', ha='right', va='bottom')
ax.set_xlabel('Employee Age', fontsize=12, color=TEXT_COLOR, fontweight='500')
ax.set_ylabel('Density', fontsize=12, color=TEXT_COLOR, fontweight='500')
ax.set_title('Workforce Demographics: Startup vs Corporate', fontsize=14,
color=TEXT_COLOR, fontweight='bold', pad=15)
ax.tick_params(colors='#374151', labelsize=10)
for spine in ax.spines.values():
spine.set_color('#e5e7eb')
ax.legend(loc='upper right', facecolor=BG_COLOR, edgecolor='#e5e7eb',
labelcolor=TEXT_COLOR, fontsize=10)
ax.set_xlim(20, 65)
plt.tight_layout()
plt.show()
Library
Matplotlib
Category
Statistical
☕