เบชเป‰เบฒเบ‡ Histograms เปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเป‚เบ”เบเปƒเบŠเป‰ R

เบชเป‰เบฒเบ‡ Histograms เปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเป‚เบ”เบเปƒเบŠเป‰ R

เปเบœเบ™เบœเบฑเบ‡เปเบ–เบšเบ—เบตเปˆเบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบเบฑเบ‡เป‚เบ”เบเบเบปเบ‡เป€เบ‚เบปเป‰เบฒเปƒเบ™เบเบฒเบ™เบ•เบญเบšเบขเบนเปˆเปƒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒเปƒเบ”เบซเบ™เบถเปˆเบ‡เปเบกเปˆเบ™เบเบฒเบเป€เบ›เบฑเบ™เบ—เบตเปˆเบ™เบดเบเบปเบกเบซเบฅเบฒเบเบ‚เบถเป‰เบ™. เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบชเบฐเปเบ”เบ‡เบ™เบฐเป‚เบเบšเบฒเบเบ”เป‰เบฒเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡เปƒเบ™เป„เบฅเบเบฐเป€เบงเบฅเบฒเปƒเบ”เบซเบ™เบถเปˆเบ‡เปเบฅเบฐเป€เบฎเบฑเบ”เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡. เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบชเป‰เบฒเบ‡เบžเบงเบเบกเบฑเบ™เป‚เบ”เบเปƒเบŠเป‰ R เปเบฅเบฐเบŠเบธเบ”เบ—เบปเปˆเบงเป„เบ›.

Skillbox เปเบ™เบฐเบ™เปเบฒ: เบซเบผเบฑเบเบชเบนเบ”เบžเบฒเบเบ›เบฐเบ•เบดเบšเบฑเบ” "เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ Python เบ•เบฑเป‰เบ‡เปเบ•เปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™".

เบžเบงเบเป€เบฎเบปเบฒเป€เบ•เบทเบญเบ™: เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบญเปˆเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡ "Habr" - เบชเปˆเบงเบ™เบซเบผเบธเบ” 10 rubles เป€เบกเบทเปˆเบญเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เปƒเบ™เบซเบผเบฑเบเบชเบนเบ” Skillbox เป‚เบ”เบเปƒเบŠเป‰เบฅเบฐเบซเบฑเบ”เบชเบปเปˆเบ‡เป€เบชเบตเบก "Habr".

เบเบฒเบ™เบซเบธเป‰เบกเบซเปเปˆ

เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบŠเบธเบ”เปƒเบ™ R:

เบชเบญเบ‡เบ™เบตเป‰เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆเบชเบธเบ”. เบ™เบญเบโ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™, tidyverse, janitor เปเบฅเบฐโ€‹เป€เบเบฑเบ”โ€‹เบˆเบฐโ€‹เบ–เบทเบโ€‹เบ•เป‰เบญเบ‡โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบ„เบธเป‰เบกโ€‹เบ„เบญเบ‡โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™, เบ—เปเบฒโ€‹เบ„เบงเบฒเบกโ€‹เบชเบฐโ€‹เบญเบฒเบ”โ€‹เบญเบฒโ€‹เป€เบฃโ€‹เปเบฅเบฐโ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบ•เบฒเบกโ€‹เบ„เบงเบฒเบกโ€‹เป€เบซเบกเบฒเบฐโ€‹เบชเบปเบก.

เบ‚เปเป‰เบกเบนเบ™

เบŠเบธเบ”เบ‚เปเป‰เบกเบนเบ™เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบ”เบฒเบงเป‚เบซเบผเบ”เบกเบฒเบˆเบฒเบเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ‚เบญเบ‡เบ—เบฐเบ™เบฒเบ„เบฒเบ™เป‚เบฅเบ. เบ™เบตเป‰โ€‹เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เปเบกเปˆเบ™ - เบ‚เปเป‰เบกเบนเบ™เบ—เบฐเบ™เบฒเบ„เบฒเบ™เป‚เบฅเบ. เบ‚เปเป‰เบกเบนเบ™เบ”เบฝเบงเบเบฑเบ™, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบกเบฑเบ™เบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”, เบชเบฒเบกเบฒเบ”เบ”เบฒเบงเป‚เบซเบฅเบ”เป„เบ”เป‰เบˆเบฒเบ เป‚เบŸเบ™เป€เบ”เบตเป‚เบ„เบ‡เบเบฒเบ™.

เบ™เบตเป‰เปเบกเปˆเบ™เบ‚เปเป‰เบกเบนเบ™เบ›เบฐเป€เบžเบ”เปƒเบ”? เบ•เบปเบงเบขเปˆเบฒเบ‡เบ›เบฐเบเบญเบšเบกเบตเบกเบนเบ™เบ„เปˆเบฒ GDP เบ‚เบญเบ‡เบ›เบฐเป€เบ—เบ”เบชเปˆเบงเบ™เปƒเบซเบเปˆเป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบซเบผเบฒเบเบ›เบต (เบˆเบฒเบ 2000 เบซเบฒ 2017).

เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบกเบงเบ™โ€‹เบœเบปเบ™โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™

เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ‚เบฝเบ™เป„เบงเป‰เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เป€เบžเบทเปˆเบญเบเบฐเบเบฝเบกเบฎเบนเบšเปเบšเบšเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™. เบžเบงเบเป€เบฎเบปเบฒเบฅเบถเบšเบŠเบทเปˆเบ–เบฑเบ™, เบ›เปˆเบฝเบ™เบ•เบปเบงเป€เบฅเบเปƒเบซเป‰เป€เบ›เบฑเบ™เบฎเบนเบšเปเบšเบšเบ•เบปเบงเป€เบฅเบ, เปเบฅเบฐเบ›เปˆเบฝเบ™เบ‚เปเป‰เบกเบนเบ™เป‚เบ”เบเปƒเบŠเป‰เบŸเบฑเบ‡เบŠเบฑเบ™ collect(). เบžเบงเบเป€เบฎเบปเบฒเบšเบฑเบ™เบ—เบถเบเบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเปƒเบ™ 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")

เบฎเบดเบชเป‚เบ•เปเบเบฃเบกเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง

เบเบฒเบ™เบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเบญเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™:

  • เบเบฒเบ™เบงเบฒเบ‡เปเบœเบ™เบŠเบธเบ”เบ‚เบญเบ‡ histograms เบ•เบปเบงเบˆเบดเบ‡เป‚เบ”เบเปƒเบŠเป‰ ggplot2.
  • เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง histograms static เบเบฑเบšเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป‚เบ”เบเปƒเบŠเป‰ gganimate.

เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹เบชเบธเบ”โ€‹เบ—เป‰เบฒเบโ€‹เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบžเบฒเบšโ€‹เป€เบ„เบทเปˆเบญเบ™โ€‹เป„เบซเบงโ€‹เปƒเบ™โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบ—เบตเปˆโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹, เบฅเบงเบกโ€‹เบ—เบฑเบ‡ GIF เบซเบผเบท MP4โ€‹.

เบเบณเบฅเบฑเบ‡เป‚เบซเบผเบ”เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”

  • เบซเปเบชเบฐเปเบธเบ”
  • เบซเปเบชเบฐเปเบธเบ”

เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบ‚เปเป‰เบกเบนเบ™

เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบเบฑเปˆเบ™เบ•เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰ 10 เบ›เบฐเป€เบ—เบ”เบญเบฑเบ™เบ”เบฑเบšเบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบ›เบต. เบ‚เปเปƒเบซเป‰เป€เบžเบตเปˆเบกเบ„เปเบฅเปเบฒเบซเบผเบฒเบเป†เบ„เปเบฅเปเบฒเบ—เบตเปˆเบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฐเปเบ”เบ‡เบ„เบงเบฒเบกเบซเบกเบฒเบเบชเปเบฒเบฅเบฑเบš histogram.

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()

เบเบฒเบ™เบชเป‰เบฒเบ‡ histograms static

เบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบŠเบธเบ”เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™, เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเปเบ•เป‰เบก histograms static. เบ‚เปเป‰เบกเบนเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™ - 10 เบ›เบฐเป€เบ—เบ”เบญเบฑเบ™เบ”เบฑเบšเบ•เบปเป‰เบ™เบ—เบตเปˆเบกเบต 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 เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบ. เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เปƒเบ™เบชเปˆเบงเบ™เบฅเบฐเบซเบฑเบ”เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เบกเบตเบซเบผเบฒเบเบˆเบธเบ”เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบกเบตเบซเบปเบงเบ‚เปเป‰ (). เบžเบงเบเบกเบฑเบ™เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเป‚เบ”เบเบšเปเปˆเบกเบตเบšเบฑเบ™เบซเบฒ. เบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบญเบ‡เบžเบงเบเบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบšเปเปˆเบ–เบทเบเบชเบฐเปเบ”เบ‡เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡: เบกเบตเบžเบฝเบ‡เปเบ•เปˆเป€เบชเบฑเป‰เบ™เบ•เบฒเบ‚เปˆเบฒเบเป„เบŸเบŸเป‰เบฒเปเบ™เบงเบ•เบฑเป‰เบ‡ เปเบฅเบฐเบ™เบดเบ—เบฒเบ™เบ—เบตเปˆเบ–เบทเบเปเบ•เป‰เบก, เปเบ•เปˆเบซเบปเบงเบ‚เปเป‰เปเบเบ™ เปเบฅเบฐเบญเบปเบ‡เบ›เบฐเบเบญเบšเบญเบทเปˆเบ™เป†เบซเบผเบฒเบเบญเบฑเบ™เบ–เบทเบเบ–เบญเบ”เบญเบญเบเบˆเบฒเบเบžเบทเป‰เบ™เบ—เบตเปˆ.

เบžเบฒเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง

เบซเบ™เป‰เบฒเบ—เบตเปˆเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เปเบกเปˆเบ™ transition_states(), เบกเบฑเบ™ stitches เป€เบ‚เบปเป‰เบฒเบเบฑเบ™เบเบฒเบŸเบ„เบปเบ‡เบ—เบตเปˆเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. 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")

เบเบฒเบ™เบชเบฐ เป€เปœเบต

เป€เบกเบทเปˆเบญเบญเบฐเบ™เบดเป€เบกเบŠเบฑเบ™เบ–เบทเบเบชเป‰เบฒเบ‡ เปเบฅเบฐเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบงเป‰เปƒเบ™เบงเบฑเบ”เบ–เบธเบญเบฐเบ™เบดเป€เบกเบŠเบฑเบ™, เบกเบฑเบ™เปเบกเปˆเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเบชเบฐเปเบ”เบ‡เบกเบฑเบ™เป‚เบ”เบเปƒเบŠเป‰เบŸเบฑเบ‡เบŠเบฑเบ™ animate(). renderer เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™ 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 )

เบœเบปเบ™

เบชเป‰เบฒเบ‡ Histograms เปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเป‚เบ”เบเปƒเบŠเป‰ R

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰, เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบชเบฑเบšเบชเบปเบ™. เป‚เบ„เบ‡เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบกเบตเบขเบนเปˆเปƒเบ™ GitHub เบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™เบ•เบฒเบกเบ—เบตเปˆเบ—เปˆเบฒเบ™เป€เบซเบฑเบ™เป€เบซเบกเบฒเบฐ.

Skillbox เปเบ™เบฐเบ™เปเบฒ:

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™