16 min read

Hitzesommer 2026

Load packages

Vier Pakete: tidyverse fürs Datenwrangling und Plotten, rdwd für den Zugriff auf die DWD-Server, tinytable für die Tabellen im Post und ggpubr für das einheitliche Plot-Theme.

library(tidyverse)
library(rdwd)
library(tinytable)
library(ggpubr)

theme_set(theme_pubr())

Daten

Der DWD stellt im Climate Data Center Tagesklimadaten (u. a. Temperaturmittel/-minimum/-maximum und Niederschlag) je Wetterstation frei zum Download an (observations_germany/climate/daily/kl/), aufgeteilt in historical/ (abgeschlossene Jahre) und recent/ (laufendes Jahr plus die letzten ca. 500 Tage). Ein fertiges Deutschland-Tagesmittel bietet der DWD dafür nicht an – das gibt es nur auf Monats-/Jahresebene unter regional_averages_DE/ (bereits im vorherigen Post genutzt). Für den Sommer 2026 wird hier deshalb selbst ein einfaches Tagesmittel über je eine Station pro Bundesland gebildet, mit Hilfe des R-Pakets {rdwd}, das den Zugriff auf die DWD-Server kapselt.

Monatskontext: Sommer 2026 im langfristigen Vergleich

Als Einordnung zunächst die Monatsmittel für Deutschland, wie sie im vorherigen Post (wetterdaten_monat.csv) aufbereitet wurden.

Monatsdaten laden

Hier stehen die Daten des DWD bereit – die bereits im Vorpost aufbereitete CSV mit Monatsmitteln je Bundesland wird direkt von GitHub nachgeladen:

wetterdaten_monat <- read_csv(
  "https://raw.githubusercontent.com/sebastiansauer/data_se/refs/heads/master/content/post/2026-08-14-wetterdaten-des-dwd-aufbereiten/wetterdaten_monat.csv",
  show_col_types = FALSE
)

Datenquelle: Deutscher Wetterdienst (DWD), Climate Data Center, opendata.dwd.de, Lizenz: CC BY 4.0

Referenzmittel berechnen

Berechnen wir die Temperatur und Niederschlag für den Sommer 2026 (Juni, Juli) - im Vergleich zu einem langjährigen Referenzwert. Zuerst nur die Zeilen für Deutschland insgesamt behalten und die Referenzperiode festlegen.

deutschland_monat <- wetterdaten_monat |>
  filter(region == "Deutschland")

ref_start <- 1991
ref_end   <- 2020

Referenzmittel je Monat berechnen, gemittelt über die WMO-Normalperiode 1991–2020.

klimatologie_monat <- deutschland_monat |>
  filter(year >= ref_start, year <= ref_end) |>
  group_by(month) |>
  summarise(
    temp_ref   = mean(temp, na.rm = TRUE),
    precip_ref = mean(precip, na.rm = TRUE),
    .groups = "drop"
  )

Sommer 2026 vs. Referenzmittel

Sommer 2026 herausfiltern und dem Referenzmittel gegenüberstellen.

sommer_2026 <- deutschland_monat |>
  filter(year == 2026, month %in% 6:8) |>
  left_join(klimatologie_monat, by = "month") |>
  mutate(
    temp_abw   = temp - temp_ref,  # Abweichung vom Referenzmittel
    monatsname = month.name[month]
  )

Als Tabelle:

sommer_2026 |>
  select(monatsname, temp, temp_ref, temp_abw, precip, precip_ref) |>
  tt() |>
  format_tt(digits = 2)
monatsnametemptemp_reftemp_abwprecipprecip_ref
June191636676
July20181.24487

Temperaturverlauf im Plot

Zunächst die Sommermitteltemperatur je Jahr berechnen.

sommer_temp_jahr <- deutschland_monat |>
  filter(month %in% 6:8) |>
  group_by(year) |>
  summarise(sommer_temp = mean(temp, na.rm = TRUE), .groups = "drop")

Im Jahresverlauf geplottet, der aktuelle Sommer (2026) ist farbig markiert, dazu ein dezenter geglätteter Trend (geom_smooth(), ohne Konfidenzband, dünn und grau, damit er die Datenpunkte nicht überdeckt).

