آر استعمال ڪندي متحرڪ هسٽوگرام ٺاهيو

آر استعمال ڪندي متحرڪ هسٽوگرام ٺاهيو

متحرڪ بار چارٽ جيڪي سڌو سنئون ڪنهن به ويب سائيٽ تي پوسٽ ۾ شامل ٿي سگهن ٿا، تمام گهڻو مقبول ٿي رهيا آهن. اهي هڪ خاص وقت تي ڪنهن به خاصيتن ۾ تبديلين جي متحرڪ ڏيکاريندا آهن ۽ اهو واضح طور تي ڪندا آهن. اچو ته ڏسو ته انهن کي ڪيئن ٺاهيو R ۽ عام پيڪيجز استعمال ڪندي.

Skillbox سفارش ڪري ٿو: عملي ڪورس "شروع کان پٿون ڊولپر".

اسان توهان کي ياد ڏياريون ٿا: "Habr" جي سڀني پڙهندڙن لاءِ - 10 روبل جي رعايت جڏهن "Habr" پروموشنل ڪوڊ استعمال ڪندي ڪنهن به اسڪل باڪس ڪورس ۾ داخلا.

پيڪيجز

اسان کي آر ۾ پيڪيجز جي ضرورت آهي:

اهي ٻئي انتهائي ضروري آهن. اضافي طور تي، ڊيٽا کي منظم ڪرڻ، صفن کي صاف ڪرڻ ۽ ترتيب جي مطابق ترتيب ڏيڻ لاء tidyverse، janitor ۽ اسڪيل جي ضرورت پوندي.

انگن اکرن

اصل ڊيٽا سيٽ اسان هن منصوبي ۾ استعمال ڪنداسين ورلڊ بئنڪ جي ويب سائيٽ تان ڊائون لوڊ ڪيو ويو آهي. هتي اهي آهن - ورلڊ بئنڪ ڊيٽا. ساڳي ڊيٽا، جيڪڏهن توهان کي ضرورت هجي ته تيار ڪيل، ڊائون لوڊ ڪري سگهجي ٿو پروجيڪٽ فولڊر.

هي ڪهڙي قسم جي معلومات آهي؟ نموني ڪيترن ئي سالن تائين (2000 کان 2017 تائين) ڪيترن ئي ملڪن جي جي ڊي پي جي قيمت تي مشتمل آهي.

ڊيٽا پروسيسنگ

ضروري ڊيٽا فارميٽ تيار ڪرڻ لاءِ هيٺ ڏنل ڪوڊ استعمال ڪنداسين. اسان ڪالمن جا نالا صاف ڪريون ٿا، انگن کي نمبر فارميٽ ۾ ڦيرايو، ۽ ڊيٽا کي گڏي () فنڪشن استعمال ڪندي تبديل ڪريو. اسان وڌيڪ استعمال لاءِ 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 ملڪ جيڪي وڌ ۾ وڌ GDP سان گڏ چونڊيل وقت جي وقفي لاءِ. اسان هر سال لاء گراف ٺاهيندا آهيون.

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

رسائڻ

هڪ دفعو اينيميشن ٺاهي وئي آهي ۽ انيم اعتراض ۾ محفوظ ڪئي وئي آهي، اهو وقت آهي ان کي استعمال ڪندي رينجر ڪرڻ جو وقت آهي animate() فنڪشن. 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 )

نتيجي ۾

آر استعمال ڪندي متحرڪ هسٽوگرام ٺاهيو

جئين توهان ڏسي سگهو ٿا، ڪجھ به پيچيده ناهي. سڄي منصوبي ۾ موجود آهي منهنجو GitHub، توهان ان کي استعمال ڪري سگهو ٿا جيئن توهان مناسب ڏسندا.

Skillbox سفارش ڪري ٿو:

جو ذريعو: www.habr.com

تبصرو شامل ڪريو