
λͺ¨λ μΉμ¬μ΄νΈμ κ²μλ¬Όμ μ§μ μ½μ
ν μ μλ μ λλ©μ΄μ
λ§λ μ°¨νΈκ° μ μ μΈκΈ°λ₯Ό μ»κ³ μμ΅λλ€. μ΄λ νΉμ μκ° λμ λͺ¨λ νΉμ±μ λ³ν μνμ νμνκ³ μ΄λ₯Ό λͺ
ννκ² μνν©λλ€. R λ° μΌλ° ν¨ν€μ§λ₯Ό μ¬μ©νμ¬ μ΄λ₯Ό μμ±νλ λ°©λ²μ μ΄ν΄λ³΄κ² μ΅λλ€.
Skillboxλ λ€μμ κΆμ₯ν©λλ€. μ€κΈ° μ½μ€ .
μλ¦Ό: "Habr"μ λͺ¨λ λ μλ₯Ό μν - "Habr" νλ‘λͺ¨μ μ½λλ₯Ό μ¬μ©νμ¬ Skillbox κ³Όμ μ λ±λ‘ν λ 10 λ£¨λΈ ν μΈ.
ν¨ν€μ§
Rμλ ν¨ν€μ§κ° νμν©λλ€.
- ggplot2
μ΄ λ κ°μ§λ λ§€μ° νμν©λλ€. λν λ°μ΄ν°λ₯Ό κ΄λ¦¬νκ³ κ·Έμ λ°λΌ λ°°μ΄μ μ 리νκ³ ν¬λ§·νλ €λ©΄ tidyverse, κ΄λ¦¬μΈ λ° μ μΈμ΄ νμν©λλ€.
λ°μ΄ν°
μ΄ νλ‘μ νΈμμ μ¬μ©ν μλ³Έ λ°μ΄ν°μΈνΈλ World Bank μΉμ¬μ΄νΈμμ λ€μ΄λ‘λλ©λλ€. μ¬κΈ° μμ΅λλ€ - . λμΌν λ°μ΄ν°κ° 미리 λ§λ€μ΄μ Έ μμ΄μΌ νλ κ²½μ° λ€μμμ λ€μ΄λ‘λν μ μμ΅λλ€. .
μ΄κ²μ μ΄λ€ μ’ λ₯μ μ 보μ λκΉ? μνμλ μλ κ°(2000λ λΆν° 2017λ κΉμ§) λλΆλΆμ κ΅κ°μ GDP κ°μΉκ° ν¬ν¨λμ΄ μμ΅λλ€.
λ°μ΄ν° μ²λ¦¬
μλμ κ²μλ μ½λλ₯Ό μ¬μ©νμ¬ νμν λ°μ΄ν° νμμ μ€λΉνκ² μ΅λλ€. μ΄ μ΄λ¦μ μ§μ°κ³ , μ«μλ₯Ό μ«μ νμμΌλ‘ λ³ννκ³ , μμ§() ν¨μλ₯Ό μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό λ³νν©λλ€. λμ€μ μ¬μ©ν μ μλλ‘ gdp_tidy.csvμ μμ λ λͺ¨λ λ΄μ©μ μ μ₯ν©λλ€.
library(tidyverse)
library(janitor)
GDP <- read_csv("./data/GDP_Data.csv")
#νμ μ΄ μ ν
GDP <- GDP %>% μ ν(3:15)
#κ΅κ° νλ§ νν°λ§
GDP <- GDP[1:217,]
GDP_μ 리 <- GDP %>%
mutate_at(vars(contains("YR")),as.numeric) %>%
gather(λ
λ,κ°,3:13) %>%
κ΄λ¦¬μΈ::clean_names() %>%
mutate(λ
λ = as.numeric(stringr::str_sub(λ
λ,1,4)))
write_csv(gdp_tidy,"./data/gdp_tidy.csv")
μ λλ©μ΄μ νμ€ν κ·Έλ¨
μμ±μλ λ λ¨κ³κ° νμν©λλ€.
- ggplot2λ₯Ό μ¬μ©νμ¬ μ€μ νμ€ν κ·Έλ¨μ μ 체 μΈνΈλ₯Ό νλ‘―ν©λλ€.
- gganimateλ₯Ό μ¬μ©νμ¬ μνλ λ§€κ°λ³μλ‘ μ μ νμ€ν κ·Έλ¨μ μ λλ©μ΄μ μ μ μ©ν©λλ€.
λ§μ§λ§ λ¨κ³λ GIF λλ MP4λ₯Ό ν¬ν¨νμ¬ μνλ νμμΌλ‘ μ λλ©μ΄μ μ λ λλ§νλ κ²μ λλ€.
λΌμ΄λΈλ¬λ¦¬ λ‘λ μ€
- λμκ΄(νμ΄λλ²μ€)
- λμκ΄(gganimate)
λ°μ΄ν° κ΄λ¦¬
μ΄ λ¨κ³μμλ λ°μ΄ν°λ₯Ό νν°λ§νμ¬ λ§€λ μμ 10κ° κ΅κ°λ₯Ό κ°μ ΈμμΌ ν©λλ€. νμ€ν κ·Έλ¨μ λ²λ‘λ₯Ό νμν μ μλ μ¬λ¬ μ΄μ μΆκ°ν΄ λ³΄κ² μ΅λλ€.
gdp_tidy <- read_csv("./data/gdp_tidy.csv")
gdp_formatted <- gdp_tidy %>%
κ·Έλ£Ήν(λ
) %>%
# * 1μ μ¬μ©νλ©΄ μ¬λΌμ΄λ©νλ λμ μ μκ° μλ μμλ₯Ό κ°μ§ μ μμ΅λλ€.
mutate(μμ = μμ(-κ°),
Value_rel = κ°/κ°[μμ==1],
Value_lbl = paste0(" ",round(value/1e9))) %>%
κ΅κ°λͺ
λ³ κ·Έλ£Ήν %>%
νν°(μμ <=10) %>%
κ·Έλ£Ή ν΄μ ()
μ μ νμ€ν κ·Έλ¨ μμ±
μ΄μ νμν νμμ λ°μ΄ν° ν¨ν€μ§κ° μμΌλ―λ‘ μ μ νμ€ν κ·Έλ¨ κ·Έλ¦¬κΈ°λ₯Ό μμν©λλ€. κΈ°λ³Έ μ 보 - μ νν κΈ°κ° λμ μ΅λ 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λ₯Ό μ¬μ©νμ¬ νλ‘―μ λ§λλ κ²μ λ§€μ° κ°λ¨ν©λλ€. μμ μ½λ μΉμ μμ λ³Ό μ μλ―μ΄ theme() ν¨μμλ λͺ κ°μ§ ν΅μ¬ μ¬νμ΄ μμ΅λλ€. λͺ¨λ μμκ° λ¬Έμ μμ΄ μ λλ©μ΄μ λλλ‘ νλ €λ©΄ νμν©λλ€. νμν κ²½μ° μΌλΆλ νμλμ§ μμ μ μμ΅λλ€. μ: μμ§ κ·Έλ¦¬λ μ κ³Ό λ²λ‘λ§ κ·Έλ €μ§μ§λ§ μΆ μ λͺ©κ³Ό κΈ°ν μ¬λ¬ κ΅¬μ± μμλ μμμμ μ κ±°λ©λλ€.
μκΈ°
μ¬κΈ°μ ν΅μ¬ κΈ°λ₯μ μ ν_μν()μ΄λ©°, μ΄λ λ³λμ μ μ κ·Έλνλ₯Ό ν¨κ» μ°κ²°ν©λλ€. 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")
νν
μ λλ©μ΄μ μ΄ μμ±λμ΄ anim κ°μ²΄μ μ μ₯λλ©΄ animate() ν¨μλ₯Ό μ¬μ©νμ¬ λ λλ§ν μ°¨λ‘μ λλ€. animate()μ μ¬μ©λλ λ λλ¬λ νμν μΆλ ₯ νμΌ μ νμ λ°λΌ λ€λ₯Ό μ μμ΅λλ€.
GIF
# For GIF
animate(μ λλ©μ΄μ
, 200, fps = 20, λλΉ = 1200, λμ΄ = 1000,
λ λλ¬ = gifski_renderer("gganim.gif"))
MP4
# For MP4
animate(μ λλ©μ΄μ
, 200, fps = 20, λλΉ = 1200, λμ΄ = 1000,
λ λλ¬ = ffmpeg_renderer()) -> for_mp4
anim_save("μ λλ©μ΄μ .mp4", μ λλ©μ΄μ = for_mp4)
κ²°κ³Ό

보μλ€μνΌ λ³΅μ‘ν κ²μ μμ΅λλ€. μ 체 νλ‘μ νΈλ λ€μμμ μ¬μ©ν μ μμ΅λλ€. , μ ν©νλ€κ³ νλ¨λλ λλ‘ μ¬μ©ν μ μμ΅λλ€.
Skillboxλ λ€μμ κΆμ₯ν©λλ€.
- XNUMXλ μ€μ΅ μ½μ€ .
- μ¨λΌμΈ μ½μ€ .
- μ€κΈ° μ½μ€ .
μΆμ² : habr.com