sommer_temp_jahr |>
  ggplot(aes(x = year, y = sommer_temp)) +
  geom_line(color = "grey60") +
  geom_smooth(se = FALSE, color = "grey30", linewidth = 0.7) +
  geom_point(aes(color = year == 2026), size = 4) +
  scale_color_manual(values = c(`TRUE` = "firebrick", `FALSE` = "grey40"), guide = "none") +
  labs(
    title = "Sommermitteltemperatur (Jun-Aug) Deutschland",
    x = NULL, y = "Temperatur (°C)"
  )

Hinweis: Der Wert für 2026 basiert auf den bislang verfügbaren Monatsdaten (Juni + Juli), der August ist beim DWD auf Monatsebene noch nicht veröffentlicht. Er liegt schon jetzt auf dem Niveau der bisherigen Rekordsommer.

Tagesdaten: Hitzewellen im Sommer 2026

Stationsauswahl: je Bundesland wird die Station mit der längsten laufenden Messreihe herangezogen (per == "recent"), mit bis zu 5 Ausweichkandidaten, falls eine Station in den letzten 90 Tagen zu viele fehlende Temperaturwerte hat (manche automatischen Stationen liefern TXK/TNK nicht durchgängig).

Data Dictionary: DWD Tageswerte (Datensatz kl)

Quelle: DWD Climate Data Center, observations_germany/climate/daily/kl/ (Metadatendatei Metadaten_Parameter_klima_tag_<ID>.txt in jedem Stations-ZIP). Fehlwert-Code -999, wird von readDWD() automatisch zu NA.

KürzelBedeutungEinheit
STATIONS_IDStations-ID
MESS_DATUMMessdatumDatum
QN_3Qualitätsniveau der Parameter FX, FMCode
FXWindspitze (max. Böe des Tages)m/s
FMWindgeschwindigkeit, Tagesmittelm/s
QN_4Qualitätsniveau der übrigen Parameter (RSK…TGK)Code
RSKNiederschlagshöhe, Tagessummemm
RSKFNiederschlagsform (0=kein, 1=Regen, 4=Mischform, 6=Regenschauer, 7=Schnee, 8=Schneeschauer, 9=Hagel …)Code
SDKSonnenscheindauer, Tagessummeh
SHK_TAGSchneehöhecm
NMBedeckungsgrad, TagesmittelAchtel
VPMDampfdruck, TagesmittelhPa
PMLuftdruck (Stationsniveau), TagesmittelhPa
TMKLufttemperatur 2 m, Tagesmittel°C
UPMRelative Luftfeuchte, Tagesmittel%
TXKLufttemperatur 2 m, Tagesmaximum°C
TNKLufttemperatur 2 m, Tagesminimum°C
TGKLufttemperatur 5 cm über Boden, Tagesminimum°C
eorZeilenende-Marker (“end of record”)

Für die Auswertung unten genutzt: TXK (Kriterium Hitzetag ≥ 30 °C), TNK (Kriterium Tropennacht ≥ 20 °C), TMK (Tagesmittel) und RSK (Niederschlag, aktuell nur mitgeführt, nicht separat ausgewertet).

Messstationen auswählen

Je Bundesland die 5 Stationen mit der längsten laufenden Messreihe als Kandidaten vormerken (nicht nur die eine “beste”, falls diese später unvollständige Werte liefert).

Kandidaten ermitteln

data("metaIndex") # Stellt Infos zu den Messtationen bereit (z.B. Lage der Messstation)

kandidaten <- metaIndex |>
  filter(res == "daily", var == "kl", per == "recent", hasfile) |>
  distinct(Stations_id, Bundesland, von_datum) |>
  arrange(Bundesland, von_datum) |>
  group_by(Bundesland) |>
  slice_head(n = 5) |>
  summarise(ids = list(Stations_id), .groups = "drop")

Hilfsfunktion: Station laden

Hilfsfunktion, die die Tageswerte einer einzelnen Station herunterlädt und einliest.

lade_station <- function(id) {
  link <- selectDWD(id = id, res = "daily", var = "kl", per = "recent")
  file <- dataDWD(link, read = FALSE, dir = tempdir(), quiet = TRUE)
  readDWD(file, varnames = FALSE) |>
    as_tibble() |>
    transmute(
      Stations_id = STATIONS_ID,
      Datum = MESS_DATUM,
      TXK, TNK, TMK, RSK
    )
}

