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
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.
Schreibe einen Kommentar