So erstellen Sie eine Bevölkerungspyramide in R

Von Fabian
Kategorie: R
Lesezeit: 4 Minuten

Eine Bevölkerungspyramide ist eine Grafik, die die Alters- und Geschlechtsverteilung einer bestimmten Bevölkerung zeigt. Es ist ein nützliches Diagramm, um die Zusammensetzung einer Bevölkerung sowie den aktuellen Trend des Bevölkerungswachstums leicht zu verstehen.

Wenn eine Bevölkerungspyramide eine rechteckige Form hat, ist dies ein Hinweis darauf, dass eine Bevölkerung langsamer wächst. ältere Generationen werden durch neue Generationen etwa gleicher Größe ersetzt.

Wenn eine Bevölkerungspyramide eine Pyramidenform hat, ist dies ein Hinweis darauf, dass eine Bevölkerung schneller wächst. ältere Generationen bringen größere neue Generationen hervor.

Innerhalb des Diagramms wird das Geschlecht auf der linken und rechten Seite angezeigt, das Alter wird auf der y-Achse angezeigt und der Prozentsatz oder die Menge der Bevölkerung wird auf der x-Achse angezeigt.

In diesem Tutorial wird erklärt, wie Sie eine Bevölkerungspyramide in R erstellen.

Erstellen einer Bevölkerungspyramide in R

Angenommen, wir haben den folgenden Datensatz, der die prozentuale Zusammensetzung einer Bevölkerung nach Alter (0 bis 100 Jahre) und Geschlecht (M = „männlich“, F = „weiblich“) zeigt:

#Machen Sie dieses Beispiel reproduzierbar
set.seed(1)

#Dataframe erstellen
data <- data.frame(age = rep(1:100, 2), gender = rep(c("M", "F"), each = 100))

#Populationsvariable hinzufügen
data$population <- 1/sqrt(data$age) * runif(200, 10000, 15000)

#Bevölkerungsvariable in Prozent umwandeln
data$population <- data$population / sum(data$population) * 100

# Die ersten sechs Zeilen des Datensatzes anzeigen
head(data)

  age gender population
1   1      M   2.424362
2   2      M   1.794957
3   3      M   1.589594
4   4      M   1.556063
5   5      M   1.053662
6   6      M   1.266231

Mit der ggplot2-Bibliothek können wir eine grundlegende Populationspyramide für diesen Datensatz erstellen :

#ggplot2 laden
library(ggplot2)

#Bevölkerungspyramide erstellen
ggplot(data, aes(x = age, fill = gender,
                 y = ifelse(test = gender == "M",
                            yes = -population, no = population))) + 
  geom_bar(stat = "identity") +
  scale_y_continuous(labels = abs, limits = max(data$population) * c(-1,1)) +
  coord_flip()

Bevölkerungspyramide mit ggplot2

Hinzufügen von Titeln und Labels

Mit dem Argument labs() können wir der Bevölkerungspyramide sowohl Titel als auch Achsenbeschriftungen hinzufügen:

ggplot(data, aes(x = age, fill = gender,
                 y = ifelse(test = gender == "M",
                            yes = -population, no = population))) + 
  geom_bar(stat = "identity") +
  scale_y_continuous(labels = abs, limits = max(data$population) * c(-1,1)) +
  labs(title = "Population Pyramid", x = "Age", y = "Percent of population") +
  coord_flip()

Bevölkerungspyramide in R mit ggplot2

Ändern der Farben

Wir können die beiden Farben, die zur Darstellung der Geschlechter verwendet werden, mithilfe des Argumentes scale_colour_manual() ändern :

ggplot(data, aes(x = age, fill = gender,
                 y = ifelse(test = gender == "M",
                            yes = -population, no = population))) + 
  geom_bar(stat = "identity") +
  scale_y_continuous(labels = abs, limits = max(data$population) * c(-1,1)) +
  labs(title = "Population Pyramid", x = "Age", y = "Percent of population") +
  scale_colour_manual(values = c("pink", "steelblue"),
                      aesthetics = c("colour", "fill")) +
  coord_flip()

Bevölkerungspyramide in R mit benutzerdefinierten Farben

Pyramiden mit mehreren Populationen

Mit dem Argument facet_wrap() können auch mehrere Bevölkerungspyramiden zusammen dargestellt werden. Angenommen, wir haben demografische Daten für die Länder A, B und C. Der folgende Code zeigt, wie für jedes Land eine Bevölkerungspyramide erstellt wird:

#Machen Sie dieses Beispiel reproduzierbar
set.seed(1)

#Dataframe erstellen
data_multiple <- data.frame(age = rep(1:100, 6),
                            gender = rep(c("M", "F"), each = 300),
                            country = rep(c("A", "B", "C"), each = 100, times = 2))

#Populationsvariable hinzufügen
data_multiple$population <- round(1/sqrt(data_multiple$age)*runif(200, 10000, 15000), 0)
# Die ersten sechs Zeilen des Datensatzes anzeigen
head(data_multiple)

  age gender country population
1   1      M       A      11328
2   2      M       A       8387
3   3      M       A       7427
4   4      M       A       7271
5   5      M       A       4923
6   6      M       A       5916

#Eine Bevölkerungspyramide pro Land erstellen
ggplot(data_multiple, aes(x = age, fill = gender,
                          y = ifelse(test = gender == "M",
                                     yes = -population, no = population))) + 
  geom_bar(stat = "identity") +
  scale_y_continuous(labels = abs, limits = max(data_multiple$population) * c(-1,1)) +
  labs(y = "Population Amount") + 
  coord_flip() +
  facet_wrap(~ country) +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) #rotiere x-Achsenbeschriftungen

Bevölkerungspyramiden in R mit facet_wrap()

Zuletzt können wir das Theme der Diagramme ändern. Der folgende Code verwendet beispielsweise theme_classic(), um den Diagrammen ein minimalistischeres Aussehen zu verleihen:

ggplot(data_multiple, aes(x = age, fill = gender,
                          y = ifelse(test = gender == "M",
                                     yes = -population, no = population))) + 
  geom_bar(stat = "identity") +
  scale_y_continuous(labels = abs, limits = max(data_multiple$population) * c(-1,1)) +
  labs(y = "Population Amount") + 
  coord_flip() +
  facet_wrap(~ country) +
  theme_classic() + 
  theme(axis.text.x = element_text(angle = 90, hjust = 1))

Klassisches Thema in R

Oder Sie können benutzerdefinierte Themen verwenden. Eine vollständige Liste der Themen finden Sie auf der Dokumentationsseite.

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: