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 .

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *