
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
