เจ†เจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจเจจเฉ€เจฎเฉ‡เจŸเจก เจนเจฟเจธเจŸเฉ‹เจ—เฉเจฐเจพเจฎ เจฌเจฃเจพเจ“

เจ†เจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจเจจเฉ€เจฎเฉ‡เจŸเจก เจนเจฟเจธเจŸเฉ‹เจ—เฉเจฐเจพเจฎ เจฌเจฃเจพเจ“

เจเจจเฉ€เจฎเฉ‡เจŸเจก เจฌเจพเจฐ เจšเจพเจฐเจŸ เจœเฉ‹ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจตเฉˆเจฌเจธเจพเจˆเจŸ 'เจคเฉ‡ เจ‡เฉฑเจ• เจชเฉ‹เจธเจŸ เจตเจฟเฉฑเจš เจธเจฟเฉฑเจงเฉ‡ เจเจฎเจฌเฉ‡เจก เจ•เฉ€เจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจ เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจชเฉเจฐเจธเจฟเฉฑเจง เจนเฉ‹ เจฐเจนเฉ‡ เจนเจจเฅค เจ‰เจน เจ‡เฉฑเจ• เจจเจฟเจธเจผเจšเจฟเจค เจธเจฎเฉ‡เจ‚ เจตเจฟเฉฑเจš เจ•เจฟเจธเฉ‡ เจตเฉ€ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเฉ€ เจ—เจคเฉ€เจธเจผเฉ€เจฒเจคเจพ เจจเฉ‚เฉฐ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจ‡เจน เจธเจชเจธเจผเจŸ เจคเฉŒเจฐ เจคเฉ‡ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจ†เจ‰ เจตเฉ‡เจ–เฉ€เจ เจ•เจฟ R เจ…เจคเฉ‡ เจœเฉˆเจจเจฐเจฟเจ• เจชเฉˆเจ•เฉ‡เจœเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฌเจฃเจพเจ‡เจ† เจœเจพเจตเฉ‡เฅค

เจธเจ•เจฟเฉฑเจฒเจฌเจพเจ•เจธ เจธเจฟเจซเจผเจพเจฐเจฟเจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆ: เจชเฉเจฐเฉˆเจ•เจŸเฉ€เจ•เจฒ เจ•เฉ‹เจฐเจธ "เจธเจ•เฉเจฐเฉˆเจš เจคเฉ‹เจ‚ เจชเจพเจˆเจฅเจจ เจกเจฟเจตเฉˆเจฒเจชเจฐ".

เจ…เจธเฉ€เจ‚ เจฏเจพเจฆ เจฆเจฟเจตเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚: "Habr" เจฆเฉ‡ เจธเจพเจฐเฉ‡ เจชเจพเจ เจ•เจพเจ‚ เจฒเจˆ - "Habr" เจชเฉเจฐเจšเจพเจฐ เจ•เฉ‹เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจธเจ•เจฟเฉฑเจฒเจฌเจพเจ•เจธ เจ•เฉ‹เจฐเจธ เจตเจฟเฉฑเจš เจฆเจพเจ–เจฒเจพ เจฒเฉˆเจฃ เจตเฉ‡เจฒเฉ‡ 10 เจฐเฉ‚เจฌเจฒ เจฆเฉ€ เจ›เฉ‹เจŸเฅค

เจชเฉˆเจ•เฉ‡เจœ

เจธเจพเจจเฉ‚เฉฐ เจ†เจฐ เจตเจฟเฉฑเจš เจชเฉˆเจ•เฉ‡เจœเจพเจ‚ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ:

เจ‡เจน เจฆเฉ‹เจตเฉ‡เจ‚ เจ…เจคเจฟ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเจจเฅค เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจกเฉ‡เจŸเจพ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจ•เจฐเจจ, เจเจฐเฉ‡ เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจ•เจฐเจจ เจ…เจคเฉ‡ เจ‰เจธ เจ…เจจเฉเจธเจพเจฐ เจซเจพเจฐเจฎเฉˆเจŸ เจ•เจฐเจจ เจฒเจˆ tidyverse, janitor เจ…เจคเฉ‡ เจธเจ•เฉ‡เจฒเจพเจ‚ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค

เจกเจพเจŸเจพ

เจ…เจธเจฒ เจกเฉ‡เจŸเจพเจธเฉˆเจŸ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจ‡เจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจฟเฉฑเจš เจตเจฐเจคเจพเจ‚เจ—เฉ‡ เจ‰เจน เจตเจฟเจธเจผเจต เจฌเฉˆเจ‚เจ• เจฆเฉ€ เจตเฉˆเฉฑเจฌเจธเจพเจˆเจŸ เจคเฉ‹เจ‚ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจ‰เจน เจ‡เฉฑเจฅเฉ‡ เจนเจจ - เจตเจฟเจธเจผเจต เจฌเฉˆเจ‚เจ• เจกเฉ‡เจŸเจพ. เจ‰เจนเฉ€ เจกเฉ‡เจŸเจพ, เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธเจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจธ เจคเฉ‹เจ‚ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจซเฉ‹เจฒเจกเจฐ.

