Snack #1 – Recipe for a Scorched Future

In our very first serving, we’re heating things up – literally.

Using real climate projections from the Copernicus Climate Data Store, we visualized how extreme heat days are expected to increase globally by 2030 and 2060. The dataset we used shows how often daily temperatures exceed what used to be considered a very hot day in the past – a warning sign baked right into the numbers.

With a spicy blend of Python, colors inspired by melted cheese and burnt crust, and a clear recipe for how to recreate the map yourself, this snack is both hot and hard to ignore.

🍟 Ingredients

🔥 Directions

  1. Download dataset from Copernicus Climate Data Store→ Save as dataset.nc in your local folder.
  2. Preheat the planet: select heat extremes (tx90pETCCDI)
  3. Choose your toppings: projections for 2030 (crispy) & 2060 (burned)
  4. Mix colors: build a pizza-inspired colormap
  5. Roll out dough: visualize on a Robinson projection
  6. Bake visually: coastlines & colormap with pcolormesh()
  7. Plate the result: export with transparent background
  8. Serve hot – as planetary topping on a crispy climate pizza
  9. Et voilà ! 🍕🍕

👌 Bon appétit

👨‍🍳 Chef’s Notes

1. Global heating is not abstract – it’s spatial.
The heat doesn’t rise evenly. Some regions get flambéed, others just simmer. Climate injustice comes pre-installed.

2. Looks like extreme heat days are the new normal topping.
What used to be a rare spicy surprise could be a part of the base sauce – especially under SSP5-8.5, the business-as-usual recipe.

3. Don’t underestimate data art.
When your data starts looking like a burnt pizza, you’re not making art. You’re forecasting disaster.

4. No region is safe from the oven.
Africa, South Asia, Latin America – served first, and hottest.
No delivery delay. No insulation.

5. Climate models don’t cook the numbers.
They just tell you what’s in the oven. And what’s in the oven is getting… crispy.

6. We’re not out of ingredients – just time.
The data shows us what’s baking. What’s missing? Appetite—for action.

7. It’s not a warning. It’s a serving suggestion.
And right now, we’re garnishing the future with inaction.

👨🏻‍💻 Recipe Code

!pip install cartopy

import cartopyimport xarray as xr
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import matplotlib.colors as mcolors

# === 1. Load dataset ===
ds = xr.open_dataset("dataset.nc")
heat = ds["tx90pETCCDI"]

# Select data for specific years
year_2030 = heat.sel(time="2030", method="nearest")
year_2060 = heat.sel(time="2060", method="nearest")

# === 2. Define color scale ===
vmin = 0
vmax = 100
# From cheese to tomato to burned crust
cmap = mcolors.LinearSegmentedColormap.from_list(
    "pizza_burn", ["#f5e7b2", "#e74c3c", "#6e2c00", "black"]
)
norm = mcolors.Normalize(vmin=vmin, vmax=vmax)

# === 3. Create figure and plots ===
fig, axs = plt.subplots(1, 2, figsize=(18, 8), subplot_kw={"projection": ccrs.Robinson()})
fig.patch.set_alpha(0.0)  # Transparent background for overlaying

titles = ["Crispy 2030", "Burned 2060"]

for ax, data, title in zip(axs, [year_2030, year_2060], titles):
    ax.set_facecolor("none")
    img = ax.pcolormesh(ds.lon, ds.lat, data, cmap=cmap, norm=norm, transform=ccrs.PlateCarree())
    ax.set_title(title, fontsize=14)
    ax.coastlines(color='lightgreen', linewidth=1.5)

# === 4. Add colorbar ===
cbar_ax = fig.add_axes([0.92, 0.25, 0.015, 0.5])
cb = plt.colorbar(img, cax=cbar_ax)
cb.set_label("Share of days hotter than historical 90th percentile (%)", fontsize=10)

# === 5. Add main title and save transparent image ===
fig.suptitle("Recipe for a Burned Future – Extreme Heat Days Globally", fontsize=16, fontweight="bold")
plt.tight_layout(rect=[0, 0, 0.9, 0.95])
plt.savefig("heatmap_overlay.png", dpi=300, transparent=True)
plt.close()

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *