
Animētas joslu diagrammas, kuras var iegult tieši ierakstā jebkurā vietnē, kļūst arvien populārākas. Tie parāda jebkuru raksturlielumu izmaiņu dinamiku noteiktā laika periodā un dara to skaidri. Apskatīsim, kā tos izveidot, izmantojot R un vispārīgās pakotnes.
Skillbox iesaka: Praktiskais kurss .
Atgādinām: visiem "Habr" lasītājiem - atlaide 10 000 rubļu, reģistrējoties jebkurā Skillbox kursā, izmantojot "Habr" reklāmas kodu.
Iepakojumi
Mums ir nepieciešami iepakojumi R:
- ggplot2
Šie divi ir ārkārtīgi nepieciešami. Turklāt, lai pārvaldītu datus, notīrītu masīvu un attiecīgi formatētu, būs nepieciešami tīrības, sētnieka un svari.
Dati
Sākotnējā datu kopa, ko izmantosim šajā projektā, ir lejupielādēta no Pasaules Bankas vietnes. Šeit tie ir - . Tos pašus datus, ja nepieciešams gatavus, var lejupielādēt no .
Kāda veida informācija tā ir? Izlasē ir ietverta vairuma valstu IKP vērtība vairākus gadus (no 2000. līdz 2017. gadam).
Datu apstrāde
Mēs izmantosim zemāk ievietoto kodu, lai sagatavotu nepieciešamo datu formātu. Mēs notīrām kolonnu nosaukumus, pārvēršam skaitļus skaitļu formātā un pārveidojam datus, izmantojot apkopošanas () funkciju. Visu, kas tiek saņemts gdp_tidy.csv, saglabājam turpmākai lietošanai.
library(tidyverse)
library(janitor)
ikp <- read_csv("./data/IKP_Dati.csv")
#atlasīt nepieciešamās kolonnas
ikp <- ikp %>% atlasīt(3:15)
#filtrēt tikai valstu rindas
ikp <- ikp[1:217,]
gdp_tidy <- gdp %>%
mutate_at(varianti(satur("YR")),as.numeric) %>%
apkopot(gads,vērtība,3:13) %>%
sētnieks::tīrīšanas_vārdi() %>%
mainīt(gads = as.numeric(stringr::str_sub(gads,1,4)))
write_csv(gdp_tidy,"./data/gdp_tidy.csv")
Animētas histogrammas
To izveidei nepieciešami divi posmi:
- Pilna faktisko histogrammu kopuma uzzīmēšana, izmantojot ggplot2.
- Animējiet statiskās histogrammas ar vēlamajiem parametriem, izmantojot gganimate.
Pēdējais solis ir atveidot animāciju vēlamajā formātā, ieskaitot GIF vai MP4.
Notiek bibliotēku ielāde
- bibliotēka (sakārtots)
- bibliotēka (gganimate)
Datu vadība
Šajā darbībā jums ir jāfiltrē dati, lai iegūtu 10 labākās valstis katrā gadā. Pievienosim vairākas kolonnas, kas ļaus mums parādīt histogrammas leģendu.
gdp_tidy <- read_csv("./data/gdp_tidy.csv")
gdp_formatted <- gdp_tidy %>%
grupa_pēc(gads) %>%
# Simbols * 1 ļauj slīdēšanas laikā iegūt ne-veselu skaitļu rangus
mainīt(rangs = rangs(-vērtība),
Vērtības_relācija = vērtība/vērtība[rangs==1],
Vērtības_lbl = ielīmēt0("",apaļš(vērtība/1e9))) %>%
group_by(valsts_nosaukums) %>%
filtrs (rangs <=10) %>%
atgrupēt()
Statisku histogrammu veidošana
Tagad, kad mums ir datu pakotne vajadzīgajā formātā, mēs sākam zīmēt statiskas histogrammas. Pamatinformācija - 10 labākās valstis ar maksimālo IKP atlasītajā laika intervālā. Mēs veidojam grafikus katram gadam.
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"))
Grafiku izveide, izmantojot ggplot2, ir ļoti vienkārša. Kā redzat koda sadaļā iepriekš, funkcijai theme() ir vairāki galvenie punkti. Tie ir nepieciešami, lai visi elementi atdzīvinātu bez problēmām. Ja nepieciešams, daži no tiem var netikt parādīti. Piemērs: tiek uzzīmētas tikai vertikālās režģa līnijas un leģendas, bet no apgabala tiek noņemti asu nosaukumi un vairāki citi komponenti.
animācija
Galvenā funkcija šeit ir transfer_states (), tā savieno atsevišķus statiskus grafikus. view_follow() tiek izmantots režģa līniju zīmēšanai.
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")
Atveidošana
Kad animācija ir izveidota un saglabāta animācijas objektā, ir pienācis laiks to renderēt, izmantojot funkciju animēt(). Animate() izmantotais renderētājs var atšķirties atkarībā no nepieciešamā izvades faila veida.
GIF
# For GIF
animēt(anim, 200, kadri/s = 20, platums = 1200, augstums = 1000,
renderētājs = gifski_renderer("gganim.gif"))
MP4
# For MP4
animēt(anim, 200, kadri/s = 20, platums = 1200, augstums = 1000,
renderētājs = ffmpeg_renderer()) -> for_mp4
anim_save("animācija.mp4", animācija = for_mp4)
Piedzīvojiet efektīvu rezultātu spēku

Kā redzat, nekas sarežģīts. Viss projekts ir pieejams , varat to izmantot pēc saviem ieskatiem.
Skillbox iesaka:
- Divu gadu praktiskais kurss .
- Tiešsaistes kurss .
- Praktiskā gada kurss .
Avots: www.habr.com