เจ‡เจน เจ•เจฟเจธ เจ•เจฟเจธเจฎ เจฆเฉ€ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจนเฉˆ? เจจเจฎเฉ‚เจจเฉ‡ เจตเจฟเฉฑเจš เจ•เจˆ เจธเจพเจฒเจพเจ‚ (2000 เจคเฉ‹เจ‚ 2017 เจคเฉฑเจ•) เจฒเจˆ เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจฆเฉ‡เจธเจผเจพเจ‚ เจฆเจพ เจœเฉ€เจกเฉ€เจชเฉ€ เจฎเฉเฉฑเจฒ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค

เจกเจพเจŸเจพ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ—

เจ…เจธเฉ€เจ‚ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจกเฉ‡เจŸเจพ เจซเจพเจฐเจฎเฉˆเจŸ เจจเฉ‚เฉฐ เจคเจฟเจ†เจฐ เจ•เจฐเจจ เจฒเจˆ เจนเฉ‡เจ เจพเจ‚ เจชเฉ‹เจธเจŸ เจ•เฉ€เจคเฉ‡ เจ•เฉ‹เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค เจ…เจธเฉ€เจ‚ เจ•เจพเจฒเจฎ เจฆเฉ‡ เจจเจพเจฎ เจธเจพเจซเจผ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจจเฉฐเจฌเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจจเฉฐเจฌเจฐ เจซเจพเจฐเจฎเฉˆเจŸ เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฆเฉ‡ เจนเจพเจ‚, เจ…เจคเฉ‡ gather() เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฆเฉ‡ เจนเจพเจ‚เฅค เจ…เจธเฉ€เจ‚ เจ…เจ—เจฒเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฒเจˆ 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 เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจชเจฒเจพเจŸ เจฌเจฃเจพเจ‰เจฃเจพ เจฌเจนเฉเจค เจธเฉŒเจ–เจพ เจนเฉˆเฅค เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจ‰เจชเจฐเฉ‹เจ•เจค เจ•เฉ‹เจก เจญเจพเจ— เจตเจฟเฉฑเจš เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจฅเฉ€เจฎ() เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ‡ เจจเจพเจฒ เจ•เจˆ เจฎเฉเฉฑเจ– เจจเฉเจ•เจคเฉ‡ เจนเจจเฅค เจ‰เจน เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเจจ เจคเจพเจ‚ เจœเฉ‹ เจธเจพเจฐเฉ‡ เจคเฉฑเจค เจฌเจฟเจจเจพเจ‚ เจ•เจฟเจธเฉ‡ เจธเจฎเฉฑเจธเจฟเจ† เจฆเฉ‡ เจเจจเฉ€เจฎเฉ‡เจŸ เจนเฉ‹ เจธเจ•เจฃ. เจœเฉ‡ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡ เจคเจพเจ‚ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ•เฉเจ เจจเฉ‚เฉฐ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจจ: เจธเจฟเจฐเจซเจผ เจฒเฉฐเจฌเจ•เจพเจฐเฉ€ เจ—เจฐเจฟเฉฑเจก เจฒเจพเจˆเจจเจพเจ‚ เจ…เจคเฉ‡ เจฆเฉฐเจคเจ•เจฅเจพเจตเจพเจ‚ เจ–เจฟเฉฑเจšเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจนเจจ, เจชเจฐ เจงเฉเจฐเฉ‡ เจฆเฉ‡ เจธเจฟเจฐเจฒเฉ‡เจ– เจ…เจคเฉ‡ เจ•เจˆ เจนเฉ‹เจฐ เจญเจพเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจ–เฉ‡เจคเจฐ เจคเฉ‹เจ‚ เจนเจŸเจพ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค

เจเจจเฉ€เจฎเฉ‡เจธเจผเจจ

เจ‡เฉฑเจฅเฉ‡ เจฎเฉเฉฑเจ– เจซเฉฐเจ•เจธเจผเจจ transition_states() เจนเฉˆ, เจ‡เจน เจตเฉฑเจ–เจฐเฉ‡ เจธเจฅเจฟเจฐ เจ—เฉเจฐเจพเจซเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจฆเจพ เจนเฉˆเฅค 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() เจตเจฟเฉฑเจš เจตเจฐเจคเจฟเจ† เจœเจพเจฃ เจตเจพเจฒเจพ เจฐเฉˆเจ‚เจกเจฐเจฐ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจซเจพเจˆเจฒ เจฆเฉ€ เจ•เจฟเจธเจฎ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจตเฉฑเจ–เจฐเจพ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆเฅค

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, เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเจฟเจตเฉ‡เจ‚ เจคเฉเจธเฉ€เจ‚ เจซเจฟเฉฑเจŸ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเฉ‹เฅค

เจธเจ•เจฟเฉฑเจฒเจฌเจพเจ•เจธ เจธเจฟเจซเจผเจพเจฐเจฟเจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆ:

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