Horizon Chart

Gaming Server Latency Horizon

Esports monitoring horizon chart showing server ping variations with orange gradient.

Output
Gaming Server Latency Horizon
Python
import matplotlib.pyplot as plt
import numpy as np

COLORS = {
    'bands': ['#FFEDD5', '#FED7AA', '#FB923C', '#EA580C'],
    'background': '#ffffff',
    'text': '#1f2937',
    'grid': '#e5e7eb',
}

np.random.seed(3131)
seconds = np.arange(0, 1800)  # 30-minute gaming session
base = 25 + 5 * np.sin(seconds * np.pi / 300)
load_spikes = np.random.choice([0, 1], size=len(seconds), p=[0.97, 0.03]) * np.random.uniform(20, 80, len(seconds))
ping = base + load_spikes + np.random.exponential(3, len(seconds))
ping = np.clip(ping, 15, 120)
ping_norm = (ping - 15) / 105

fig, ax = plt.subplots(figsize=(14, 3), facecolor=COLORS['background'])
ax.set_facecolor(COLORS['background'])

band = 0.25

ax.fill_between(seconds, 0, np.clip(ping_norm, 0, band), color=COLORS['bands'][0])
ax.fill_between(seconds, 0, np.clip(ping_norm - band, 0, band), color=COLORS['bands'][1])
ax.fill_between(seconds, 0, np.clip(ping_norm - 2*band, 0, band), color=COLORS['bands'][2])
ax.fill_between(seconds, 0, np.clip(ping_norm - 3*band, 0, band), color=COLORS['bands'][3])

ax.set_xlim(0, 1799)
ax.set_ylim(0, 0.3)

ax.set_title('Gaming Server Ping (ms)', color=COLORS['text'], fontsize=12, fontweight='bold', pad=10)
ax.set_xlabel('Time (minutes)', color=COLORS['text'], fontsize=10)
ax.set_ylabel('Ping (ms)', color=COLORS['text'], fontsize=10)
ax.set_xticks([0, 300, 600, 900, 1200, 1500, 1800])
ax.set_xticklabels(['0', '5', '10', '15', '20', '25', '30'])

for spine in ax.spines.values():
    spine.set_color(COLORS['grid'])
ax.tick_params(colors=COLORS['text'], labelsize=9)

plt.tight_layout()
plt.show()
Library

Matplotlib

Category

Time Series

Did this help you?

Support PyLucid to keep it free & growing

Support