Izveidojiet animētas histogrammas, izmantojot R

Izveidojiet animētas histogrammas, izmantojot R

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 "Python izstrādātājs no nulles".

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:

Š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 - Pasaules Bankas dati. Tos pašus datus, ja nepieciešams gatavus, var lejupielādēt no projektu mapes.

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)

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

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

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

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 )

Piedzīvojiet efektīvu rezultātu spēku

Izveidojiet animētas histogrammas, izmantojot R

Kā redzat, nekas sarežģīts. Viss projekts ir pieejams mans GitHub, varat to izmantot pēc saviem ieskatiem.

Skillbox iesaka:

Avots: www.habr.com

Pievieno komentāru