Dala ama-Histograms Apopayi usebenzisa i-R

Dala ama-Histograms Apopayi usebenzisa i-R

Amashadi ebha agqwayizayo angashumekwa ngokuqondile kokuthunyelwe kunoma iyiphi iwebhusayithi aya ngokuya aduma. Babonisa ukuguquguquka kwezinguquko kunoma yiziphi izici phakathi nesikhathi esithile futhi bakwenza lokhu ngokucacile. Ake sibone ukuthi zingawadala kanjani usebenzisa amaphakheji we-R nama-generic.

I-Skillbox iyancoma: Isifundo esiwusizo "Python developer kusukela ekuqaleni".

Siyakukhumbuza: kubo bonke abafundi be-"Habr" - isaphulelo sama-ruble angu-10 lapho ubhalisa kunoma yisiphi isifundo se-Skillbox usebenzisa ikhodi yephromoshini ethi "Habr".

Amaphakheji

Sidinga amaphakheji ku-R:

Lezi ezimbili zidingeka kakhulu. Ngaphezu kwalokho, kuzodingeka i-tidyverse, i-janitor nezikali ukuze kuphathwe idatha, kuhlanzwe amalungu afanayo futhi kufomethwe ngendlela efanele.

Idatha

Idathasethi yasekuqaleni esizoyisebenzisa kule phrojekthi ilandwa kuwebhusayithi yeBhange Lomhlaba. Nampa - Idatha ye-WorldBank. Idatha efanayo, uma uyidinga isilungile, ingalandwa kusuka amafolda ephrojekthi.

Hlobo luni lolwazi lolu? Isampula iqukethe inani le-GDP lamazwe amaningi iminyaka embalwa (kusukela ngo-2000 kuya ku-2017).

Ukucubungula idatha

Sizosebenzisa ikhodi ethunyelwe ngezansi ukuze silungise ifomethi yedatha edingekayo. Sisula amagama ekholomu, siguqule izinombolo zibe ifomethi yenombolo, futhi siguqule idatha sisebenzisa umsebenzi wokuqoqa (). Sigcina yonke into etholwa ku-gdp_tidy.csv ukuze isetshenziswe futhi.

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

Ama-histograms agqwayizayo

Ukwakhiwa kwabo kudinga izigaba ezimbili:

  • Ukuhlela isethi ephelele yama-histograms wangempela usebenzisa i-ggplot2.
  • Gqwayiza ama-histogram amile ngamapharamitha afiswayo usebenzisa i-gganimate.

Isinyathelo sokugcina siwukunikeza ukugqwayiza ngefomethi oyifunayo, okuhlanganisa i-GIF noma i-MP4.

Ilayisha imitapo yolwazi

  • umtapo wolwazi (i-tidyverse)
  • umtapo wolwazi (gganimate)

Ukuphathwa kwedatha

Kulesi sinyathelo, udinga ukuhlunga idatha ukuze uthole amazwe ayi-10 aphezulu unyaka ngamunye. Ake sengeze amakholomu amaningana azosivumela ukuthi sibonise inganekwane ye-histogram.

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 ama-histograms amile

Manje njengoba sesinephakheji yedatha ngefomethi edingekayo, siqala ukudweba ama-histogram amile. Ulwazi oluyisisekelo - amazwe ayi-10 aphezulu ane-GDP ephezulu ngesikhathi esikhethiwe. Sakha amagrafu unyaka ngamunye.

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

Ukudala iziza usebenzisa i-ggplot2 kulula kakhulu. Njengoba ungabona esigabeni sekhodi ngenhla, kunamaphuzu abalulekile amaningana anomsebenzi wetimu (). Ziyadingeka ukuze zonke izakhi ziphile ngaphandle kwezinkinga. Ezinye zazo zingase zingavezwa uma kunesidingo. Isibonelo: Kudwetshwa imigqa yegridi eqondile kuphela kanye nezinganekwane, kodwa izihloko ze-eksisi nezinye izingxenye ezimbalwa ziyasuswa endaweni.

Ukugqwayiza

Umsebenzi oyinhloko lapha uthi i-transition_states(), ihlanganisa ndawonye amagrafu amile ahlukene. view_follow() isetshenziselwa ukudweba imigqa 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")

Iyanikezela

Uma ukugqwayiza sekudaliwe futhi kwagcinwa entweni ye-anim, yisikhathi sokuyinikela usebenzisa i-animate() umsebenzi. Isinikezeli esisetshenziswe ku-animate() singahluka kuye ngohlobo lwefayela lokuphumayo elidingekayo.

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 )

Umphumela

Dala ama-Histograms Apopayi usebenzisa i-R

Njengoba ubona, akukho lutho oluyinkimbinkimbi. Yonke iphrojekthi iyatholakala ku I-GitHub yami, ungayisebenzisa ngokubona kwakho.

I-Skillbox iyancoma:

Source: www.habr.com

Engeza amazwana