आर में जनसंख्या पिरामिड कैसे बनाएं


जनसंख्या पिरामिड एक ग्राफ है जो किसी दी गई जनसंख्या की आयु और लिंग वितरण को दर्शाता है। जनसंख्या की संरचना के साथ-साथ वर्तमान जनसंख्या वृद्धि प्रवृत्ति को आसानी से समझने के लिए यह एक उपयोगी चार्ट है।

यदि जनसंख्या पिरामिड का आकार आयताकार है, तो यह इंगित करता है कि जनसंख्या धीमी गति से बढ़ रही है; पुरानी पीढ़ियों का स्थान लगभग उसी आकार की नई पीढ़ियों ने ले लिया है।

यदि जनसंख्या पिरामिड का आकार पिरामिड जैसा है, तो यह इंगित करता है कि जनसंख्या तेजी से बढ़ रही है; पुरानी पीढ़ियाँ नई, बड़ी पीढ़ियाँ पैदा करती हैं।

ग्राफ़ में, लिंग को बाईं और दाईं ओर दिखाया गया है, आयु को y-अक्ष पर दिखाया गया है, और जनसंख्या का प्रतिशत या मात्रा x-अक्ष पर दिखाई गई है।

यह ट्यूटोरियल बताता है कि आर में जनसंख्या पिरामिड कैसे बनाया जाए।

आर में एक जनसंख्या पिरामिड बनाएं

मान लीजिए कि हमारे पास निम्नलिखित डेटा सेट है जो आयु (0 से 100 वर्ष) और लिंग (एम = “पुरुष”, एफ = “महिला”) के आधार पर जनसंख्या की प्रतिशत संरचना दर्शाता है:

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

रंग बदलें

हम स्केल_कलर_मैनुअल() तर्क का उपयोग करके लिंग का प्रतिनिधित्व करने के लिए उपयोग किए जाने वाले दो रंगों को बदल सकते हैं:

 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

विषय को परिवर्तित करें

अंत में, हम ग्राफ़िक्स की थीम बदल सकते हैं। उदाहरण के लिए, ग्राफ़िक्स को अधिक न्यूनतम दिखाने के लिए निम्न कोड थीम_क्लासिक() का उपयोग करता है:

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

या आप कस्टम ggthemes का उपयोग कर सकते हैं. Ggthemes की पूरी सूची के लिए, दस्तावेज़ीकरण पृष्ठ देखें

एक टिप्पणी जोड़ने

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *