เจเจจเฉเจฎเฉเจเจก เจฌเจพเจฐ เจเจพเจฐเจ เจเฉ เจเจฟเจธเฉ เจตเฉ เจตเฉเจฌเจธเจพเจเจ 'เจคเฉ เจเฉฑเจ เจชเฉเจธเจ เจตเจฟเฉฑเจ เจธเจฟเฉฑเจงเฉ เจเจฎเจฌเฉเจก เจเฉเจคเฉ เจเจพ เจธเจเจฆเฉ เจนเจจ เจคเฉเจเจผเฉ เจจเจพเจฒ เจชเฉเจฐเจธเจฟเฉฑเจง เจนเฉ เจฐเจนเฉ เจนเจจเฅค เจเจน เจเฉฑเจ เจจเจฟเจธเจผเจเจฟเจค เจธเจฎเฉเจ เจตเจฟเฉฑเจ เจเจฟเจธเฉ เจตเฉ เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจตเจฟเฉฑเจ เจคเจฌเจฆเฉเจฒเฉเจเจ เจฆเฉ เจเจคเฉเจธเจผเฉเจฒเจคเจพ เจจเฉเฉฐ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจเจฐเจฆเฉ เจนเจจ เจ
เจคเฉ เจเจน เจธเจชเจธเจผเจ เจคเฉเจฐ เจคเฉ เจเจฐเจฆเฉ เจนเจจเฅค เจเจ เจตเฉเจเฉเจ เจเจฟ R เจ
เจคเฉ เจเฉเจจเจฐเจฟเจ เจชเฉเจเฉเจเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเจนเจจเจพเจ เจจเฉเฉฐ เจเจฟเจตเฉเจ เจฌเจฃเจพเจเจ เจเจพเจตเฉเฅค
เจธเจเจฟเฉฑเจฒเจฌเจพเจเจธ เจธเจฟเจซเจผเจพเจฐเจฟเจธเจผ เจเจฐเจฆเจพ เจนเฉ: เจชเฉเจฐเฉเจเจเฉเจเจฒ เจเฉเจฐเจธ
"เจธเจเฉเจฐเฉเจ เจคเฉเจ เจชเจพเจเจฅเจจ เจกเจฟเจตเฉเจฒเจชเจฐ" .เจ เจธเฉเจ เจฏเจพเจฆ เจฆเจฟเจตเจพเจเจเจฆเฉ เจนเจพเจ: "Habr" เจฆเฉ เจธเจพเจฐเฉ เจชเจพเจ เจเจพเจ เจฒเจ - "Habr" เจชเฉเจฐเจเจพเจฐ เจเฉเจก เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจเจฟเจธเฉ เจตเฉ เจธเจเจฟเฉฑเจฒเจฌเจพเจเจธ เจเฉเจฐเจธ เจตเจฟเฉฑเจ เจฆเจพเจเจฒเจพ เจฒเฉเจฃ เจตเฉเจฒเฉ 10 เจฐเฉเจฌเจฒ เจฆเฉ เจเฉเจเฅค
เจชเฉเจเฉเจ
เจธเจพเจจเฉเฉฐ เจเจฐ เจตเจฟเฉฑเจ เจชเฉเจเฉเจเจพเจ เจฆเฉ เจฒเฉเฉ เจนเฉ:
- ggplot2
-
gganimate
เจเจน เจฆเฉเจตเฉเจ เจ เจคเจฟ เจเจผเจฐเฉเจฐเฉ เจนเจจเฅค เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, เจกเฉเจเจพ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจเจฐเจจ, เจเจฐเฉ เจจเฉเฉฐ เจธเจพเจซเจผ เจเจฐเจจ เจ เจคเฉ เจเจธ เจ เจจเฉเจธเจพเจฐ เจซเจพเจฐเจฎเฉเจ เจเจฐเจจ เจฒเจ 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 )
เจเจธ เจฆเจพ เจจเจคเฉเจเจพ
เจเจฟเจตเฉเจ เจเจฟ เจคเฉเจธเฉเจ เจฆเฉเจ เจธเจเจฆเฉ เจนเฉ, เจเฉเจ เจตเฉ เจเฉเฉฐเจเจฒเจฆเจพเจฐ เจจเจนเฉเจ เจนเฉ. เจตเจฟเฉฑเจ เจชเฉเจฐเจพ เจชเฉเจฐเฉเจเฉเจเจ เจเจชเจฒเจฌเจง เจนเฉ
เจธเจเจฟเฉฑเจฒเจฌเจพเจเจธ เจธเจฟเจซเจผเจพเจฐเจฟเจธเจผ เจเจฐเจฆเจพ เจนเฉ:
- เจฆเฉ เจธเจพเจฒเจพ เจชเฉเจฐเฉเจเจเฉเจเจฒ เจเฉเจฐเจธ
"เจฎเฉเจ เจเฉฑเจ เจชเฉเจฐเฉ เจตเฉเฉฑเจฌ เจกเจฟเจตเฉเจฒเจชเจฐ เจนเจพเจ" .- Onlineเจจเจฒเจพเจเจจ เจเฉเจฐเจธ
"เจธเจเฉเจฐเฉเจ เจคเฉเจ C# เจกเจฟเจตเฉเจฒเจชเจฐ" .- เจชเฉเจฐเฉเจเจเฉเจเจฒ เจธเจพเจฒ เจฆเจพ เจเฉเจฐเจธ
"0 เจคเฉเจ PRO เจคเฉฑเจ PHP เจกเจฟเจตเฉเจฒเจชเจฐ" .
เจธเจฐเฉเจค: www.habr.com