Kurkite animuotas histogramas naudodami R

Kurkite animuotas histogramas naudodami R

Animuotos juostinės diagramos, kurias galima įterpti tiesiai į bet kurios svetainės įrašą, tampa vis populiaresnės. Jie parodo bet kokių charakteristikų pokyčių dinamiką per tam tikrą laiką ir tai daro aiškiai. Pažiūrėkime, kaip juos sukurti naudojant R ir bendruosius paketus.

„Skillbox“ rekomenduoja: Praktinis kursas „Python kūrėjas nuo nulio“.

Primename: visiems „Habr“ skaitytojams – 10 000 rublių nuolaida užsiregistravus į bet kurį „Skillbox“ kursą naudojant „Habr“ reklamos kodą.

Pakuotės

Mums reikia paketų R:

Šie du yra labai reikalingi. Be to, norint tvarkyti duomenis, išvalyti masyvą ir atitinkamai formatuoti, reikės tvarkyklės, prižiūrėtojo ir svarstyklių.

Duomenys

Originalus duomenų rinkinys, kurį naudosime šiame projekte, atsisiųstas iš Pasaulio banko svetainės. Jie yra čia - Pasaulio banko duomenys. Tuos pačius duomenis, jei jums reikia paruoštų, galite atsisiųsti iš projekto aplankai.

Kokia tai informacija? Imtyje yra daugumos šalių BVP vertė kelerius metus (nuo 2000 iki 2017 m.).

Duomenų apdorojimas

Norėdami paruošti reikiamą duomenų formatą, naudosime žemiau pateiktą kodą. Išvalome stulpelių pavadinimus, paverčiame skaičius į skaičių formatą ir konvertuojame duomenis naudodami rinkimo () funkciją. Viską, kas gauta, išsaugome gdp_tidy.csv tolimesniam naudojimui.

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")

Animuotos histogramos

Jų kūrimui reikia dviejų etapų:

  • Viso faktinių histogramų rinkinio braižymas naudojant ggplot2.
  • Animuokite statines histogramas su norimais parametrais naudodami gganimate.

Paskutinis veiksmas yra animacijos pateikimas norimu formatu, įskaitant GIF arba MP4.

Įkeliamos bibliotekos

  • biblioteka (tvarkinga visuma)
  • biblioteka (gganimate)

Duomenų valdymas

Šiame veiksme turite filtruoti duomenis, kad gautumėte 10 geriausių kiekvienų metų šalių. Pridėkime keletą stulpelių, kurie leis mums parodyti histogramos legendą.

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()

Statinių histogramų kūrimas

Dabar, kai turime reikiamo formato duomenų paketą, pradedame piešti statines histogramas. Pagrindinė informacija – 10 geriausių šalių, turinčių maksimalų BVP per pasirinktą laiko intervalą. Sudarome kiekvienų metų grafikus.

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"))

Sukurti brėžinius naudojant ggplot2 yra labai paprasta. Kaip matote aukščiau esančiame kodo skyriuje, yra keli pagrindiniai temos () funkcijos punktai. Jie būtini, kad visi elementai gyvuotų be problemų. Kai kurie iš jų gali būti nerodomi, jei reikia. Pavyzdys: nubrėžiamos tik vertikalios tinklelio linijos ir legendos, bet ašių pavadinimai ir keli kiti komponentai pašalinami iš srities.

Animacija

Pagrindinė funkcija čia yra transfer_states(), ji sujungia atskirus statinius grafikus. view_follow() naudojamas tinklelio linijoms braižyti.

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")

Atvaizdavimas

Kai animacija bus sukurta ir saugoma animaciniame objekte, laikas ją pateikti naudojant funkciją animuoti(). Animate() naudojamas atvaizduotojas gali skirtis priklausomai nuo reikalingo išvesties failo tipo.

Pagal 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 )

Rezultatas

Kurkite animuotas histogramas naudodami R

Kaip matote, nieko sudėtingo. Visą projektą galima rasti mano GitHub, galite naudoti kaip jums atrodo tinkama.

„Skillbox“ rekomenduoja:

Šaltinis: www.habr.com

Добавить комментарий