R භාවිතයෙන් සජීවිකරණ හිස්ටෝග්‍රෑම් සාදන්න

R භාවිතයෙන් සජීවිකරණ හිස්ටෝග්‍රෑම් සාදන්න

ඕනෑම වෙබ් අඩවියක පළ කිරීමකට සෘජුවම ඇතුළත් කළ හැකි සජීවිකරණ තීරු ප්‍රස්ථාර වැඩි වැඩියෙන් ජනප්‍රිය වෙමින් පවතී. ඔවුන් නිශ්චිත කාලයක් තුළ ඕනෑම ලක්ෂණයක වෙනස්වීම්වල ගතිකත්වය ප්රදර්ශනය කරන අතර මෙය පැහැදිලිව සිදු කරයි. R සහ Generic පැකේජ භාවිතයෙන් ඒවා නිර්මාණය කරන්නේ කෙසේදැයි බලමු.

Skillbox නිර්දේශ කරයි: ප්රායෝගික පාඨමාලාව "පයිතන් සංවර්ධකයා මුල සිටම".

අපි ඔබට මතක් කරමු: "Habr" හි සියලුම පාඨකයින් සඳහා - "Habr" ප්‍රවර්ධන කේතය භාවිතයෙන් ඕනෑම Skillbox පාඨමාලාවකට ලියාපදිංචි වන විට රූබල් 10 ක වට්ටමක්.

පැකේජ

අපට R හි පැකේජ අවශ්‍ය වේ:

මේ දෙක අතිශයින්ම අවශ්යයි. ඊට අමතරව, දත්ත කළමනාකරණය කිරීමට, අරාව පිරිසිදු කිරීමට සහ ඒ අනුව හැඩගැස්වීමට පිළිවෙලට, මුරකරු සහ පරිමාණයන් අවශ්‍ය වේ.

දත්ත

මෙම ව්‍යාපෘතියේ අප භාවිතා කරන මුල් දත්ත කට්ටලය ලෝක බැංකු වෙබ් අඩවියෙන් බාගත කර ඇත. මෙන්න ඒගොල්ලො - ලෝක බැංකු දත්ත. එකම දත්ත, ඔබට එය සූදානම්ව අවශ්‍ය නම්, බාගත කළ හැකිය ව්යාපෘති ෆෝල්ඩර.

මෙය කුමන ආකාරයේ තොරතුරුද? නියැදියේ වසර කිහිපයක් (2000 සිට 2017 දක්වා) බොහෝ රටවල GDP අගය අඩංගු වේ.

දත්ත සැකසීම

අවශ්‍ය දත්ත ආකෘතිය සකස් කිරීමට අපි පහත පළ කර ඇති කේතය භාවිතා කරමු. අපි තීරු නාම ඉවත් කර, අංක සංඛ්‍යා ආකෘතියකට හරවා, 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 ඇතුළුව අපේක්ෂිත ආකෘතියෙන් සජීවිකරණය ලබා දීමයි.

පුස්තකාල පූරණය කරමින්

  • පුස්තකාලය (පිළිවෙලින්)
  • පුස්තකාලය (gganimate)

දත්ත කළමනාකරණය

මෙම පියවරේදී, ඔබ එක් එක් වසර සඳහා හොඳම රටවල් 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 භාවිතයෙන් බිම් කොටස් නිර්මාණය කිරීම ඉතා සරල ය. ඉහත කේත කොටසේ ඔබට පෙනෙන පරිදි, theme() ශ්‍රිතය සමඟ ප්‍රධාන කරුණු කිහිපයක් ඇත. සියලුම මූලද්රව්ය ගැටළු නොමැතිව සජීවී වන පරිදි ඒවා අවශ්ය වේ. ඒවායින් සමහරක් අවශ්ය නම් ප්රදර්ශනය නොකළ හැකිය. උදාහරණය: සිරස් ජාලක රේඛා සහ ජනප්‍රවාද පමණක් ඇද ඇත, නමුත් අක්ෂ මාතෘකා සහ තවත් සංරචක කිහිපයක් ප්‍රදේශයෙන් ඉවත් කරනු ලැබේ.

සජීවිකරණය

මෙහි ප්‍රධාන කාර්යය වන්නේ 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() ශ්‍රිතය භාවිතයෙන් විදැහුම් කිරීමට කාලයයි. අවශ්‍ය ප්‍රතිදාන ගොනු වර්ගය අනුව animate() හි භාවිතා වන renderer වෙනස් විය හැක.

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

අදහස් එක් කරන්න