በማንኛውም ድረ-ገጽ ላይ በቀጥታ ወደ ልጥፍ ሊከተቱ የሚችሉ የአኒሜሽን ባር ገበታዎች ከጊዜ ወደ ጊዜ ተወዳጅ እየሆኑ መጥተዋል። በማንኛውም ባህሪ ውስጥ በተወሰነ ጊዜ ውስጥ የለውጦችን ተለዋዋጭነት ያሳያሉ እና ይህን በግልፅ ያደርጉታል. R እና አጠቃላይ ፓኬጆችን በመጠቀም እንዴት እነሱን መፍጠር እንደምንችል እንይ።
Skillbox ይመክራል፡ ተግባራዊ ኮርስ
"Python ገንቢ ከባዶ" .እኛ እናስታውስዎታለን- ለሁሉም የ "ሀብር" አንባቢዎች - የ "Habr" የማስተዋወቂያ ኮድን በመጠቀም በማንኛውም የ Skillbox ኮርስ ውስጥ ሲመዘገቡ የ 10 ሩብልስ ቅናሽ.
ጥቅሎች
በ R ውስጥ ጥቅሎችን እንፈልጋለን:
- ggplot2
-
ግምታዊ
እነዚህ ሁለቱ በጣም አስፈላጊ ናቸው. በተጨማሪም መረጃውን ለማስተዳደር፣ አደራደሩን ለማፅዳት እና ቅርጸቱን ለመቅረጽ የጽዳት፣ የፅዳት ሰራተኛ እና ሚዛኖች ያስፈልጋሉ።
መረጃ
በዚህ ፕሮጀክት ውስጥ የምንጠቀመው ዋናው ዳታ ስብስብ ከዓለም ባንክ ድህረ ገጽ ላይ ወርዷል። እነሆ፡-
ይህ ምን ዓይነት መረጃ ነው? ናሙናው ለብዙ ዓመታት (ከ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 በመጠቀም ሴራዎችን መፍጠር በጣም ቀላል ነው። ከላይ ባለው የኮድ ክፍል ላይ እንደሚታየው፣ ጭብጥ() ተግባር ያላቸው በርካታ ቁልፍ ነጥቦች አሉ። ሁሉም ንጥረ ነገሮች ያለችግር እንዲነቁ አስፈላጊ ናቸው. አንዳንዶቹ አስፈላጊ ከሆነ ላይታዩ ይችላሉ. ምሳሌ፡- ቀጥ ያሉ የፍርግርግ መስመሮች እና አፈ ታሪኮች ብቻ ይሳሉ፣ ነገር ግን የዘንግ ርእሶች እና ሌሎች በርካታ አካላት ከአካባቢው ተወግደዋል።
እነማ
እዚህ ያለው ቁልፍ ተግባር የሽግግር_ግዛቶች() ነው፣ እሱ የተለያዩ የማይንቀሳቀሱ ግራፎችን በአንድ ላይ ይሰፋል። እይታ_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")
መስጠት
አኒሜሽኑ አንዴ ከተፈጠረ እና በአኒሜሽኑ ውስጥ ከተከማቸ፣ የአኒሜሽን() ተግባርን በመጠቀም ለመስራት ጊዜው አሁን ነው። በአኒሜት() ውስጥ ጥቅም ላይ የሚውለው አቅራቢው በሚፈለገው የውጤት ፋይል ዓይነት ሊለያይ ይችላል።
ኤይ
# 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 )
ውጤት
እንደሚመለከቱት, ምንም የተወሳሰበ ነገር የለም. ፕሮጀክቱ በሙሉ በ ውስጥ ይገኛል።
Skillbox ይመክራል፡
- የሁለት ዓመት ተግባራዊ ኮርስ
"እኔ የ PRO ድር ገንቢ ነኝ" .- የመስመር ላይ ኮርስ
"C# ገንቢ ከባዶ" .- ተግባራዊ ዓመት ኮርስ
"PHP ገንቢ ከ 0 ወደ PRO" .
ምንጭ: hab.com