So erstellen sie eine bevölkerungspyramide in r


Eine Bevölkerungspyramide ist ein Diagramm, das die Alters- und Geschlechtsverteilung einer bestimmten Bevölkerung zeigt. Dies ist ein nützliches Diagramm, um die Zusammensetzung einer Bevölkerung sowie den aktuellen Bevölkerungswachstumstrend leicht zu verstehen.

Wenn eine Bevölkerungspyramide eine rechteckige Form hat, bedeutet dies, dass die Bevölkerung langsamer wächst; Ältere Generationen werden durch etwa gleich große neue Generationen ersetzt.

Wenn eine Bevölkerungspyramide die Form einer Pyramide hat, bedeutet dies, dass eine Bevölkerung schneller wächst; Ältere Generationen bringen neue, größere Generationen hervor.

In der Grafik wird auf der linken und rechten Seite das Geschlecht, auf der Y-Achse das Alter und auf der X-Achse der Prozentsatz bzw. die Bevölkerungszahl angezeigt.

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

Erstellen Sie eine Bevölkerungspyramide in R

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

 #make this example reproducible
set.seed(1)

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

#add variable population
data$population <- 1/sqrt(data$age) * runif(200, 10000, 15000)

#convert population variable to percentage
data$population <- data$population / sum(data$population) * 100

#view first six rows of dataset
head(data)

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

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

 #load ggplot2
library(ggplot2)

#create population pyramid
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)) +
  coordinate_flip()

Titel und Tags hinzufügen

Mithilfe des labs()- Arguments 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") +
  coordinate_flip()

Farben ändern

Mit dem Argument „scale_color_manual()“ können wir die beiden Farben ändern, die zur Darstellung der Geschlechter verwendet werden:

 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_color_manual(values = c("pink", "steelblue"),
aesthetics = c("color", "fill")) +
  coordinate_flip()

Mehrere Alterspyramiden

Mit dem Argument facet_wrap() ist es auch möglich, mehrere Bevölkerungspyramiden zusammen darzustellen. Angenommen, wir haben Bevölkerungsdaten für die Länder A, B und C. Der folgende Code veranschaulicht, wie eine Bevölkerungspyramide für jedes Land erstellt wird:

 #make this example reproducible
set.seed(1)

#create data frame
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))

#add variable population
data_multiple$population <- round(1/sqrt(data_multiple$age)*runif(200, 10000, 15000), 0)

#view first six rows of dataset
head(data_multiple)

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

#create one population pyramid per country
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") + 
  coordinate_flip() +
  facet_wrap(~country) +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) #rotate x-axis labels

Thema ändern

Schließlich können wir das Thema der Grafiken ändern. Der folgende Code verwendet beispielsweise theme_classic() , um Grafiken minimalistischer aussehen zu lassen:

 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") + 
  coordinate_flip() +
  facet_wrap(~country) +
theme_classic() + 
  theme(axis.text.x = element_text(angle = 90, hjust = 1))

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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert