Yenza i-Animated Histograms usebenzisa i-R

Yenza i-Animated Histograms usebenzisa i-R

Iitshathi zebha ezinopopayi ezinokuthi zifakwe ngqo kwisithuba kuyo nayiphi na iwebhusayithi ziya zithandwa kakhulu. Babonisa ukuguquka kweenguqu kuzo naziphi na iimpawu kwixesha elithile kwaye bakwenza oku ngokucacileyo. Makhe sibone indlela yokuyidala usebenzisa i-R kunye neepakethe eziqhelekileyo.

I-Skillbox iyacebisa: Ikhosi esebenzayo "Umphuhlisi wePython ukusuka ekuqaleni".

Siyakhumbuza: kubo bonke abafundi be "Habr" - isaphulelo se-ruble ye-10 xa ubhalisa kuyo nayiphi na ikhosi ye-Skillbox usebenzisa ikhowudi yokuphromotha "Habr".

Iiphakheji

Sifuna iipakethe kwi-R:

Ezi zimbini ziyimfuneko kakhulu. Ukongeza, i-tidyverse, i-janitor kunye nezikali ziya kufuneka ukulawula idatha, ukucoca uluhlu kunye nefomathi ngokufanelekileyo.

Iinkcukacha

Iseti yedatha yokuqala esiza kuyisebenzisa kule projekthi ikhutshelwa kwiwebhusayithi yeBhanki yeHlabathi. Naba ba- Idatha yeBhanki yeHlabathi. Idatha efanayo, ukuba uyayifuna ilungile, inokukhutshelwa kuyo iifolda zeprojekthi.

Loluphi ulwazi olu? Isampuli iqulethe ixabiso le-GDP lamazwe amaninzi kwiminyaka emininzi (ukusuka kwi-2000 ukuya kwi-2017).

Ukulungiswa kwedatha

Siza kusebenzisa ikhowudi ethunyelwe ngezantsi ukulungiselela ifomathi yedatha efunekayo. Sicoca amagama eekholam, sijike amanani abe yifomathi yenani, kwaye siguqule idatha sisebenzisa ukuqokelelwa () umsebenzi. Sigcina yonke into efunyenwe kwi-gdp_tidy.csv ukuze isetyenziswe ngakumbi.

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

Iihistograms ezinopopayi

Ukudala kwabo kufuna izigaba ezimbini:

  • Ukuyila iseti epheleleyo yeehistograms kusetyenziswa iggplot2.
  • Philisa iihistograms ezimile kunye neeparamitha ezifunwayo usebenzisa i-gganimate.

Inyathelo lokugqibela kukwenza oopopayi ngendlela efunwayo, kuquka iGIF okanye iMP4.

Ilayisha amathala eencwadi

  • ilayibrari (icocekile)
  • ilayibrari(gganimate)

Ulawulo lwedatha

Kweli nyathelo, kufuneka ucoce idatha ukuze ufumane amazwe ali-10 aphezulu ngonyaka ngamnye. Masifake iikholamu ezininzi eziza kusivumela ukuba sibonise ilivo lehistogram.

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

Ukwakha i-histograms engatshintshiyo

Ngoku ekubeni sinephakheji yedatha kwifomathi efunekayo, siqala ukuzoba i-histograms emileyo. Ulwazi olusisiseko - amazwe ali-10 aphezulu aneGDP ephezulu kwixesha elikhethiweyo. Senza iigrafu zonyaka ngamnye.

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

Ukwenza izicwangciso usebenzisa i-ggplot2 kulula kakhulu. Njengoko ubona kwicandelo lekhowudi ngasentla, kukho amanqaku amaninzi abalulekileyo ngomxholo () umsebenzi. Ziyimfuneko ukuze zonke izinto ziphile ngaphandle kweengxaki. Ezinye zazo zinokungaboniswa ukuba kuyimfuneko. Umzekelo: Yimigca yegridi ethe nkqo kuphela ezotywayo, kodwa izihloko ze-axis kunye nezinye izinto ezininzi ziyasuswa kwindawo.

oopopayi

Umsebenzi ongundoqo apha yi-transition_states (), ithungela kunye iigrafu ezimileyo ezahlukileyo. view_follow() isetyenziselwa ukuzoba imigca yegridi.

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

Ukunikezela

Nje ukuba uphiliso lwenziwe kwaye lugcinwe kwinto ye-anim, lixesha lokuyinikezela usebenzisa i-animate () umsebenzi. Umnikezeli osetyenziswa kwi-animate() unokwahluka ngokuxhomekeke kuhlobo lwefayile yemveliso efunekayo.

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 )

Isiphumo

Yenza i-Animated Histograms usebenzisa i-R

Njengoko ubona, akukho nto inzima. Yonke iprojekthi iyafumaneka kwi iGitHub yam, ungayisebenzisa njengoko ubona kufanelekile.

I-Skillbox iyacebisa:

umthombo: www.habr.com

Yongeza izimvo