Calendar Heatmap
Running Distance Calendar
Daily running kilometers tracked in neon mint gradient for fitness monitoring.
Output
Python
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import LinearSegmentedColormap
import matplotlib.patches as mpatches
np.random.seed(125)
days = 365
running = np.zeros(days)
for i in range(days):
if np.random.random() > 0.35:
running[i] = np.random.uniform(3, 15)
weeks = 53
data = np.zeros((7, weeks))
for i, val in enumerate(running):
week = i // 7
day = i % 7
if week < weeks:
data[day, week] = val
# CLAUDE.md Neon Mint palette
colors_neon = ['#ffffff', '#e0fcf0', '#7df5cd', '#27F5B0']
cmap = LinearSegmentedColormap.from_list('neon_mint', 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=15)
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('Running Distance - Kilometers 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, ['Rest', '3-6km', '7-11km', '12+km'])]
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='Distance',
title_fontsize=9)
total = np.sum(running)
ax.annotate(f'{total:.0f} km total', xy=(0.98, 1.1), xycoords='axes fraction',
fontsize=11, color='#27F5B0', ha='right', fontweight='bold')
plt.tight_layout()
plt.subplots_adjust(bottom=0.25)
plt.show()
Library
Matplotlib
Category
Time Series
More Calendar Heatmap examples
☕