The Colour of Days

This artwork reimagines the sky above your favorite city as a digital mosaic — a tapestry woven from a year's worth of cloud cover. Each image holds 365 days, 8,760 hours, every one a pixel of sky.

Bright white for clouds. Sky blue for clarity. Together, these shifting tones map an entire year into a single image — part data, part portrait.

It is a record and an homage: the soul of a city distilled into light and shadow, pixel by pixel, hour by hour.

Technical Architecture

1.8 million data points — five stages — one pipeline.

01

Data Acquisition

Open-Meteo Archive API

Hourly weather data fetched for 244+ cities worldwide — cloud cover & apparent temperature — spanning January to November 2024. Roughly 7,600 data points per city.

02

Data Processing

Python · JSON

Values are extracted, null-filtered, and normalized to a 0–1 scale. Cloud cover is intentionally inverted so a clear sky reads as light and overcast reads as dark.

03

Color Mapping

Spectra · config.json

Each normalized value maps to a color gradient — sky, sun, RdBu and more — via Spectra interpolation. A single heatmap can contain 100–200+ distinct shades.

04

Grid Rendering

SVG · CairoSVG

7,600<rect>elements arranged in a 72-column grid at A3 resolution (3508 × 4961 px). CairoSVG converts the vector output to a crisp, print-ready PNG.

05

Batch Processing

Docker · Bash

A containerised Python 3.9 image runs heatmap.py for every city sequentially. Volume mounts handle I/O. One command regenerates all 244 cities reproducibly.

Stack at a glance

Open-Meteo API

Weather data source

Python 3.9

Core processing

Spectra

Color interpolation

CairoSVG

SVG → PNG export

Final artworks ...

Barcelona
Paris
Seville
Cairo
Berlin