Hilfsfunktion: beste Station wählen

Hilfsfunktion, die die Kandidaten der Reihe nach durchprobiert und die erste brauchbare Station zurückgibt: die erste, bei der in den letzten 90 Tagen mehr als 80 % der Tagesmaxima (TXK) tatsächlich vorhanden sind.

waehle_station <- function(ids) {
  for (id in ids) {
    df <- tryCatch(lade_station(id), error = function(e) NULL)
    if (is.null(df) || nrow(df) == 0) next
    letzte_90 <- df |> filter(Datum >= max(Datum) - 90)
    if (mean(!is.na(letzte_90$TXK)) > 0.8) return(df)
  }
  NULL
}

Stationsdaten zusammenstellen

Für jedes Bundesland wird jetzt tatsächlich eine Station geladen.

stationsdaten <- kandidaten |>
  mutate(daten = map(ids, waehle_station)) |>
  select(-ids) |>
  unnest(daten)

Hinweis:

“kl” steht für Klimatageswerte – das ist der DWD-interne Kürzel für den Datensatz mit den kombinierten täglichen Klimastationswerten (Temperatur, Niederschlag, Sonnenschein, Wind, Luftdruck etc. in einer Datei je Station).

Aus den 16 gewählten Stationen wird nun je Tag ein einfaches bundesweites Mittel gebildet (ungewichtete Mittelung über die Stationen) und auf den Zeitraum ab Sommer 2025 zugeschnitten – das reicht für den Vergleich Sommer 2025 vs. 2026 weiter unten.

Wetterdaten pro Tag

Bundesweites Tagesmittel

deutschland_tag <- stationsdaten |>
  group_by(Datum) |>
  summarise(
    TXK = mean(TXK, na.rm = TRUE),
    TNK = mean(TNK, na.rm = TRUE),
    TMK = mean(TMK, na.rm = TRUE),
    RSK = mean(RSK, na.rm = TRUE),
    .groups = "drop"
  )

deutschland_tag |> 
  head() |> 
  tt()
DatumTXKTNKTMKRSK
2025-02-115.27500-0.668752.212500.93750
2025-02-123.37500-0.712501.275000.65625
2025-02-132.08125-2.33750-0.056252.12500
2025-02-141.54375-1.98125-0.243750.11250
2025-02-151.35000-2.71875-0.581250.27500
2025-02-160.97500-5.19375-1.762500.37500

Zeitraum zuschneiden

Zeitraum ab Sommer 2025 zuschneiden – das reicht für den Vergleich Sommer 2025 vs. 2026 weiter unten.

sommer_tage <- deutschland_tag |>
  filter(Datum >= as.Date("2025-06-01"))

Hitzetage (Tagesmaximum ≥ 30 °C)

Hilfsfunktion: Länge einer Hitzewelle

Hilfsfunktion für die längste zusammenhängende Hitzewelle: rle() (“run-length encoding”) zählt Längen zusammenhängender TRUE/FALSE-Serien – hier die längste Serie aufeinanderfolgender Hitzetage (TXK ≥ Schwelle).

hitzewelle_laenge <- function(txk, schwelle = 30) {
  ist_heiss <- !is.na(txk) & txk >= schwelle
  laengen <- rle(ist_heiss)
  max(c(0, laengen$lengths[laengen$values]))
}

Hitzetage und Hitzewellen je Sommer

Daten je Sommer, sowie die längste zusammenhängende Hitzewelle (aufeinanderfolgende Hitzetage):

sommer_tage |>
  mutate(jahr = year(Datum), monat = month(Datum)) |>
  filter(monat %in% 6:8) |>
  group_by(jahr) |>
  summarise(
    hitzetage       = sum(TXK >= 30, na.rm = TRUE),
    tropennaechte    = sum(TNK >= 20, na.rm = TRUE),
    laengste_hitzewelle = hitzewelle_laenge(TXK[order(monat)]),
    .groups = "drop"
  ) |>
  tt() |>
  format_tt(digits = 1)
jahrhitzetagetropennaechtelaengste_hitzewelle
2025703
20261725

Tagesmaxima im Vergleich

