
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 .
Tuletame meelde: kĂ”igile «Habr» lugejatele â 10 000 rubla allahindlus igale Skillboxi kursusele, kasutades sooduskoodi «Habr».
Pakettide
Me vajame R-i pakette:
- ggplot2
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 â . Samad andmed, kui need on teile vajalikud valmis vormis, saab alla laadida .
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

Nagu nÀeme, pole midagi keerulist. Kogu projekt on saadaval , vÔite seda kasutada niinagu arvate vajalik olevat.
Skillbox soovitab:
- Kaks aastat praktilist kursust .
- Veebikursus .
- Praktiline aastakursus .
Allikas: habr.com
