Loome animatsiooniga histogramme R-i abil

Loome animatsiooniga histogramme R-i abil

Animatsiooniga histogrammid, mida saab otse lisada postitustesse igal veebisaidil, muutuvad ĂŒha populaarseks. Need nĂ€itavad, kuidas mis tahes omadused aja jooksul muutuvad, tehes seda selgelt. Vaatame, kuidas neid R-i ja universaalsete paketide abil luua.

Skillbox soovitab: Praktiline kursus „Python-arendaja nullist“.

Tuletame meelde: kĂ”igile «Habr» lugejatele – 10 000 rubla allahindlus igale Skillboxi kursusele, kasutades sooduskoodi «Habr».

Pakettide

Me vajame R-i pakette:

Need kaks on ÀÀrmiselt vajalikud. Lisaks on vajalikud tidyverse, janitor ja scales andmete haldamiseks, massiivi puhastamiseks ja vormindamiseks vastavalt.

Andmed

Originaalandmestik, mida me selles projektis kasutame, on saadud Maailmapanga veebisaidilt. Siin nad on — WorldBank Data. Samad andmed, kui need on teile vajalikud valmis vormis, saab alla laadida projekti kaustast.

Mis teave see on? Valim sisaldab enamikus riikides SKP vÀÀrtusi mitme aasta jooksul (2000-2017).

Tundub, et oleme oma pÀringus kÔik lahti seletanud - alles on jÀÀnud vaid

Kasutame allpool olevat koodi, et ette valmistada vajalik andmevorming. Puhastame veergude nimed, muudame numbrid arvuvormingusse ja konverteerime andmed gather() funktsiooni abil. KÔik, mis saadakse, salvestame gdp_tidy.csv failina edasiseks kasutamiseks.

raamatukogu(tidyverse)
raamatukogu(janitor)

gdp <- read_csv(".\/data\/GDP_Data.csv")

#select required columns

gdp % select(3:15)

#filter only country rows

gdp <- gdp[1:217,]

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

Animatsiooniga histogrammid

Nende loomine hÔlmab kahte etappi:

  • Aktuaalsete histogrammide tĂ€ieliku komplekti koostamine ggplot2 abil.
  • Statiliste histogrammide animiseerimine soovitud parameetritega gganimate abil.

Viimane samm — animatsiooni renderdamine soovitud formaadis, sealhulgas GIF vĂ”i MP4.

Teekide laadimine

  • raamatukogu(tidyverse)
  • library(gganimate)

Andmete haldamine

Selles etapis tuleb filtreerida andmed, et saada igal aastal 10 parimat riiki. Lisame mÔned veerud, mis vÔimaldavad kuvada histogrammi legendi.

gdp_tidy <- read_csv("./data/gdp_tidy.csv")

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

Statiliste histogrammide koostamine

NĂŒĂŒd, kui meil on andmepakett Ă”iges formaadis, alustame statiliste histogrammide joonistamist. PĂ”hiinfo — igal valitud ajavahemikul 10 parimat riiki kĂ”rgeima SKP-ga. Joonistame graafikud igale aastale.

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

Graafikute loomine ggplot2 abil on ĂŒsna lihtne. Nagu nĂ€ete ĂŒlaltoodud koodijupi puhul, on mitmeid vĂ”tmeelemente funktsioonis theme (). Need on vajalikud, et kĂ”ik elemendid saaksid probleemideta animeeritud. MĂ”nda neist vĂ”ib vajadusel ka kuvamata jĂ€tta. NĂ€iteks kuvatakse ainult vertikaalsed vĂ”rguliinid ja legendid, samas kui telgede pealkirjad ja veel mĂ”ned komponendid eemalduvad alalt.

Animatsioon

Peamine funktsioon siin on transition_states(), mis ĂŒhendab eraldi staatilised graafikud. view_follow () kasutatakse vĂ”rguliinide joonistamiseks.

anim = staticplot + transition_states(year, transition_length = 4, state_length = 1) +
view_follow(fixed_x = TRUE) +
labs(title = 'SKP aasta kaupa: {closest_state}',
subtitle = "KĂŒmme parimat riiki",
caption = "SKP miljardites USA dollarites | Andmeallikas: Maailmapanga andmed")

Renderdamine

PĂ€rast seda, kui animatsioon on loodud ja salvestatud objekti anim, on aeg see visualiseerida funktsiooni animate () abil. Animates kasutatav renderdaja vĂ”ib varieeruda sĂ”ltuvalt nĂ”utavast vĂ€ljundfaili tĂŒĂŒbist.

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 )

Tulemus

Loome animatsiooniga histogramme R-i abil

Nagu nÀeme, pole midagi keerulist. Kogu projekt on saadaval minu GitHubis, vÔite seda kasutada niinagu arvate vajalik olevat.

Skillbox soovitab:

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster