Sunburst Chart

Tech Company Organization Structure

Dark-themed sunburst chart showing a tech company organizational hierarchy from C-suite to individual teams.

Output
Tech Company Organization Structure
Python
import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(12, 10), facecolor='#0a0a0f')
ax.set_facecolor('#0a0a0f')

# Inner ring - Departments
dept_sizes = [30, 25, 20, 15, 10]
dept_labels = ['Engineering', 'Product', 'Sales', 'Operations', 'HR']
dept_colors = ['#27D3F5', '#F5276C', '#6CF527', '#F5B027', '#5314E6']

# Outer ring - Teams
team_sizes = [12, 10, 8, 10, 8, 7, 8, 7, 5, 8, 7, 5, 5]
team_colors = ['#27D3F5', '#4DE8FF', '#1A9FBA',
               '#F5276C', '#FF5A94', '#C21F56',
               '#6CF527', '#8FFF5C', '#4DB31F',
               '#F5B027', '#FFCC5C',
               '#5314E6', '#7B4DFF']

# Create sunburst without overlapping labels
wedges_outer, _ = ax.pie(team_sizes, radius=1, colors=team_colors,
       wedgeprops=dict(width=0.3, edgecolor='#0a0a0f', linewidth=2))

wedges_inner, texts = ax.pie(dept_sizes, radius=0.7, colors=dept_colors,
       wedgeprops=dict(width=0.3, edgecolor='#0a0a0f', linewidth=2))

# Add department labels manually at better positions
for i, (wedge, label) in enumerate(zip(wedges_inner, dept_labels)):
    ang = (wedge.theta2 - wedge.theta1) / 2 + wedge.theta1
    x = 0.55 * np.cos(np.radians(ang))
    y = 0.55 * np.sin(np.radians(ang))
    ax.text(x, y, label, ha='center', va='center', fontsize=9, 
            color='white', fontweight='bold', rotation=0)

# Center circle
centre_circle = plt.Circle((0, 0), 0.4, fc='#0a0a0f', ec='#334155', linewidth=2)
ax.add_artist(centre_circle)
ax.text(0, 0, 'TechCorp\n250 FTE', ha='center', va='center', 
        fontsize=14, color='white', fontweight='bold')

# Legend for outer ring
outer_labels = ['Backend', 'Frontend', 'DevOps', 'Design', 'PM', 'Research',
                'Enterprise', 'SMB', 'Partners', 'Finance', 'Legal', 'Recruiting', 'People']
ax.legend(wedges_outer, outer_labels, loc='center left', bbox_to_anchor=(1.05, 0.5),
          fontsize=9, frameon=True, facecolor='#1e293b', edgecolor='#334155',
          labelcolor='white', title='Teams', title_fontsize=10)

ax.set_title('Organization Structure', fontsize=18, color='#f8fafc', 
             fontweight='bold', pad=20)

plt.tight_layout()
plt.show()
Library

Matplotlib

Category

Part-to-Whole

Did this help you?

Support PyLucid to keep it free & growing

Support