Calendar Heatmap
Gaming Sessions Calendar
Daily gaming hours tracked in neon purple gradient for gamers.
Output
Python
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import LinearSegmentedColormap
import matplotlib.patches as mpatches
np.random.seed(139)
days = 365
gaming = np.random.exponential(1.5, days)
gaming = np.clip(gaming, 0, 6)
for i in range(days):
if i % 7 >= 5:
gaming[i] = min(6, gaming[i] * 2)
weeks = 53
data = np.zeros((7, weeks))
for i, val in enumerate(gaming):
week = i // 7
day = i % 7
if week < weeks:
data[day, week] = val
# CLAUDE.md Neon Purple palette
colors_neon = ['#ffffff', '#e5e0fc', '#9a78f9', '#4927F5']
cmap = LinearSegmentedColormap.from_list('neon_purple', colors_neon, N=256)
fig, ax = plt.subplots(figsize=(16, 4), facecolor='#ffffff')
ax.set_facecolor('#ffffff')
im = ax.imshow(data, cmap=cmap, aspect='auto', vmin=0, vmax=6)
ax.set_yticks(range(7))
ax.set_yticklabels(['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], fontsize=9, color='#374151')
ax.set_xticks(range(0, 52, 4))
ax.set_xticklabels(['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', ''],
fontsize=9, color='#374151')
ax.set_title('Gaming Sessions - Hours Per Day', fontsize=16, color='#1f2937', fontweight='bold', pad=15)
for i in range(8):
ax.axhline(y=i-0.5, color='#e5e7eb', linewidth=0.5)
for i in range(weeks+1):
ax.axvline(x=i-0.5, color='#e5e7eb', linewidth=0.5)
ax.tick_params(colors='#374151', length=0)
for spine in ax.spines.values():
spine.set_visible(False)
legend_elements = [mpatches.Patch(facecolor=c, label=l, edgecolor='#d1d5db')
for c, l in zip(colors_neon, ['0', '1h', '2-4h', '5+h'])]
ax.legend(handles=legend_elements, loc='upper left', bbox_to_anchor=(0, -0.15), ncol=4,
fontsize=8, facecolor='#f9fafb', edgecolor='#d1d5db', labelcolor='#374151', title='Hours',
title_fontsize=9)
total = np.sum(gaming)
ax.annotate(f'{total:.0f} hours played', xy=(0.98, 1.1), xycoords='axes fraction',
fontsize=11, color='#4927F5', ha='right', fontweight='bold')
plt.tight_layout()
plt.subplots_adjust(bottom=0.25)
plt.show()
Library
Matplotlib
Category
Time Series
More Calendar Heatmap examples
☕