
Animirani palični grafikoni, ki jih je mogoče vdelati neposredno v objavo na kateri koli spletni strani, postajajo vse bolj priljubljeni. Prikazujejo dinamiko sprememb katere koli značilnosti v določenem času in to naredijo jasno. Poglejmo, kako jih ustvariti z uporabo R in generičnih paketov.
Skillbox priporoča: Praktični tečaj .
Spomnimo: za vse bralce "Habr" - popust v višini 10 rubljev ob vpisu v kateri koli tečaj Skillbox s promocijsko kodo "Habr".
Paketi
Potrebujemo pakete v R:
- ggplot2
To dvoje je izjemno potrebno. Poleg tega bodo za upravljanje podatkov, čiščenje matrike in ustrezno formatiranje potrebni tidyverse, hišnik in tehtnice.
Podatki
Izvirni nabor podatkov, ki ga bomo uporabili v tem projektu, je prenesen s spletne strani Svetovne banke. Tukaj so - . Iste podatke, če jih potrebujete že pripravljene, lahko prenesete iz .
Kakšna informacija je to? Vzorec vsebuje vrednost BDP večine držav za več let (od 2000 do 2017).
Obdelava podatkov
Za pripravo zahtevane oblike podatkov bomo uporabili kodo, objavljeno spodaj. Počistimo imena stolpcev, pretvorimo številke v številsko obliko in pretvorimo podatke s funkcijo gather(). Vse prejeto shranimo v gdp_tidy.csv za nadaljnjo uporabo.
library(tidyverse)
library(janitor)
bdp <- read_csv("./data/BDP_Data.csv")
#izberite zahtevane stolpce
bdp <- bdp %>% izberi(3:15)
#filtriraj samo vrstice z državami
BDP <- BDP[1:217,]
gdp_tidy <- % bdp>%
mutate_at(vars(vsebuje("YR")),as.numeric) %>%
zbrati(leto,vrednost,3:13) %>%
hišnik::čista_imena() %>%
mutate(leto = as.numeric(stringr::str_sub(leto,1,4)))
write_csv(gdp_tidy, "./podatki/gdp_tidy.csv")
Animirani histogrami
Njihovo ustvarjanje zahteva dve stopnji:
- Izris celotnega niza dejanskih histogramov z uporabo ggplot2.
- Animirajte statične histograme z želenimi parametri z uporabo gganimate.
Zadnji korak je upodabljanje animacije v želenem formatu, vključno z GIF ali MP4.
Nalaganje knjižnic
- knjižnica (tidyverse)
- knjižnica (gganimate)
Upravljanje s podatki
V tem koraku morate filtrirati podatke, da dobite 10 najboljših držav za vsako leto. Dodajmo več stolpcev, ki nam bodo omogočili prikaz legende za histogram.
gdp_tidy <- read_csv("./data/gdp_tidy.csv")
gdp_formatted <- gdp_tidy %>%
skupina_po(leto) %>%
# * 1 omogoča neceloštevilske range med drsenjem
mutate(rang = rang(-vrednost),
Vrednost_rel = vrednost/vrednost[rang==1],
Value_lbl = paste0(" ",round(value/1e9))) %>%
skupina_po(ime_države) %>%
filter (rang <=10) %>%
razgrupiraj()
Gradnja statičnih histogramov
Zdaj, ko imamo paket podatkov v zahtevani obliki, začnemo risati statične histograme. Osnovne informacije - 10 najboljših držav z največjim BDP v izbranem časovnem intervalu. Izdelamo grafe za vsako leto.
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"))
Ustvarjanje ploskev z uporabo ggplot2 je zelo preprosto. Kot lahko vidite v zgornjem razdelku kode, obstaja več ključnih točk s funkcijo theme(). Potrebni so, da vsi elementi brez težav animirajo. Nekateri od njih morda ne bodo prikazani, če je to potrebno. Primer: narisane so samo navpične mrežne črte in legende, vendar so naslovi osi in več drugih komponent odstranjeni iz območja.
animacija
Ključna funkcija tukaj je conversion_states(), ki združuje ločene statične grafe. view_follow() se uporablja za risanje mrežnih črt.
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")
Upodabljanje
Ko je animacija ustvarjena in shranjena v objektu anim, je čas, da jo upodabljate s funkcijo animate(). Upodabljalnik, uporabljen v animate(), se lahko razlikuje glede na vrsto zahtevane izhodne datoteke.
GIF
# For GIF
animiraj(anim, 200, fps = 20, širina = 1200, višina = 1000,
upodabljalnik = gifski_upodabljalnik("gganim.gif"))
MP4
# For MP4
animiraj(anim, 200, fps = 20, širina = 1200, višina = 1000,
upodabljalnik = ffmpeg_renderer()) -> for_mp4
anim_save("animacija.mp4", animacija = za_mp4)
Rezultat

Kot lahko vidite, nič zapletenega. Celoten projekt je na voljo v , ga lahko uporabite, kot se vam zdi primerno.
Skillbox priporoča:
- Dvoletni praktični tečaj .
- Spletni tečaj .
- Praktični enoletni tečaj .
Vir: www.habr.com
