كيفية إنشاء الهرم السكاني في r


الهرم السكاني هو رسم بياني يوضح العمر والتوزيع الجنسي لمجموعة سكانية معينة. يعد هذا مخططًا مفيدًا لفهم تكوين السكان بالإضافة إلى اتجاه النمو السكاني الحالي بسهولة.

إذا كان للهرم السكاني شكل مستطيل، فهذا يشير إلى أن عدد السكان ينمو بمعدل أبطأ؛ يتم استبدال الأجيال الأقدم بأجيال جديدة بنفس الحجم تقريبًا.

إذا كان الهرم السكاني على شكل هرم، فهذا يشير إلى أن عدد السكان ينمو بمعدل أسرع؛ الأجيال الأكبر سنا تنتج أجيالا جديدة أكبر.

في الرسم البياني، يظهر الجنس على الجانبين الأيسر والأيمن، ويظهر العمر على المحور ص، والنسبة المئوية أو عدد السكان على المحور س.

يشرح هذا البرنامج التعليمي كيفية إنشاء الهرم السكاني في R.

إنشاء الهرم السكاني في R

لنفترض أن لدينا مجموعة البيانات التالية التي توضح النسبة المئوية لتكوين السكان بناءً على العمر (من 0 إلى 100 عام) والجنس (M = “ذكر”، F = “أنثى”):

 #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

يمكننا إنشاء هرم سكاني أساسي لمجموعة البيانات هذه باستخدام مكتبة 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()

إضافة العناوين والعلامات

يمكننا إضافة كل من العناوين وتسميات المحاور إلى الهرم السكاني باستخدام الوسيطة 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()

تغيير الألوان

يمكننا تغيير اللونين المستخدمين لتمثيل الأجناس باستخدام الوسيطة 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()

أهرامات عمرية متعددة

من الممكن أيضًا رسم أهرامات سكانية متعددة معًا باستخدام الوسيطة facet_wrap() . على سبيل المثال، لنفترض أن لدينا بيانات سكانية للبلدان أ، ب، ج. يوضح الكود التالي كيفية إنشاء هرم سكاني لكل بلد:

 #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

غير الخلفية

وأخيرا، يمكننا تغيير موضوع الرسومات. على سبيل المثال، تستخدم التعليمة البرمجية التالية theme_classic() ‎ لجعل الرسومات تبدو أكثر بساطة:

 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))

أو يمكنك استخدام سمات gg المخصصة. للحصول على قائمة كاملة بموضوعات gg، راجع صفحة الوثائق .

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *