አርን በመጠቀም የታነሙ ሂስቶግራሞችን ይፍጠሩ

አርን በመጠቀም የታነሙ ሂስቶግራሞችን ይፍጠሩ

በማንኛውም ድረ-ገጽ ላይ በቀጥታ ወደ ልጥፍ ሊከተቱ የሚችሉ የአኒሜሽን ባር ገበታዎች ከጊዜ ወደ ጊዜ ተወዳጅ እየሆኑ መጥተዋል። በማንኛውም ባህሪ ውስጥ በተወሰነ ጊዜ ውስጥ የለውጦችን ተለዋዋጭነት ያሳያሉ እና ይህን በግልፅ ያደርጉታል. R እና አጠቃላይ ፓኬጆችን በመጠቀም እንዴት እነሱን መፍጠር እንደምንችል እንይ።

Skillbox ይመክራል፡ ተግባራዊ ኮርስ "Python ገንቢ ከባዶ".

እኛ እናስታውስዎታለን- ለሁሉም የ "ሀብር" አንባቢዎች - የ "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 በመጠቀም ሴራዎችን መፍጠር በጣም ቀላል ነው። ከላይ ባለው የኮድ ክፍል ላይ እንደሚታየው፣ ጭብጥ() ተግባር ያላቸው በርካታ ቁልፍ ነጥቦች አሉ። ሁሉም ንጥረ ነገሮች ያለችግር እንዲነቁ አስፈላጊ ናቸው. አንዳንዶቹ አስፈላጊ ከሆነ ላይታዩ ይችላሉ. ምሳሌ፡- ቀጥ ያሉ የፍርግርግ መስመሮች እና አፈ ታሪኮች ብቻ ይሳሉ፣ ነገር ግን የዘንግ ርእሶች እና ሌሎች በርካታ አካላት ከአካባቢው ተወግደዋል።

እነማ

እዚህ ያለው ቁልፍ ተግባር የሽግግር_ግዛቶች() ነው፣ እሱ የተለያዩ የማይንቀሳቀሱ ግራፎችን በአንድ ላይ ይሰፋል። እይታ_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 )

ውጤት

አርን በመጠቀም የታነሙ ሂስቶግራሞችን ይፍጠሩ

እንደሚመለከቱት, ምንም የተወሳሰበ ነገር የለም. ፕሮጀክቱ በሙሉ በ ውስጥ ይገኛል። የእኔ GitHub, ልክ እንደፈለጉት ሊጠቀሙበት ይችላሉ.

Skillbox ይመክራል፡

ምንጭ: hab.com

አስተያየት ያክሉ