
Animované stĺpcové grafy, ktoré možno vložiť priamo do príspevku na ľubovoľnej webovej stránke, sú čoraz populárnejšie. Zobrazujú dynamiku zmien akýchkoľvek charakteristík za určitý čas a robia to jasne. Pozrime sa, ako ich vytvoriť pomocou R a generických balíkov.
Skillbox odporúča: Praktický kurz .
Pripomíname vám: pre všetkých čitateľov „Habr“ - zľava 10 000 rubľov pri registrácii do akéhokoľvek kurzu Skillbox pomocou propagačného kódu „Habr“.
balíčky
Potrebujeme balíky v R:
- ggplot2
Títo dvaja sú mimoriadne potrební. Okrem toho bude potrebný poriadok, správca a váhy na správu údajov, vyčistenie poľa a príslušné formátovanie.
Dáta
Pôvodný súbor údajov, ktorý použijeme v tomto projekte, je stiahnutý z webovej stránky Svetovej banky. Tu sú - . Rovnaké údaje, ak ich potrebujete hotové, je možné stiahnuť z .
Čo je to za informácie? Vzorka obsahuje hodnotu HDP väčšiny krajín za niekoľko rokov (od roku 2000 do roku 2017).
Spracovanie dát
Na prípravu požadovaného formátu údajov použijeme kód uvedený nižšie. Vymažeme názvy stĺpcov, zmeníme čísla na číselný formát a prevedieme údaje pomocou funkcie collect(). Všetko prijaté v gdp_tidy.csv uložíme na ďalšie použitie.
library(tidyverse)
library(janitor)
hdp <- read_csv("./data/GDP_Data.csv")
#vyberte požadované stĺpce
HDP <- HDP %>% select(3:15)
#filtrovať iba riadky krajín
HDP <- HDP[1:217,]
gdp_tidy <- HDP %>%
mutate_at(vars(obsahuje("YR")),as.numeric) %>%
zhromaždiť(rok,hodnota,3:13) %>%
janitor::clean_names() %>%
mutovať(rok = as.numeric(stringr::str_sub(rok,1,4)))
write_csv(gdp_tidy, "./data/gdp_tidy.csv")
Animované histogramy
Ich vytvorenie si vyžaduje dve fázy:
- Vykreslenie kompletnej sady skutočných histogramov pomocou ggplot2.
- Animujte statické histogramy s požadovanými parametrami pomocou gganimate.
Posledným krokom je vykreslenie animácie v požadovanom formáte vrátane GIF alebo MP4.
Načítavajú sa knižnice
- knižnica (uprataný)
- knižnica (gganimate)
Správa údajov
V tomto kroku musíte filtrovať údaje, aby ste získali 10 najlepších krajín pre každý rok. Pridajme niekoľko stĺpcov, ktoré nám umožnia zobraziť legendu k histogramu.
gdp_tidy <- read_csv("./data/gdp_tidy.csv")
gdp_formatted <- gdp_tidy %>%
zoskupenie_podľa(rok) %>%
# * 1 umožňuje mať pri posúvaní neceločíselné hodnosti
mutovať(poradie = poradie(-hodnota),
Hodnota_rel = hodnota/hodnota[poradie==1],
Value_lbl = paste0(" ",round(value/1e9))) %>%
group_by(názov_krajiny) %>%
filter (poradie <=10) %>%
rozoskupiť()
Vytváranie statických histogramov
Teraz, keď máme dátový balík v požadovanom formáte, začneme kresliť statické histogramy. Základné informácie - top 10 krajín s maximálnym HDP za zvolený časový interval. Vytvárame grafy pre každý rok.
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"))
Vytváranie grafov pomocou ggplot2 je veľmi jednoduché. Ako môžete vidieť v časti kódu vyššie, funkcia theme() má niekoľko kľúčových bodov. Sú potrebné, aby sa všetky prvky animovali bez problémov. Niektoré z nich sa v prípade potreby nemusia zobraziť. Príklad: Nakreslia sa iba zvislé čiary mriežky a legendy, ale z oblasti sa odstránia názvy osí a niekoľko ďalších komponentov.
animácie
Kľúčovou funkciou je tu transition_states(), spája samostatné statické grafy. view_follow() sa používa na kreslenie čiar mriežky.
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")
Vykreslenie
Keď je animácia vytvorená a uložená v objekte anim, je čas ju vykresliť pomocou funkcie animate(). Renderer použitý v animate() sa môže líšiť v závislosti od typu požadovaného výstupného súboru.
Gif
# For GIF
animovať(anim, 200, fps = 20, šírka = 1200, výška = 1000,
renderer = gifski_renderer("gganim.gif"))
MP4
# For MP4
animovať(anim, 200, fps = 20, šírka = 1200, výška = 1000,
renderer = ffmpeg_renderer()) -> for_mp4
anim_save("animácia.mp4", animácia = pre_mp4)
Výsledok

Ako vidíte, nič zložité. Celý projekt je dostupný v , môžete ho použiť, ako uznáte za vhodné.
Skillbox odporúča:
- Dvojročný praktický kurz .
- Online kurz .
- Praktický ročníkový kurz .
Zdroj: hab.com
