Cara membuat piramida penduduk di r
Piramida penduduk adalah grafik yang menunjukkan sebaran umur dan jenis kelamin suatu penduduk. Ini adalah grafik yang berguna untuk memudahkan memahami komposisi penduduk serta tren pertumbuhan penduduk saat ini.
Jika piramida penduduk berbentuk persegi panjang, hal ini menunjukkan bahwa pertumbuhan penduduk lebih lambat; generasi lama digantikan oleh generasi baru dengan ukuran yang kurang lebih sama.
Jika piramida penduduk berbentuk seperti piramida, hal ini menunjukkan bahwa pertumbuhan penduduk lebih cepat; generasi yang lebih tua menghasilkan generasi baru yang lebih besar.
Pada grafik, jenis kelamin ditampilkan di sisi kiri dan kanan, usia ditampilkan pada sumbu y, dan persentase atau jumlah penduduk ditampilkan pada sumbu x.
Tutorial ini menjelaskan cara membuat piramida penduduk di R.
Buatlah piramida penduduk di R
Misalkan kita memiliki kumpulan data berikut yang menunjukkan persentase komposisi penduduk berdasarkan usia (0 hingga 100 tahun) dan jenis kelamin (M = “Laki-laki”, F = “Perempuan”):
#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
Kita dapat membuat piramida populasi dasar untuk kumpulan data ini menggunakan pustaka ggplot2 :
#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()
Menambahkan Judul dan Tag
Kita dapat menambahkan judul dan label sumbu ke piramida populasi menggunakan argumen labs() :
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()
Ubah warna
Kita dapat mengubah dua warna yang digunakan untuk mewakili gender menggunakan argumen scale_color_manual() :
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()
Piramida usia ganda
Dimungkinkan juga untuk memplot beberapa piramida populasi menggunakan argumen facet_wrap() . Misalnya, kita memiliki data populasi untuk negara A, B, dan C. Kode berikut menggambarkan cara membuat piramida populasi untuk setiap negara:
#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
Ubah tema
Terakhir, kita bisa mengubah tema grafiknya. Misalnya, kode berikut menggunakan theme_classic() untuk membuat grafik terlihat lebih minimalis:
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))
Atau Anda dapat menggunakan ggthemes khusus. Untuk daftar lengkap ggthemes, lihat halaman dokumentasi .