R کا استعمال کرتے ہوئے متحرک ہسٹوگرام بنائیں

R کا استعمال کرتے ہوئے متحرک ہسٹوگرام بنائیں

اینیمیٹڈ بار چارٹس جو کسی بھی ویب سائٹ پر کسی پوسٹ میں براہ راست سرایت کر سکتے ہیں تیزی سے مقبول ہو رہے ہیں۔ وہ ایک خاص وقت میں کسی بھی خصوصیات میں تبدیلیوں کی حرکیات کو ظاہر کرتے ہیں اور یہ واضح طور پر کرتے ہیں۔ آئیے دیکھتے ہیں کہ R اور عام پیکجز کا استعمال کرتے ہوئے انہیں کیسے بنایا جائے۔

Skillbox تجویز کرتا ہے: پریکٹیکل کورس "شروع سے ازگر کا ڈویلپر".

ہم آپ کو یاد دلاتے ہیں: "Habr" کے تمام قارئین کے لیے - "Habr" پروموشنل کوڈ کا استعمال کرتے ہوئے کسی بھی Skillbox کورس میں داخلہ لینے پر 10 rubles کی رعایت۔

پیکجز

ہمیں R میں پیکجز کی ضرورت ہے:

یہ دونوں انتہائی ضروری ہیں۔ اس کے علاوہ، ڈیٹا کو منظم کرنے، صفوں کو صاف کرنے اور اس کے مطابق فارمیٹ کرنے کے لیے tidyverse، janitor اور اسکیلز کی ضرورت ہوگی۔

ڈیٹا

اصل ڈیٹاسیٹ جو ہم اس پروجیکٹ میں استعمال کریں گے وہ ورلڈ بینک کی ویب سائٹ سے ڈاؤن لوڈ کیا گیا ہے۔ وہ یہاں ہیں - ورلڈ بینک ڈیٹا. وہی ڈیٹا، اگر آپ کو اس کی ریڈی میڈ ضرورت ہو تو، سے ڈاؤن لوڈ کیا جا سکتا ہے۔ پروجیکٹ فولڈرز.

یہ کس قسم کی معلومات ہے؟ اس نمونے میں کئی سالوں (2000 سے 2017 تک) زیادہ تر ممالک کی جی ڈی پی ویلیو شامل ہے۔

ڈیٹا پراسیسنگ

ہم مطلوبہ ڈیٹا فارمیٹ تیار کرنے کے لیے نیچے پوسٹ کردہ کوڈ کا استعمال کریں گے۔ ہم کالم کے نام صاف کرتے ہیں، نمبروں کو نمبر فارمیٹ میں تبدیل کرتے ہیں، اور gather() فنکشن کا استعمال کرتے ہوئے ڈیٹا کو تبدیل کرتے ہیں۔ ہم مزید استعمال کے لیے gdp_tidy.csv میں موصول ہونے والی ہر چیز کو محفوظ کرتے ہیں۔

library(tidyverse)
library(janitor)

gdp <- read_csv("./data/GDP_Data.csv")

#select required columns

gdp <- gdp %>% select(3:15)

#filter only country rows

gdp <- gdp[1:217,]

gdp_tidy <- gdp %>%
mutate_at(vars(contains("YR")),as.numeric) %>%
gather(year,value,3:13) %>%
janitor::clean_names() %>%
mutate(year = as.numeric(stringr::str_sub(year,1,4)))

write_csv(gdp_tidy,"./data/gdp_tidy.csv")

متحرک ہسٹگرامس

ان کی تخلیق دو مراحل کی ضرورت ہے:

  • ggplot2 کا استعمال کرتے ہوئے اصل ہسٹگرامس کا ایک مکمل سیٹ تیار کرنا۔
  • gganimate کا استعمال کرتے ہوئے مطلوبہ پیرامیٹرز کے ساتھ جامد ہسٹوگرام کو متحرک کریں۔

آخری مرحلہ اینیمیشن کو مطلوبہ فارمیٹ میں پیش کرنا ہے، بشمول GIF یا MP4۔

لائبریریاں لوڈ ہو رہی ہیں۔

  • کتب خانہ
  • لائبریری (گگنیمیٹ)

ڈیٹا مینجمنٹ

اس مرحلے میں، آپ کو ہر سال کے لیے ٹاپ 10 ممالک حاصل کرنے کے لیے ڈیٹا کو فلٹر کرنے کی ضرورت ہے۔ آئیے کئی کالم شامل کریں جو ہمیں ہسٹوگرام کے لیے ایک لیجنڈ ظاہر کرنے کی اجازت دیں گے۔

gdp_tidy <- read_csv("./data/gdp_tidy.csv")

