Mirror Chart

Startup vs Corporate Employee Age

Mirror density comparing workforce demographics with experience analysis

Output
Startup vs Corporate Employee Age
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

Did this help you?

Support PyLucid to keep it free & growing

Support