R рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдирд┐рдореЗрдЯреЗрдб рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдмрдирд╛рдПрдВ



рдПрдирд┐рдореЗрдЯреЗрдб рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдЬреЛ рдЖрдк рдХрд┐рд╕реА рднреА рд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рдкреНрд░рдХрд╛рд╢рди рдореЗрдВ рд╕реАрдзреЗ рдПрдореНрдмреЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЗрдЬреА рд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛ рд░рд╣реЗ рд╣реИрдВред рд╡реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд░рддреЗ рд╣реИрдВред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЖрд░ рдФрд░ рдпреВрдирд┐рд╡рд░реНрд╕рд▓ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред

рд╕реНрдХрд┐рд▓рдмреЙрдХреНрд╕ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛ рд╣реИ: рд╕реНрдХреНрд░реИрдЪ рд╣реИрдВрдб-рдСрди рдХреЛрд░реНрд╕ рд╕реЗ рдкрд╛рдпрдерди рдбреЗрд╡рд▓рдкрд░ ред

рд╣рдо рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддреЗ рд╣реИрдВ: "рд╣реИрдмрд░" рдХреЗ рд╕рднреА рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП - "рд╣реИрдмрд░" рдкреНрд░реЛрдореЛ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рднреА рд╕реНрдХрд┐рд▓рдмреЙрдХреНрд╕ рдХреЛрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдкрдВрдЬреАрдХрд░рдг рдХрд░рддреЗ рд╕рдордп 10,000 рд░реВрдмрд▓ рдХреА рдЫреВрдЯред

рд╕рдВрдХреБрд▓


рд╣рдореЗрдВ R рдореЗрдВ рдкреИрдХреЗрдЬ рдЪрд╛рд╣рд┐рдП:


рдпреЗ рджреЛрдиреЛрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП tidyverse, рдЪреМрдХреАрджрд╛рд░ рдФрд░ рддрд░рд╛рдЬреВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдХреНрд░рдорд╢рдГ рд╕рд░рдгреА, рдФрд░ рдкреНрд░рд╛рд░реВрдк рдХреЛ рд╕рд╛рдлрд╝ рдХрд░реЗрдВред

рдбреЗрдЯрд╛


рдореВрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЬреЛ рд╣рдо рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд╡рд╣ рд╡рд┐рд╢реНрд╡ рдмреИрдВрдХ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рд╣реИред рдпрд╣рд╛рдБ рд╡реЗ рд╣реИрдВ - рд╡рд░реНрд▓реНрдбрдмреИрдВрдХ рдбреЗрдЯрд╛ ред рдПрдХ рд╣реА рдбреЗрдЯрд╛, рдпрджрд┐ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рддреИрдпрд╛рд░ рд░реВрдк рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреНрдпрд╛ рд╣реИ? рдирдореВрдиреЗ рдореЗрдВ рдХрдИ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ (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 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕реЗрдЯ рдмрдирд╛рдирд╛ред
  • рд╕реНрдерд┐рд░ histograms рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╛рдВрдЫрд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде 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 рджреЗрд╢ред рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрд╖ рдХреЗ рд▓рд┐рдП рдЪрд╛рд░реНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред

 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 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреНрд░рд╛рдлрд╝ рдмрдирд╛рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рд╖рдп () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдХреБрдЫ рдкреНрд░рдореБрдЦ рдмрд┐рдВрджреБ рд╣реИрдВред рд╡реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ рддрд╛рдХрд┐ рд╕рднреА рддрддреНрд╡ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдПрдирд┐рдореЗрдЯреЗрдб рд╣реЛрдВред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг: рдХреЗрд╡рд▓ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдЧреНрд░рд┐рдб рд▓рд╛рдЗрдиреЗрдВ рдФрд░ рдХрд┐рдВрд╡рджрдВрддрд┐рдпрд╛рдВ рдЦреАрдВрдЪреА рдЬрд╛рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрд▓реНрд╣рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рд╢реАрд░реНрд╖ рдФрд░ рдХреБрдЫ рдФрд░ рдШрдЯрдХреЛрдВ рдХреЛ рд╕рд╛рдЗрдЯ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдПрдиреАрдореЗрд╢рди


рдпрд╣рд╛рдБ рдкрд░ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдЯреНрд░рд╛рдВрдЬреАрд╢рди_рд╕реНрдЯреЗрдЯреНрд╕ () рд╣реИ, рдпрд╣ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдереИрддрд┐рдХ рд░реЗрдЦрд╛рдВрдХрди рдХреЛ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИред 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 ) 

рдкрд░рд┐рдгрд╛рдо




рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдкреВрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрд░реЗ GitHub рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ , рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдлрд┐рдЯ рджреЗрдЦрддреЗ рд╣реИрдВ, рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕реНрдХрд┐рд▓рдмреЙрдХреНрд╕ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИ:

Source: https://habr.com/ru/post/hi446952/


All Articles