R ஐப் பயன்படுத்தி அனிமேஷன் ஹிஸ்டோகிராம்களை உருவாக்கவும்

R ஐப் பயன்படுத்தி அனிமேஷன் ஹிஸ்டோகிராம்களை உருவாக்கவும்

எந்த இணையதளத்திலும் உள்ள இடுகையில் நேரடியாக உட்பொதிக்கக்கூடிய அனிமேஷன் பட்டை விளக்கப்படங்கள் பெருகிய முறையில் பிரபலமடைந்து வருகின்றன. அவர்கள் ஒரு குறிப்பிட்ட நேரத்தில் எந்த குணாதிசயங்களிலும் ஏற்படும் மாற்றங்களின் இயக்கவியலைக் காட்டி, இதைத் தெளிவாகச் செய்கிறார்கள். ஆர் மற்றும் ஜெனரிக் பேக்கேஜ்களைப் பயன்படுத்தி அவற்றை எப்படி உருவாக்குவது என்று பார்க்கலாம்.

Skillbox பரிந்துரைக்கிறது: நடைமுறை படிப்பு "புதிதாக பைதான் டெவலப்பர்".

நாங்கள் நினைவூட்டுகிறோம்: "Habr" இன் அனைத்து வாசகர்களுக்கும் - "Habr" விளம்பரக் குறியீட்டைப் பயன்படுத்தி எந்த Skillbox படிப்பிலும் சேரும்போது 10 ரூபிள் தள்ளுபடி.

தொகுப்புகள்

R இல் தொகுப்புகள் தேவை:

இவை இரண்டும் மிகவும் அவசியமானவை. கூடுதலாக, தரவை நிர்வகிக்கவும், வரிசையை சுத்தம் செய்யவும் மற்றும் அதற்கேற்ப வடிவமைக்கவும், நேர்த்தியான, காவலாளி மற்றும் அளவீடுகள் தேவைப்படும்.

தரவு

இந்த திட்டத்தில் நாம் பயன்படுத்தும் அசல் தரவுத்தொகுப்பு உலக வங்கி இணையதளத்தில் இருந்து பதிவிறக்கம் செய்யப்படுகிறது. இங்கே அவர்கள் - உலக வங்கி தரவு. அதே தரவு, உங்களுக்கு ஆயத்தமாகத் தேவைப்பட்டால், பதிவிறக்கம் செய்யலாம் திட்ட கோப்புறைகள்.

இது என்ன வகையான தகவல்? மாதிரியானது பல ஆண்டுகளாக (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 ஐப் பயன்படுத்தி உண்மையான ஹிஸ்டோகிராம்களின் முழுமையான தொகுப்பைத் திட்டமிடுதல்.
  • கானிமேட்டைப் பயன்படுத்தி நிலையான ஹிஸ்டோகிராம்களை விரும்பிய அளவுருக்களுடன் அனிமேட் செய்யவும்.

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

ரெண்டரிங்

அனிமேஷன் உருவாக்கப்பட்டு, அனிம் பொருளில் சேமிக்கப்பட்டவுடன், அதை அனிமேட்() செயல்பாட்டைப் பயன்படுத்தி வழங்குவதற்கான நேரம் இது. அனிமேட்டில் () பயன்படுத்தப்படும் ரெண்டரர், தேவையான வெளியீட்டு கோப்பின் வகையைப் பொறுத்து வேறுபட்டிருக்கலாம்.

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

கருத்தைச் சேர்