áááºááá·áºáááºááá¯ááºááœááºáááᯠááá¯á·á
áºáá
áºáá¯ááœáẠááá¯ááºááá¯ááºááá·áºááœááºážááá¯ááºáá±á¬ áá¬ááœááºážáá¬ážááá¬ážáá»á¬ážááẠááá¯ááá¯áá±áááºážá
á¬ážáá¬áá«áááºá áááºážááá¯á·ááẠá¡áá»áááºáá¬ááá
áºáá¯á¡ááœááºáž áááºááá·áºáááá±áááá¹ááá¬áá»á¬ážá á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážá ááá¯ááºážááá
áºáá»á¬ážááᯠááŒáááŒá®áž áááºážááᯠááŸááºážáááºážá
áœá¬áá¯ááºáá±á¬ááºáááºá R ááŸáá·áº generic packages áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á áááºážááá¯á·ááᯠáááºááá¯á·áááºáá®ážááááºááᯠááŒáá·áºááŒáá«á
áá¯á·á
Skillbox á០á¡ááŒá¶ááŒá¯áá¬ážáááº- áááºááœá±á·áááºáááºáž
"Python developer ááẠá¡á ááŸáá±á" .áá«ááá¯á·áááºážááá¯ááááá±ážááẠ"Habr" áá á¬áááºáá°á¡á¬ážáá¯á¶ážá¡ááœáẠ- "Habr" áááá¯ááá¯ážááŸááºážáá¯ááºááᯠá¡áá¯á¶ážááŒá¯á áááºááá·áº Skillbox áááºáááºážááœááºá á¬áááºážááœááºážááá·áºá¡áá« 10 áá°áááºáá»áŸá±á¬á·á á»á±ážá
á¡á á¯á¶ááá¯ááº
R ááœáẠáááºáá±á·áá»áºáá»á¬áž ááá¯á¡ááºáááº
- ggplot2
-
ááá¹ááááº
á€ááŸá áºáá¯ááẠá¡ááœááºááá¯á¡ááºáá«áááºá ááá¯á·á¡ááŒáẠáá±áá¬ááᯠá á®áá¶ááá·áºááœá²áááºá áááºážáá»ááºážááŸá¯ááᯠááŸááºážáááºážáááºááŸáá·áº áá±á¬áºáááºááŒá¯áá¯ááºááẠáááºáááºáá±á¬á á¡á á±á¬áá·áºááŸáá·áº á¡ááŒá±ážááœá¶áá»á¬áž ááá¯á¡ááºáááºááŒá áºáááºá
áá±áá¬
á€ááá±á¬áá»ááºááœáẠáá»áœááºá¯ááºááá¯á·á¡áá¯á¶ážááŒá¯ááá·áº áá°áááºážáá±áá¬á¡ááœá²ááᯠááá¹áá¬á·áááºáááºááá¯ááºá០áá±á«ááºážáá¯ááºáá¯ááºáá¬ážáááºá áá®ááŸá¬-
áá«á áááºááá¯á¡áá»ááºá¡áááºáá»áá¯ážáá²á ááá°áá¬ááœáẠááá¯ááºáá¶á¡áá»á¬ážá á¯á GDP áááºááá¯áž (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()
á¡ááŒáááºáá áºá ááá¯ááááºáá»á¬ážáááºáá±á¬ááºááŒááºážá
ááᯠáá»áœááºá¯ááºááá¯á·ááœáẠááá¯á¡ááºáá±á¬ áá±á¬áºáááºááœáẠáá±áá¬áááºáá±á·áá»áºáá áºáᯠááŸááá±áááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠstatic histograms áá»á¬ážááᯠá áááºáá±ážááœá²áá«áááºá á¡ááŒá±áá¶á¡áá»ááºá¡áááºáá»á¬áž - ááœá±ážáá»ááºáá¬ážáá±á¬á¡áá»áááºááŒá¬ážáá¬áá¡ááœáẠGDP á¡ááŒáá·áºáá¯á¶ážááá¯ááºáᶠáá ááá¯ááºáá¶á áá»áœááºá¯ááºááá¯á·ááẠááŸá áºá áẠááááºáá áºáá»á¬áž áááºáá®ážáááºá
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() function áá²á· á¡áááá¡áá»ááºááœá± á¡áá»á¬ážááŒá®ážááŸááá«áááºá áááºážááá¯á·ááẠááŒáá¬áá¬áááŸááá² ááŒááºá ááºáá»á¬ážá¡á¬ážáá¯á¶áž áááºáááºááŸá¯ááºááŸá¬ážááá¯ááºááẠááá¯á¡ááºáá«áááºá áááºážááá¯á·áá²á០á¡áá»áá¯á·ááᯠááá¯á¡ááºáá«á ááŒááááºááá¯ááºáá«á á¥ááá¬- áá±á«ááºááá¯ááºááá¬ážááœááºáá»á¬ážááŸáá·áº ááá¹áá¬áá®áá»á¬ážááá¯áᬠáá±ážááœá²áá¬ážáá±á¬áºáááºáž áááºááá¯ážáá±á«ááºážá ááºáá»á¬ážááŸáá·áº á¡ááŒá¬ážá¡á áááºá¡ááá¯ááºážáá»á¬ážá áœá¬ááᯠá§áááá¬á០áááºááŸá¬ážáá¬ážáááºá
áá¬ááœááºáž
á€áá±áá¬ááœááºáá±á¬á·áá»ááºáá¯ááºáá±á¬ááºáá»ááºááŸá¬ transition_states()á áááºážááẠáá®ážááŒá¬áž static graphs áá»á¬ážááᯠáá±á«ááºážá ááºážáááºá view_follow() ááᯠgrid ááá¯ááºážáá»á¬ážááœá²ááẠá¡áá¯á¶ážááŒá¯áááºá
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")
ááŒááºááŒá¬ážáá±áž
áá¬ááœááºážááᯠáááºáá®ážááŒá®áž á¡ááºáá®áá±ážááŸááºážá¡áá¬ááá¹áá¯ááœáẠááááºážáááºážááŒá®ážáááºááŸáá·áºá áááºážááᯠanimate() áá¯ááºáá±á¬ááºáá»ááºááᯠá¡áá¯á¶ážááŒá¯á áááºáááºááẠá¡áá»áááºáááºááŒá®ááŒá áºáááºá animate() ááœáẠá¡áá¯á¶ážááŒá¯ááá·áº ááá¯ááºáá±á¬áºááẠááá¯á¡ááºáá±á¬ á¡ááœááºááá¯ááºá¡áá»áá¯ážá¡á á¬ážáá±á«áº áá°áááºá ááœá²ááŒá¬ážááá¯ááºáááºá
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 )
ááááº
áááºážááŒááºáá²á·á¡ááá¯ááºáž áá¬á០áááŸá¯ááºááœá±ážáá°ážá ááá±á¬áá»ááºáá
áºáá¯áá¯á¶ážááœáẠáááá¯ááºáááºá
Skillbox á០á¡ááŒá¶ááŒá¯áá¬ážáááº-
- ááŸá áºááŸá áºá á¬áááºááœá±á·áááºáááºáž
"áá»áœááºáá±á¬áºá PRO ááẠdeveloper áá áºáá±á¬ááºáá«" .- á¡áœááºááá¯ááºážáááºáááºáž
"C# developer" .- áááºááœá±á· áá áºááŸá áºáááºáááºáž
"PHP developer 0 á០PRO" .
source: www.habr.com