Die Tagesmaxima beider Sommer im direkten Vergleich, ausgerichtet auf den Tag im Jahr (Sommer 2025 vs. 2026 an derselben x-Position), dazu je Jahr ein dezenter geglätteter Trend (gestrichelt, dünn, ohne Konfidenzband).

sommer_tage |>
  filter(month(Datum) %in% 6:8) |>
  ggplot(aes(x = yday(Datum), y = TXK, color = factor(year(Datum)))) +
  geom_hline(yintercept = 30, linetype = "dashed", color = "firebrick") +
  geom_line(alpha = 0.5) +
  geom_smooth(se = FALSE, linewidth = 0.8, linetype = "solid") +
  labs(
    title = "Tagesmaximaltemperatur Deutschland, Sommer 2025 vs. 2026",
    subtitle = "Gestrichelte Linie: Hitzetag-Schwelle (30 °C)",
    x = "Tag im Jahr", y = "Tagesmaximum (°C)", color = "Jahr"
  )

Da der Sommer 2026 zum Zeitpunkt dieser Auswertung (15.08.) noch nicht vorbei ist, sind die Werte für 2026 bislang nur bis Mitte August gezählt – die Vergleichszahlen für 2025 sind entsprechend vollständiger.

Jeder Tag im Sommer 2026 vs. langjähriger Referenzwert (1991-2020)

Für einen echten Tageswert-Vergleich reicht per = "recent" nicht aus (deckt nur gut 1,5 Jahre ab). Für dieselben 16 Referenzstationen werden deshalb zusätzlich die historical-Dateien geladen, daraus für jeden Kalendertag (unabhängig vom Jahr) ein klimatologischer Referenzwert über 1991-2020 gebildet – geglättet mit einem ±5-Tage-Fenster um den jeweiligen Tag des Jahres, um Tag-zu-Tag-Rauschen zu reduzieren – und jedem Tag des Sommers 2026 gegenübergestellt.

Historische Tagesdaten laden

Dieselben 16 Stationen wie oben, aber diesmal die historical-Dateien.

ausgewaehlte_ids <- unique(stationsdaten$Stations_id)

lade_historisch <- function(id) {
  link <- selectDWD(id = id, res = "daily", var = "kl", per = "historical")
  file <- dataDWD(link, read = FALSE, dir = tempdir(), quiet = TRUE)
  readDWD(file, varnames = FALSE) |>
    as_tibble() |>
    transmute(
      Stations_id = STATIONS_ID,
      Datum = MESS_DATUM,
      TXK, TNK, TMK
    )
}

Für jede Station laden – falls eine Station keine historical-Datei hat, wird sie via tryCatch() einfach übersprungen statt den ganzen Chunk abzubrechen.

historisch <- map_dfr(ausgewaehlte_ids, function(id) {
  tryCatch(lade_historisch(id), error = function(e) NULL)
})

Daraus wieder ein bundesweites Tagesmittel bilden – diesmal über die komplette historische Zeitreihe.

deutschland_hist_tag <- historisch |>
  group_by(Datum) |>
  summarise(
    TXK = mean(TXK, na.rm = TRUE),
    TNK = mean(TNK, na.rm = TRUE),
    TMK = mean(TMK, na.rm = TRUE),
    .groups = "drop"
  )

Methodik: Wie entsteht der Referenzwert je Tag?

Referenzperiode: Als Bezugszeitraum dient 1991–2020 – die aktuelle WMO-Standardnormalperiode (30 Jahre), der weltweit übliche Maßstab dafür, was an einem Kalendertag “normal” ist.

Warum glätten? Ein einzelner Kalendertag (z. B. der 27. Juni) hat über 30 Jahre nur 30 bundesweite Tagesmittelwerte – statistisch wenig und tagesscharf stark verrauscht. Ein einzelner ungewöhnlich kühler oder warmer 27. Juni in den 1990ern würde den Referenzwert für genau diesen Tag spürbar verzerren.

Das ±5-Tage-Fenster: Statt nur des exakten Kalendertags wird ein Fenster von 5 Tagen davor bis 5 Tagen danach herangezogen. Für den 27. Juni fließen also alle Tage vom 22. Juni bis 2. Juli aus allen 30 Referenzjahren ein – bis zu 11 Tage × 30 Jahre ≈ 330 Werte statt nur 30. Der Mittelwert daraus ist der geglättete Referenzwert für “27. Juni”. Das folgt derselben Grundidee wie offizielle DWD/WMO-Klimanormalen (dort oft per harmonischer Glättung/Fourierreihen berechnet), hier vereinfacht als gleitendes Mittel über ein festes Tagesfenster.

