3D Scatter

LEO Satellite Constellation

Low Earth orbit satellite constellation showing multiple orbital shells.

Output
LEO Satellite Constellation
Python
import matplotlib.pyplot as plt
import numpy as np

np.random.seed(555)

# Satellite positions in orbit
n_satellites = 120

# Multiple orbital shells
shells = np.random.choice([400, 550, 1200], n_satellites, p=[0.5, 0.35, 0.15])
inclination = np.random.uniform(45, 98, n_satellites)
phase = np.random.uniform(0, 360, n_satellites)

# Convert to cartesian (simplified)
r = 6371 + shells  # Earth radius + altitude
x = r * np.cos(np.radians(phase)) * np.cos(np.radians(inclination))
y = r * np.sin(np.radians(phase)) * np.cos(np.radians(inclination))
z = r * np.sin(np.radians(inclination)) * np.sin(np.radians(phase/2))

# Shell colors
shell_colors = {400: '#27D3F5', 550: '#6CF527', 1200: '#F5B027'}
colors = [shell_colors[s] for s in shells]

fig = plt.figure(figsize=(10, 8), facecolor='#ffffff')
ax = fig.add_subplot(111, projection='3d', facecolor='#ffffff')

ax.scatter(x/1000, y/1000, z/1000, c=colors, s=40, alpha=0.7, edgecolors='#374151', linewidths=0.3)

# Earth representation
ax.scatter([0], [0], [0], c='#276CF5', s=500, alpha=0.3)

ax.set_xlabel('X (×1000 km)', color='#1f2937', fontsize=10)
ax.set_ylabel('Y (×1000 km)', color='#1f2937', fontsize=10)
ax.set_zlabel('Z (×1000 km)', color='#1f2937', fontsize=10)
ax.set_title('LEO Satellite Constellation', color='#1f2937', fontsize=14, fontweight='bold', pad=20)

ax.tick_params(colors='#6b7280', labelsize=8)
ax.xaxis.pane.fill = False
ax.yaxis.pane.fill = False
ax.zaxis.pane.fill = False
ax.xaxis.pane.set_edgecolor('#e5e7eb')
ax.yaxis.pane.set_edgecolor('#e5e7eb')
ax.zaxis.pane.set_edgecolor('#e5e7eb')

ax.view_init(elev=20, azim=45)
plt.tight_layout()
plt.show()
Library

Matplotlib

Category

3D Charts

Did this help you?

Support PyLucid to keep it free & growing

Support