All work
Cyclone Freddy crossing the Indian Ocean, its track coloured by intensity, with the chapter card and timeline
hybridcase-study

Cyclone Freddy: five weeks, one storm

An interactive map story of Tropical Cyclone Freddy, the longest-lasting tropical cyclone on record. It follows the storm across the Indian Ocean and into the days of extreme rain over southern Malawi in March 2023, built from IBTrACS best-track data and CHIRPS satellite rainfall.

Role
Climate scientist and developer
Duration
2026
Client
Personal project

Cyclone Freddy lasted 36 days, the longest tropical cyclone on record. It crossed the whole southern Indian Ocean, struck Madagascar and Mozambique, looped back over the Mozambique Channel, and then stalled over southern Malawi, where days of extreme rain turned hillsides into debris flows. This project tells that story on a map, from public scientific data. See it live.

The data

The track

Freddy's best track comes from IBTrACS, NOAA's archive of every agency's cyclone records: 305 positions, one every three hours, from 4 February to 14 March 2023. Wind speeds are the US agency's one-minute winds, because those are what the Saffir-Simpson categories are defined on. The official agency for this ocean reports ten-minute winds, which run lower, so mixing the two would make the colours jump. Landfalls are found where the record's distance-to-land drops from above zero to zero: Madagascar on 21 February, Mozambique on 24 February, and Mozambique again on 11 March.

How much rain: CHIRPS

Daily rainfall for 6 to 16 March comes from CHIRPS, which blends satellite estimates with rain gauges on a grid of about 5 km. It is the standard dataset for rainfall monitoring across Africa. Each day is cut to a box around Malawi and central Mozambique, coloured in fixed classes, and accumulated. District averages come from overlaying the 28 district boundaries on the grid: over the whole window, Mulanje averaged 184 mm, Phalombe 183 mm and Thyolo 176 mm.

When and where: NASA IMERG

The hourly animation uses NASA's IMERG, which merges microwave and infrared satellite observations every half-hour on a 10 km grid. Instead of downloading 336 global files of about 10 MB each, the pipeline asks NASA's OPeNDAP server for just the cells over the story area, a few KB per half-hour. Pairs of half-hours are summed into 168 hourly grids and packed into one 1.7 MB file. As a check, the heaviest rain on the night of 11 March sits exactly where Freddy came ashore near Quelimane. The heaviest single hour in Malawi was 34.4 mm, at 03:00 local time on 14 March.

Why two rainfall datasets

Over the same days, IMERG and CHIRPS agree on the four districts hit hardest, but there IMERG's totals are about twice as large. Further north the two are closer, and sometimes reversed. Satellite estimates often run high in intense tropical rain, while CHIRPS smooths out local extremes and depends on sparse gauges, so the true amount for any one place can sit on either side. So the story uses each for what it does best: IMERG to show when and where the rain fell, CHIRPS for how much. Every figure on screen names its source.

Rain over 10 to 16 March 2023, district averages

Same districts at the top, about twice the totals in the south. Nkhotakota, further north, reverses.Source: CHIRPS v2.0 (UCSB CHC) and GPM IMERG Final V07B (NASA GES DISC), district means
View data
DistrictCHIRPS (mm)IMERG (mm)
Mulanje182359
Phalombe180333
Thyolo176314
Nsanje141323
Zomba135196
Machinga136183
Mangochi135149
Nkhotakota12882
Drawing it

From data to pixels

The map is Mapbox GL JS, driven by one animation clock outside React, so the map updates every frame while the interface updates about ten times a second. The storm moves along a smooth curve through the three-hourly positions, and its symbol is the hurricane glyph, mirrored because Southern Hemisphere cyclones turn clockwise. The camera settles onto the storm and holds it still while the ocean scrolls past.

The hourly rain is coloured in the browser. Each frame blends the two neighbouring hours and smooths the 10 km grid four times finer, so the rain sweeps across the map instead of jumping. It fades in from 0.5 mm per hour, so light rain stays see-through and the downpours stand out.

What it cannot tell you

A 5 to 10 km grid cannot resolve Mulanje mountain, so the heaviest rain on its slopes is spread over neighbouring cells, and rain gauges in the worst-hit places recorded more than either dataset shows. The agencies stopped tracking Freddy on 14 March, but the rain continued to the 16th. And no formal attribution study of Freddy exists, so the story makes no claim about the role of climate change.

Sources

WMO: Freddy is the longest tropical cyclone on record · OCHA Malawi Flash Update No. 11 · IBTrACS, NOAA NCEI · CHIRPS, UCSB CHC · GPM IMERG V07B, NASA GES DISC · geoBoundaries

Gallery