Konkret berechnet die Funktion klimatologie_tag() für einen Zieltag (doy_ziel, Tag des Jahres) den Abstand zu jedem Tag der Referenzperiode, behandelt diesen Abstand zirkulär über den Jahreswechsel hinweg (pmin(diff, 366 - diff), relevant z. B. für den 1. Januar, für den sonst die letzten Dezembertage fälschlich “weit entfernt” wären), filtert auf Abstand ≤ 5 Tage und mittelt TXK/TNK/TMK über die verbleibenden Zeilen. Jeder Sommertag 2026 bekommt so über seinen Tag-des-Jahres (doy) per left_join() den passenden geglätteten Referenzwert zugewiesen, woraus sich die Abweichung (TMK - TMK_ref usw.) ergibt.

Referenzwert berechnen

Referenzperiode und Fenstergröße festlegen, dann alle Tage der Referenzperiode mit ihrem Tag-des-Jahres (doy) versehen.

ref_start_tag <- 1991
ref_end_tag   <- 2020
fenster       <- 5  # Tage vor/nach dem Zieltag

hist_ref <- deutschland_hist_tag |>
  filter(year(Datum) >= ref_start_tag, year(Datum) <= ref_end_tag) |>
  mutate(doy = yday(Datum))

Die Funktion, die für einen Zieltag den geglätteten Referenzwert berechnet (Details siehe Methodik oben).

klimatologie_tag <- function(doy_ziel) {
  diff <- abs(hist_ref$doy - doy_ziel)
  diff <- pmin(diff, 366 - diff)  # zirkulaer um den Jahreswechsel
  sel  <- hist_ref[diff <= fenster, ]
  tibble(
    doy     = doy_ziel,
    TXK_ref = mean(sel$TXK, na.rm = TRUE),
    TNK_ref = mean(sel$TNK, na.rm = TRUE),
    TMK_ref = mean(sel$TMK, na.rm = TRUE)
  )
}

Referenzwert für jeden vorkommenden Tag des Sommers 2026 berechnen.

sommer_2026_tag <- deutschland_tag |>
  filter(year(Datum) == 2026, month(Datum) %in% 6:8) |>
  mutate(doy = yday(Datum))

klimatologie_sommer <- map_dfr(unique(sommer_2026_tag$doy), klimatologie_tag)

Referenzwerte anfügen und die Abweichung berechnen.

sommer_2026_tag <- sommer_2026_tag |>
  left_join(klimatologie_sommer, by = "doy") |>
  mutate(
    TXK_abw = TXK - TXK_ref,
    TNK_abw = TNK - TNK_ref,
    TMK_abw = TMK - TMK_ref
  )

Vergleich: 2026 vs. langjähriges Mittel

Variante der Hitzewellen-Grafik von oben: statt Sommer 2025 vs. 2026 hier 2026 direkt gegen den geglätteten langjährigen Referenzwert (1991-2020, siehe Methodik oben) – dieselben Tagesmaxima, nur mit dem langfristigen Mittel statt dem Vorjahr als Vergleichslinie.

klimatologie_vergleich <- sommer_2026_tag |>
  select(Datum, TXK, TXK_ref) |>
  pivot_longer(cols = c(TXK, TXK_ref), names_to = "reihe", values_to = "temperatur") |>
  mutate(reihe = recode(reihe,
    TXK     = "2026 (tatsächlich)",
    TXK_ref = "Referenzmittel 1991-2020"
  ))
klimatologie_vergleich |>
  ggplot(aes(x = Datum, y = temperatur, color = reihe)) +
  geom_hline(yintercept = 30, linetype = "dashed", color = "grey50") +
  geom_line(linewidth = 0.9) +
  scale_color_manual(values = c(
    "2026 (tatsächlich)"       = "firebrick",
    "Referenzmittel 1991-2020" = "grey40"
  )) +
  labs(
    title = "Tagesmaximaltemperatur 2026 vs. langjähriger Referenzwert",
    subtitle = "Gestrichelte Linie: Hitzetag-Schwelle (30 °C)",
    x = NULL, y = "Tagesmaximum (°C)", color = NULL
  )

