เชเชจเชฟเชฎเซเชเซเชก เชฌเชพเชฐ เชเชพเชฐเซเช เชเซ เชเซ เชเซเชเชชเชฃ เชตเซเชฌเชธเชพเชเช เชชเชฐเชจเซ เชชเซเชธเซเชเชฎเชพเช เชธเซเชงเชพ เช เชเชฎเซเชฌเซเชก เชเชฐเซ เชถเชเชพเชฏ เชเซ เชคเซ เชตเชงเซเชจเซ เชตเชงเซ เชฒเซเชเชชเซเชฐเชฟเชฏ เชฌเชจเซ เชฐเชนเซเชฏเชพ เชเซ. เชคเซเช เชเซเชเซเชเชธ เชธเชฎเชฏ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชเซเชเชชเชฃ เชฒเชพเชเซเชทเชฃเชฟเชเชคเชพเชเชฎเชพเช เชซเซเชฐเชซเชพเชฐเซเชจเซ เชเชคเชฟเชถเซเชฒเชคเชพ เชฆเชฐเซเชถเชพเชตเซ เชเซ เช
เชจเซ เช เชธเซเชชเชทเซเชเชชเชฃเซ เชเชฐเซ เชเซ. เชเชพเชฒเซ เชเซเชเช เชเซ R เช
เชจเซ เชธเชพเชฎเชพเชจเซเชฏ เชชเซเชเซเชเซเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชคเซเชฎเชจเซ เชเซเชตเซ เชฐเซเชคเซ เชฌเชจเชพเชตเชตเซเช.
เชธเซเชเชฟเชฒเชฌเซเชเซเชธ เชญเชฒเชพเชฎเชฃ เชเชฐเซ เชเซ: เชชเซเชฐเซเชเซเชเชฟเชเชฒ เชเซเชฐเซเชธ
"เชถเชฐเซเชเชคเชฅเซ เชชเชพเชฏเชฅเซเชจ เชกเซเชตเชฒเชชเชฐ" .เช เชฎเซ เชฏเชพเชฆ เชเชฐเชพเชตเซเช เชเซเช: Habrเชจเชพ เชคเชฎเชพเชฎ เชตเชพเชเชเซ เชฎเชพเชเซ - Habr เชชเซเชฐเซเชฎเซ เชเซเชกเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเซเชเชชเชฃ เชธเซเชเชฟเชฒเชฌเซเชเซเชธ เชเซเชฐเซเชธเชฎเชพเช เชจเซเชเชงเชฃเซ เชเชฐเชคเซ เชตเชเชคเซ 10 เชฐเซเชฌเชฒ เชกเชฟเชธเซเชเชพเชเชจเซเช.
เชชเซเชเซเชเซ
เช เชฎเชจเซ R เชฎเชพเช เชชเซเชเซเชเซเชจเซ เชเชฐเซเชฐ เชเซ:
- ggplot2
-
เชเชเชจเชฎเซเช
เช เชฌเซ เช เชคเซเชฏเชเชค เชเชฐเซเชฐเซ เชเซ. เชตเชงเซเชฎเชพเช, เชกเซเชเชพ เชฎเซเชจเซเช เชเชฐเชตเชพ, เชเชฐเซ เชธเชพเชซ เชเชฐเชตเชพ เช เชจเซ เชคเซ เชฎเซเชเชฌ เชซเซเชฐเซเชฎเซเช เชเชฐเชตเชพ เชฎเชพเชเซ เชตเซเชฏเชตเชธเซเชฅเชฟเชค, เชฆเชฐเชตเชพเชจ เช เชจเซ เชญเซเชเชเชกเชพเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ.
เชฎเชพเชนเชฟเชคเซ
เช
เชฎเซ เช เชชเซเชฐเซเชเซเชเซเชเชฎเชพเช เชเซ เชฎเซเชณ เชกเซเชเชพเชธเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเซเชถเซเช เชคเซ เชตเชฟเชถเซเชต เชฌเซเชเชเชจเซ เชตเซเชฌเชธเชพเชเช เชชเชฐเชฅเซ เชกเชพเชเชจเชฒเซเชก เชเชฐเซเชฒ เชเซ. เช เชฐเชนเซเชฏเชพ เชคเซเช -
เช เชเซเชตเชพ เชชเซเชฐเชเชพเชฐเชจเซ เชฎเชพเชนเชฟเชคเซ เชเซ? เชจเชฎเซเชจเชพเชฎเชพเช เชเชฃเชพ เชตเชฐเซเชทเซ (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()
เชธเซเชฅเชฟเชฐ เชนเชฟเชธเซเชเซเชเซเชฐเชพเชฎ เชฌเชจเชพเชตเชตเซเช
เชนเชตเซ เช เชฎเชพเชฐเซ เชชเชพเชธเซ เชเชฐเซเชฐเซ เชซเซเชฐเซเชฎเซเชเชฎเชพเช เชกเซเชเชพ เชชเซเชเซเช เชเซ, เช เชฎเซ เชธเซเชเซเชเชฟเช เชนเชฟเชธเซเชเซเชเซเชฐเชพเชฎ เชฆเซเชฐเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซเช เชเซเช. เชฎเซเชณเชญเซเชค เชฎเชพเชนเชฟเชคเซ - เชชเชธเชเชฆ เชเชฐเซเชฒ เชธเชฎเชฏ เช เชเชคเชฐเชพเชฒ เชฎเชพเชเซ เชฎเชนเชคเซเชคเชฎ GDP เชธเชพเชฅเซ เชเซเชเชจเชพ 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")
เชฐเซเชจเซเชกเชฐเซเชเช
เชเชเชตเชพเชฐ เชเชจเชฟเชฎเซเชถเชจ เชฌเชจเซ เชเชพเชฏ เช เชจเซ เชเชจเชฟเชฎ เชเชฌเซเชเซเชเซเชเชฎเชพเช เชธเชเชเซเชฐเชนเชฟเชค เชฅเช เชเชพเชฏ, เชเชจเชฟเชฎเซเช() เชซเชเชเซเชถเชจเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชคเซเชจเซ เชฐเซเชจเซเชกเชฐ เชเชฐเชตเชพเชจเซ เชธเชฎเชฏ เชเซ. เชเชจเชฟเชฎเซเช() เชฎเชพเช เชตเชชเชฐเชพเชคเซเช เชฐเซเชจเซเชกเชฐเชฐ เชเชฐเซเชฐเซ เชเชเชเชชเซเช เชซเชพเชเชฒเชจเชพ เชชเซเชฐเชเชพเชฐเชจเซ เชเชงเชพเชฐเซ เช เชฒเช เชนเซเช เชถเชเซ เชเซ.
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 )
เชชเชฐเชฟเชฃเชพเชฎ
เชเซเชฎ เชคเชฎเซ เชเซเช เชถเชเซ เชเซ, เชเชเช เชเชเชฟเชฒ เชจเชฅเซ. เชธเชฎเชเซเชฐ เชชเซเชฐเซเชเซเชเซเชเชฎเชพเช เชเชชเชฒเชฌเซเชง เชเซ
เชธเซเชเชฟเชฒเชฌเซเชเซเชธ เชญเชฒเชพเชฎเชฃ เชเชฐเซ เชเซ:
- เชฌเซ เชตเชฐเซเชทเชจเซ เชชเซเชฐเซเชเซเชเชฟเชเชฒ เชเซเชฐเซเชธ
"เชนเซเช เชชเซเชฐเซ เชตเซเชฌ เชกเซเชตเชฒเชชเชฐ เชเซเช" .- เชเชจเชฒเชพเชเชจ เชเซเชฐเซเชธ
"เชถเชฐเซเชเชคเชฅเซ C# เชตเชฟเชเชพเชธเชเชฐเซเชคเชพ" .- เชเช เชตเชฐเซเชทเชจเซ เชชเซเชฐเซเชเซเชเชฟเชเชฒ เชเซเชฐเซเชธ
"0 เชฅเซ PRO เชธเซเชงเซ PHP เชตเชฟเชเชพเชธเชเชฐเซเชคเชพ" .
เชธเซเชฐเซเชธ: www.habr.com