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 .