Tägliche Abweichung als Balkendiagramm

Als Balkendiagramm über den Sommer: positive Abweichungen (rot) vs. negative (blau), Tag für Tag, dazu ein dezenter geglätteter Gesamttrend (aes(group = 1), damit die Glättung nicht durch die rot/blau-Einfärbung der Balken in zwei Gruppen zerfällt).

sommer_2026_tag |>
  ggplot(aes(x = Datum, y = TMK_abw, fill = TMK_abw > 0)) +
  geom_col() +
  geom_smooth(aes(group = 1), se = FALSE, color = "grey20", linewidth = 0.7) +
  scale_fill_manual(values = c(`TRUE` = "firebrick", `FALSE` = "steelblue"), guide = "none") +
  labs(
    title = "Tagesmitteltemperatur 2026 vs. Referenzwert 1991-2020",
    subtitle = "Abweichung je Tag, geglättet mit ±5-Tage-Fenster um den Kalendertag",
    x = NULL, y = "Abweichung (°C)"
  )

Kalenderansicht

Dieselbe Abweichung, als Kalender: eine Kachel je Tag, Füllfarbe als Funktion der Abweichung der Tagesmitteltemperatur vom langjährigen Referenzwert (blau = kühler, rot = wärmer als 1991-2020).

Kalenderdaten aufbereiten

Wochentags-Kürzel auf Deutsch, sowie Monat, Tagesnummer und Wochentag je Datum ableiten.

wochentag_de <- c("Mo", "Di", "Mi", "Do", "Fr", "Sa", "So")

kalender_daten <- sommer_2026_tag |>
  mutate(
    monat     = factor(month(Datum), levels = 6:8, labels = c("Juni", "Juli", "August")),
    tag       = day(Datum),
    wd_num    = wday(Datum, week_start = 1),  # 1 = Montag ... 7 = Sonntag
    wochentag = factor(wochentag_de[wd_num], levels = wochentag_de)
  )

Zusätzlich die Position im Kalenderraster berechnen: in welcher Zeile (Woche) des Monats der jeweilige Tag steht.

kalender_daten <- kalender_daten |>
  mutate(
    # Wochentag, mit dem der Monat beginnt (noetig, um die Kalenderzeile
    # des 1. Tags korrekt einzuruecken)
    monatsbeginn_wd = wday(floor_date(Datum, "month"), week_start = 1),
    # Woche im Monat: Tag + Verschiebung durch den Monatsbeginn, durch
    # 7 geteilt und aufgerundet -> 1. Kalenderzeile, 2. Kalenderzeile, ...
    kw_monat = ceiling((tag + monatsbeginn_wd - 1) / 7)
  )

Kalenderdiagramm

Die Kacheln selbst: eine Kachel je Tag, eingefärbt nach Abweichung.

kalender_plot <- ggplot(kalender_daten, aes(x = wochentag, y = -kw_monat, fill = TMK_abw)) +
  geom_tile(color = "white", linewidth = 0.6) +
  geom_text(aes(label = tag), size = 3, color = "grey20") +
  scale_fill_gradient2(
    low = "steelblue", mid = "grey95", high = "firebrick",
    midpoint = 0, name = "Abweichung\n(°C)"
  )

Je Monat eine eigene Kalenderfläche (facet_wrap), Achsenbeschriftung und Gitter für die Kalenderoptik ausgeblendet.

kalender_plot +
  facet_wrap(~monat, ncol = 1, scales = "free_y") +
  labs(
    title = "Kalenderansicht: Tagesmitteltemperatur 2026 vs. Referenzwert 1991-2020",
    x = NULL, y = NULL
  ) +
  theme_minimal(base_size = 12) +
  theme(
    axis.text.y  = element_blank(),
    axis.ticks.y = element_blank(),
    panel.grid   = element_blank(),
    strip.text   = element_text(face = "bold")
  )

Tageswerte Sommer 2026 vs. Referenzwert

Vollständige Tageswerte für den Sommer 2026, mit Referenzwert und Abweichung:

sommer_2026_tag |>
  transmute(
    Datum,
    TXK, TXK_ref, TXK_abw,
    TMK, TMK_ref, TMK_abw
  ) |>
  tt() |>
  format_tt(digits = 1)
