Ein Stufendiagramm veranschaulicht den jährlichen Niederschlag in München von 1955 bis 2016

War 2015 ein eher trockenes Jahr oder hat es besonders viel geregnet? Ein Stufendiagramm liefert die Antwort. Diese besondere Form des Liniendiagramms eignet sich gut, um diskrete Wertänderungen wie etwa den Preis von Briefmarken abzubilden, oder eben Niederschlagswerte.
Mit Hilfe der beiden Packages dplyr und lubridate lässt sich das komfortabel bewerkstelligen. Die Idee zu dieser Grafik ist von Kay Cichini und seinem Blogbeitrag auf http://thebiobucket.blogspot.de/2012/09/get-historical-climate-data-from-knmi.html sowie der Adaptation von Christina Bergey auf http://christinabergey.com/blog/2012/09/quick-precipitation-plots-in-r/. Das Beispiel arbeitet aber etwas anders. Es nutzt eine andere Datenquelle, und es verwendet ggplot2, um die Grafik zu erstellen. Die Daten stammen vom Deutschen Wetterdienst (www.dwd.de). Unter ftp://ftp-cdc.dwd.de/pub/CDC/observations_germany/climate/daily/kl/historical/ finden sich Messwerte von 1086 Wetterstationen quer durch Deutschland. München hat die Nummer 3379.

library(ggplot2)
library(dplyr)
library(lubridate)

rain <- read.csv("E:/Source/R-3.3.1/Projekte/daten/precipitation.txt", sep = ";", header = T, row.names = NULL)
rain[rain == -999] = NA
rain$MESS_DATUM <- year(ymd(rain$MESS_DATUM))
rain <- rain %>%
  select(MESS_DATUM, NIEDERSCHLAGSHOEHE) %>%
  group_by(MESS_DATUM) %>%
  summarise(regen = sum(NIEDERSCHLAGSHOEHE))
av <- round(mean(rain$regen))

ggplot(rain)+
  geom_step(aes(x = MESS_DATUM, y = regen), colour = "blue")+
  theme_bw()+
  theme(axis.title.x = element_blank(), plot.title = element_text(size=12))+
  labs(title="MÜNCHEN, 48.1N, 11.6E, 530m", y  = "jährlicher Niederschlag (mm)", x = "")+
  scale_x_continuous(breaks=seq(1955, 2015, 5))+
  scale_y_continuous(breaks=seq(600, 1350, 100))+
  geom_hline(yintercept = av, linetype = 2)+
  geom_segment(aes(x = 1954, y = 1200, xend = 1954, yend = av + 10),
               arrow = arrow(length = unit(0.3, "cm")))+
  annotate("text", x = 1954, y = 1210, label = "Durchschnitt = 958mm", size = 3, hjust = 0)

Stufendiagramm jährlicher Niederschlag in München

Klicke auf das Bild für eine vergrößerte Darstellung

Das Skript: Die benötigten Pakete wurden bereits erwähnt. Die Daten stehen als Text-Datei bereit und werden mit read.csv() eingelesen. Fehlende Messwerte, in der Quelle als -999 angegeben, wandelt das Skript in NA um, damit R damit umgehen kann. rain$MESS_DATUM <- year(ymd(rain$MESS_DATUM)) wandelt in einem Rutsch die Datums-Angaben in den Typ "Date" um und extrahiert daraus die Jahre, da uns nur diese interessieren. Ohne lubridate wäre das äußerst umständlich zu bewerkstelligen. Nun kommt die Magie von dplyr ins Spiel. Mit dem Pipe-Operator werden auf einen Schlag die benötigten Spalten ausgewählt, die Jahre gruppiert und die Summe der Niederschläge berechnet. Schließlich erfolgt noch die Berechnung des Durchschnitts.
Der Plot: ggplot2 hält für Stufendiagramme die Funktion geom_step() bereit. Die Parameter sind die X- und Y-Werte sowie die Farbe. Nach der Beschriftung folgt die Achseneinteilung sowie die Zeichnung der Durchschnittslinie. Der Pfeil entsteht mit Hilfe von geom_segment() und der Funktion arrow(). Schließlich fügt annotate() noch eine Beschriftung ein. Ergebnis: Mit rund 850 mm Niederschlag war 2015 wie auch die Jahre davor eher trocken. 2016 lag ziemlich nahe am Durchschnitt.