gdp_formatted <- gdp_tidy %>%
group_by(year) %>%
# The * 1 makes it possible to have non-integer ranks while sliding
mutate(rank = rank(-value),
Value_rel = value/value[rank==1],
Value_lbl = paste0(" ",round(value/1e9))) %>%
group_by(country_name) %>%
filter(rank <=10) %>%
ungroup()

جامد ہسٹوگرام بنانا

اب جب کہ ہمارے پاس مطلوبہ فارمیٹ میں ڈیٹا پیکج ہے، ہم جامد ہسٹوگرام بنانا شروع کرتے ہیں۔ بنیادی معلومات - منتخب وقت کے وقفے کے لیے زیادہ سے زیادہ جی ڈی پی کے ساتھ سرفہرست 10 ممالک۔ ہم ہر سال کے لیے گراف بناتے ہیں۔

staticplot = ggplot(gdp_formatted, aes(rank, group = country_name,
fill = as.factor(country_name), color = as.factor(country_name))) +
geom_tile(aes(y = value/2,
height = value,
width = 0.9), alpha = 0.8, color = NA) +
geom_text(aes(y = 0, label = paste(country_name, " ")), vjust = 0.2, hjust = 1) +
geom_text(aes(y=value,label = Value_lbl, hjust=0)) +
coord_flip(clip = "off", expand = FALSE) +
scale_y_continuous(labels = scales::comma) +
scale_x_reverse() +
guides(color = FALSE, fill = FALSE) +
theme(axis.line=element_blank(),
axis.text.x=element_blank(),
axis.text.y=element_blank(),
axis.ticks=element_blank(),
axis.title.x=element_blank(),
axis.title.y=element_blank(),
legend.position="none",
panel.background=element_blank(),
panel.border=element_blank(),
panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
panel.grid.major.x = element_line( size=.1, color="grey" ),
panel.grid.minor.x = element_line( size=.1, color="grey" ),
plot.title=element_text(size=25, hjust=0.5, face="bold", colour="grey", vjust=-1),
plot.subtitle=element_text(size=18, hjust=0.5, face="italic", color="grey"),
plot.caption =element_text(size=8, hjust=0.5, face="italic", color="grey"),
plot.background=element_blank(),
plot.margin = margin(2,2, 2, 4, "cm"))

ggplot2 کا استعمال کرتے ہوئے پلاٹ بنانا بہت آسان ہے۔ جیسا کہ آپ اوپر کوڈ سیکشن میں دیکھ سکتے ہیں، تھیم() فنکشن کے ساتھ کئی اہم نکات ہیں۔ وہ ضروری ہیں تاکہ تمام عناصر بغیر کسی پریشانی کے متحرک ہوں۔ اگر ضروری ہو تو ان میں سے کچھ کو ظاہر نہیں کیا جاسکتا ہے۔ مثال: صرف عمودی گرڈ لائنیں اور لیجنڈز کھینچی گئی ہیں، لیکن محور کے عنوانات اور کئی دیگر اجزاء کو علاقے سے ہٹا دیا گیا ہے۔

حرکت پذیری

یہاں کلیدی فنکشن transition_states() ہے؛ یہ الگ الگ جامد گراف کو ایک ساتھ سلائی کرتا ہے۔ view_follow() گرڈ لائنوں کو کھینچنے کے لیے استعمال کیا جاتا ہے۔

anim = staticplot + transition_states(year, transition_length = 4, state_length = 1) +
view_follow(fixed_x = TRUE) +
labs(title = 'GDP per Year : {closest_state}',
subtitle = "Top 10 Countries",
caption = "GDP in Billions USD | Data Source: World Bank Data")

انجام دینا

ایک بار جب اینیمیشن بن جاتی ہے اور anim آبجیکٹ میں محفوظ ہوجاتی ہے، تو یہ وقت ہے کہ اسے animate() فنکشن کا استعمال کرکے رینڈر کیا جائے۔ اینیمیٹ() میں استعمال ہونے والا رینڈرر مطلوبہ آؤٹ پٹ فائل کی قسم کے لحاظ سے مختلف ہو سکتا ہے۔

GIF

# For GIF

animate(anim, 200, fps = 20, width = 1200, height = 1000,
renderer = gifski_renderer("gganim.gif"))

MP4

# For MP4

animate(anim, 200, fps = 20, width = 1200, height = 1000,
renderer = ffmpeg_renderer()) -> for_mp4

anim_save("animation.mp4", animation = for_mp4 )

نتیجہ

R کا استعمال کرتے ہوئے متحرک ہسٹوگرام بنائیں

جیسا کہ آپ دیکھ سکتے ہیں، کچھ بھی پیچیدہ نہیں ہے. پورا پروجیکٹ دستیاب ہے۔ میرا GitHub، آپ اسے استعمال کر سکتے ہیں جیسا کہ آپ مناسب دیکھتے ہیں۔

Skillbox تجویز کرتا ہے:

ماخذ: www.habr.com

نیا تبصرہ شامل کریں