Horizon Chart

Warehouse Inventory Horizon

Supply chain horizon chart showing inventory level fluctuations with amber neon gradient.

Output
Warehouse Inventory Horizon
Python
import matplotlib.pyplot as plt
import numpy as np

COLORS = {
    'bands': ['#4d3300', '#806600', '#F5B027', '#FCD34D'],
    'background': '#0a0a0f',
    'text': '#ffffff',
}

np.random.seed(2626)
days = np.arange(0, 90)  # 3 months
# Inventory: depletion and replenishment cycles
base = 1000
depletion = -np.random.uniform(20, 40, len(days))
replenishment = np.zeros(len(days))
replenishment[::14] = np.random.uniform(400, 600, len(replenishment[::14]))  # Bi-weekly
inventory = base + np.cumsum(depletion + replenishment)
inventory = np.clip(inventory, 200, 1500)
inventory_norm = (inventory - 200) / 1300

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

band = 0.25

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

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

ax.set_title('Warehouse Inventory Levels (units)', color=COLORS['text'], fontsize=12, fontweight='bold', pad=10)
ax.set_xlabel('Week', color=COLORS['text'], fontsize=10)
ax.set_ylabel('Units', color=COLORS['text'], fontsize=10)
ax.set_xticks([0, 14, 28, 42, 56, 70, 84])
ax.set_xticklabels(['W1', 'W2', 'W4', 'W6', 'W8', 'W10', 'W12'])

for spine in ax.spines.values():
    spine.set_visible(False)
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