Visualisierungen zeigen das Ausmaß der Bevölkerungsexplosion

Die Weltbevölkerung wächst exponentiell. Doch nicht in allen Regionen ist die Entwicklung gleich. Liniendiagramme mit R zeigen die Unterschiede in Europa, Afrika und den bevölkerungsreisten Ländern der Welt.
Zunächst soll das Bevölkerungswachstum von vier europäischen Ländern zwischen 1800 und 2015 grafisch dargestellt werden: Deutschland, Frankreich, Italien und Großbritannien. Die Daten stammen von http://data.worldbank.org. Eine umfangreiche CSV-Tabelle mit Daten zu 257 Staaten und Regionen lässt sich hier herunterladen.

library(ggplot2)
library(scales)
library(gridExtra)
pop <- read.csv("E:/Source/R-3.3.1/Projekte/population.csv", sep = ";", header = T, row.names = NULL, check.names = F)
pop <- t(pop)
pop <- data.frame(pop)
colnames(pop) <- as.character(unlist(pop[1,]))
pop = pop[-1, ]
pop <- cbind(Jahr = rownames(pop), pop)
rownames(pop) <- NULL
indx <- sapply(pop, is.factor)
pop[indx] <- lapply(pop[indx], function(x) as.numeric(as.character(x)))
p1 <- ggplot(aes(x = Jahr), data = pop) +
  geom_line(aes(y = Germany, color = "Deutschland"), size = 0.8)+
  geom_line(aes(y = France, color = "Frankreich"), size = 0.8)+
  geom_line(aes(y = Italy, color = "Italien"), size = 0.8)+
  geom_line(aes(y = `United Kingdom`, color = "Großbritannien"), size = 0.8)+
  scale_y_continuous(labels = comma)+
  ylab("Bevölkerung")+
  scale_x_continuous(breaks = seq(1800, 2020, 50))+
  scale_colour_manual(name="Land", values=c("Deutschland" = "red", 
     "Frankreich" = "blue", "Italien" = "green", "Großbritannien" = "black"))
p1

Bevölkerungswachstum in Europa

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

Das Skript: Die benötigten Pakete sind ggplot2 für die Grafik undscales zur einfachen Anpassung einer Grafik. Die Funktion read.csv() liest die Daten in das Skript ein. Eine Erklärung der Parameter lässt sich mit ?read.csv() anzeigen. Der Befehl pop <- t(pop) transformiert die Matrix, vertauscht also Reihen und Spalten. pop <- data.frame(pop) macht einen Data Frame daraus, und colnames(pop) <- as.character(unlist(pop[1,])) ernennt die erste Reihe zu Spaltennamen, danach wird sie mit pop = pop[-1, ] gelöscht. Gleiches widerfährt der ersten Spalte, nachdem die Spalte "Jahre" hinzugefügt worden ist. indx <- sapply(pop, is.factor) und pop[indx] <- lapply(pop[indx], function(x) as.numeric(as.character(x))) wandeln die Factors im Data Frame in den Typ numeric um. Dieses umständliche Vorgehen ist nötig, da R keine direkte Umwandling von factor in numeric kennt (siehe auch https://www.petitessen.net/factor/).
Nun geht es an die Grafik: ggplot(aes(x = Jahr), data = pop) übergibt zunächst nur die Werte für die X-Achse, die Spalte "Jahr". geom_line() liefert die Y-Werte, vergibt einen Namen für die Farbe und zeichnet die Linie in der angegebenen Stärke. scale_y_continuous(labels = comma) sorgt dafür, dass die Bevölkerungszahlen auf der Y-Achse ausgeschrieben werden und ylab("Bevölkerung") erledigt die Beschriftung. Schließlich legt scale_colour_manual() noch die Farben für die Linien fest. Nachfolgend noch zwei weitere Grafiken mit dem Bevölkerungswachstum in vier afrikanischen Ländern und in den bevölkerungsreichten Ländern. Vor allem die Kurve von Nigeria zeigt das Ausmaß der Bevölkerungsexplosion.

Bevölkerungswachstum in Afrika

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

Bevölkerungswachstum in China und Indien

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