Ein Bump-Chart verfolgt Ränge über die Zeit: Jede Linie ist ein Element, und ihre Höhe zeigt nicht den Wert, sondern den Platz in der Rangliste – ideal, um Auf- und Abstiege sichtbar zu machen.
Manchmal interessiert nicht die absolute Größe, sondern die Reihenfolge: Wer liegt vorn, wer überholt wen? Dafür ist der Bump-Chart gemacht. Er wirft die genauen Werte bewusst weg und zeigt nur den Platz in der Rangliste – die geschwungenen Linien machen jedes Überholmanöver sofort sichtbar. Der Preis dafür: Ob zwischen Rang eins und zwei ein Hauch oder eine Welt liegt, sieht man nicht mehr. Ich zeige das an den Top-8-Vornamen für Neugeborene in Wien von 2014 bis 2023, getrennt nach Buben und Mädchen.
Die Daten
Die Daten stammen von der Stadt Wien (Vornamen Neugeborene, je Jahr eine eigene HTML-Seite). Es gibt keine fertige Datei zum Download, deshalb hole ich die HTML-Tabellen mit rvest direkt von den Jahresseiten und zerlege jede Seite in einen Block für Mädchen und einen für Buben.
Für ein lesbares Bild verfolge ich nur jene Namen, die im letzten Jahr (2023) in den Top 8 standen, dafür über alle Jahre hinweg. So bleiben die Linien zusammenhängend und das Diagramm übersichtlich. Übrig bleibt das Objekt vornamen mit Geschlecht, Jahr, Rang und Name.
Code: Daten aufbereiten
# Namen, die im letzten Jahr in den Top 8 standen – über alle Jahre verfolgenfocus_names <- vornamen_raw |>filter(jahr ==max(jahr), rang <=8) |>select(geschlecht, name) |>distinct()vornamen <- vornamen_raw |>inner_join(focus_names, by =c("geschlecht", "name")) |>filter(rang <=8) |>arrange(geschlecht, jahr, rang) |>select(geschlecht, jahr, rang, name)
Die Grafik
Den geschwungenen Verlauf erzeugt geom_bump() aus dem Paket ggbump; geom_point() setzt die Knoten je Jahr. Mit endpoints extrahiere ich die letzte Position jeder Linie und beschrifte sie rechts mit dem Namen. scale_y_reverse() dreht die Achse um, damit Rang 1 oben liegt, und facet_wrap() stellt Buben und Mädchen nebeneinander. Das dunkle Theme mit Navy-Hintergrund und goldener Schrift gibt der Grafik den Look der Website.
Was die Linien erzählen: Jede Linie ist ein Name, die Höhe sein Rang im jeweiligen Jahr, Rang 1 ganz oben. Kreuzen sich zwei Linien, hat ein Name den anderen überholt; eine flach oben verlaufende Linie ist ein Dauer-Favorit. Als Variante können Sie die Anzahl der verfolgten Namen erhöhen oder statt des Rangs den tatsächlichen Anteil auf die y-Achse legen – dann wird aus dem Bump-Chart ein klassisches Liniendiagramm.
Eigene Daten so darstellen?
Auch das Sammeln der Rohdaten per Web-Scraping gehört für mich zu einer vollständigen Datenanalyse – von der Quelle bis zur fertigen Grafik. Wenn Sie ggplot2 und ggbump selbst einsetzen möchten, zeige ich die Technik im Visualisierungskurs. Weitere moderne Diagrammtypen finden Sie im Ridgeline-Plot, im Raincloud-Plot und im Dumbbell-Chart.