
Histogramat e animuar që mund të integrohen direkt në publikime në çdo faqe webi po bëhen gjithnjë e më të njohura. Ato shfaqin dinamikën e ndryshimeve të karakteristikave të ndryshme për një periudhë të caktuar kohe dhe e bëjnë këtë në një mënyrë vizuale. Le të shohim se si t'i krijojmë ato me ndihmën e R dhe paketave universale.
Skillbox rekomandon: Kurs praktik .
KujtojmĂ«: pĂ«r tĂ« gjithĂ« lexuesit e «Habra» â zbritje prej 10,000 rublesh pĂ«r regjistrimin nĂ« çdo kurs Skillbox me kodin promovues «Habr».
Paketa
Na duhen paketat në R:
- ggplot2
Këto dy janë thelbësore. Gjithashtu, do të nevojiten tidyverse, janitor dhe scales për menaxhimin e të dhënave, pastrimin e grupeve dhe formatimin përkatës.
Të dhënat
Seti origjinal i tĂ« dhĂ«nave qĂ« do tĂ« pĂ«rdorim nĂ« kĂ«tĂ« projekt merret nga faqja e BankĂ«s BotĂ«rore. Ja ata â . TĂ« njĂ«jtat tĂ« dhĂ«na, nĂ«se ju nevojiten nĂ« formatin e gatshĂ«m, mund tĂ« shkarkohen nga .
ĂfarĂ« informacioni Ă«shtĂ« kjo? Mostra pĂ«rmban vlerat e PBB-sĂ« pĂ«r shumicĂ«n e vendeve pĂ«r disa vite (nga 2000 nĂ« 2017).
Përpunimi i të dhënave
Ne do tĂ« pĂ«rdorim kodin e vendosur mĂ« poshtĂ« pĂ«r tĂ« pĂ«rgatitur formatin e nevojshĂ«m tĂ« tĂ« dhĂ«nave. Pastroni emrat e kolonave, shndĂ«rroni numrat nĂ« format numerik dhe konvertoni tĂ« dhĂ«nat me funksionin gather(). Ădo gjĂ« qĂ« fitohet, ruhet nĂ« gdp_tidy.csv pĂ«r pĂ«rdorim tĂ« mĂ«tejshĂ«m.
biblioteka(tidyverse)
biblioteka(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")
Histogramat e animuar
Krijimi i tyre kërkon dy etapa:
- Ndërtimi i një seti të plotë të histogramave statike me përdorimin e ggplot2.
- Animimi i histogramave statike me parametrat e dëshiruara përmes gganimate.
Hapi pĂ«rfundimtar â renderimi i animacionit nĂ« formatin e dĂ«shiruar, duke pĂ«rfshirĂ« GIF ose MP4.
Ngarkimi i biblioteka
- biblioteka(tidyverse)
- library(gganimate)
Menaxhimi i të dhënave
Në këtë hap duhet të filtrojmë të dhënat për të marrë 10 vendet kryesore për çdo vit. Do të shtojmë disa kolona që do të lejojnë shfaqjen e legjendës për histogramin.
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()
Ndërtimi i histogramave statike
Tani qĂ« kemi paketen e tĂ« dhĂ«nave nĂ« formatin e nevojshĂ«m, fillojmĂ« vizatimin e histogramave statike. Informacioni bazĂ« â 10 vendet kryesore me PBB-nĂ« mĂ« tĂ« lartĂ« pĂ«r periudhĂ«n e zgjedhur. Grafikat do tĂ« ndĂ«rtohen pĂ«r çdo vit.
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"))
Të ndërtosh grafika me ggplot2 është shumë e thjeshtë. Siç mund ta shihni në fragmentin e kodit më sipër, ka disa aspekte kyçe me funksionin theme (). Ato janë të nevojshme për të garantuar që të gjithë elementet të animohen pa probleme. Disa prej tyre mund të mos shfaqen sipas nevojës. Shembull: vizatohen vetëm vijat vertikale të gridit dhe legjendat, ndërsa titujt e boshtit dhe disa komponente të tjera hiqen nga skena.
Animacioni
Funksioni kyç këtu është transition_states(), i cili bashkon grafikët statikë të veçanta. view_follow () përdoret për të vizatuar vijat e gridit.
anim = staticplot + transition_states(viti, transition_length = 4, state_length = 1) +
view_follow(fixed_x = TRUE) +
labs(title = 'GDP për Vit: {closest_state}',
subtitle = "10 Shtetet Kryesore",
caption = "GDP në Miliarda USD | Burimi i Dhënave: Të Dhëna nga Banka Botërore")
Rendering
Pasi animacioni është krijuar dhe ruajtur në objektin anim, arrin koha për ta vizualizuar atë duke përdorur funksionin animate (). Renderer-i që përdoret në animate () mund të jetë i ndryshëm në varësi të llojit të skedarit të daljes që kërkohet.
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 )
Rezultati

Siç e shohim, nuk është asgjë e komplikuar. I gjithë projekti është i disponueshëm në , mund ta përdorni ashtu siç e shihni të arsyeshme.
Skillbox rekomandon:
- Kursi praktik dyvjeçar .
- Kurs online .
- Kurs praktik njëvjeçar .
Burimi: habr.com