DatumTXKTXK_refTXK_abwTMKTMK_refTMK_abw
2026-06-0123212.2718162
2026-06-0225213.4818162.36
2026-06-032021-0.8416160.2
2026-06-042121-0.4316160.3
2026-06-052022-1.081516-1.17
2026-06-0623221.5217160.48
2026-06-072122-0.4817170.05
2026-06-0824222.4218171.52
2026-06-092022-1.981517-1.03
2026-06-101822-3.31317-3.19
2026-06-111822-3.411317-3.18
2026-06-121922-3.091517-1.71
2026-06-1322220.3717170.43
2026-06-141922-2.81517-1.93
2026-06-151922-2.741417-2.29
2026-06-1622220.781617-0.15
2026-06-1725223.8119172.63
2026-06-1830228.3223176.85
2026-06-19332211.3225178.7
2026-06-20322210.125178.2
2026-06-2130228.3324176.77
2026-06-2229226.7823176.25
2026-06-2329227.0823176
2026-06-24332210.3625178.17
2026-06-25332210.2726179.12
2026-06-26352312.57281710.09
2026-06-27382315.01301812.04
2026-06-28342311.36281810.38
2026-06-2927233.6722184.22
2026-06-3027233.7621183.27
2026-07-0125241.3920181.43
2026-07-0226242.7520181.44
2026-07-032324-0.651818-0.48
2026-07-0424240.081818-0.35
2026-07-052424-0.0219180.57
2026-07-0624240.0719180.74
2026-07-0726241.9921182.19
2026-07-0824240.4619180.76
2026-07-0925231.2419180.86
2026-07-1028234.4721182.95
2026-07-1128235.1722184.02
2026-07-1230236.2823184.69
2026-07-1330236.5623184.98
2026-07-1428244.7123184.17
2026-07-1528243.9522193.38
2026-07-1629245.2822193.57
2026-07-1728244.4421192.46
2026-07-1824240.3919190.63
2026-07-192224-2.521719-2.24
2026-07-202124-3.451619-2.83
2026-07-212425-1.061719-1.91
2026-07-222225-3.141719-2.61
2026-07-232225-3.031719-2.89
2026-07-242425-0.941720-2.11
2026-07-2529254.1721201.21
2026-07-2625250.2120200.18
2026-07-272325-2.151820-1.29
2026-07-2827251.4320200.05
2026-07-2933257.9925205.01
2026-07-30362510.7526205.86
2026-07-3130254.2123202.85
2026-08-012525-0.921920-0.36
2026-08-0227251.7320200.69
2026-08-0332256.8524204.17
2026-08-0432256.7725205.54
2026-08-0531255.6925205.32
2026-08-0626251.1921201.58
2026-08-072325-1.621820-1.55
2026-08-0827252.120190.2
2026-08-0932257.3323193.89
2026-08-1030255.323193.71
2026-08-1125240.171919-0.14
2026-08-1228243.4619190.52
2026-08-1331246.4922193.23
2026-08-1434249.724195.8

Top-10 Tage mit größter Abweichung zum Referenzwert

Die zehn Tage mit der größten positiven Abweichung vom langjährigen Mittel (Tagesmittel):

sommer_2026_tag |>
  arrange(desc(TMK_abw)) |>
  slice_head(n = 10) |>
  transmute(Datum, TMK, TMK_ref, TMK_abw) |>
  tt() |>
  format_tt(digits = 1)
DatumTMKTMK_refTMK_abw
2026-06-27301812
2026-06-28281810
2026-06-26281710
2026-06-2526179
2026-06-1925179
2026-06-2025178
2026-06-2425178
2026-06-1823177
2026-06-2124177
2026-06-2223176

Fazit

Sowohl die langfristige Monatsreihe der Bundesland-Gebietsmittel als auch die selbst gebildeten Tagesmittel aus Stationsdaten zeigen für den Sommer 2026 ein deutlich überdurchschnittliches Bild: Die Sommertemperatur bewegt sich auf dem Niveau der bisherigen Rekordsommer, und schon bis Mitte August wurden mehr als doppelt so viele Hitzetage und eine längere Hitzewelle registriert als im gesamten Sommer 2025.