Mamorona Histograma Animated amin'ny fampiasana R

Mamorona Histograma Animated amin'ny fampiasana R

Lasa malaza be ny sarin'ny bar misy animé izay azo ampidirina mivantana amin'ny lahatsoratra amin'ny tranokala rehetra. Asehon'izy ireo ny fihetsehan'ny fiovana amin'ny toetra rehetra mandritra ny fotoana voafaritra ary manao izany mazava tsara. Andao hojerentsika ny fomba hamoronana azy ireo amin'ny alàlan'ny R sy fonosana générique.

Skillbox dia manoro hevitra: Mazava ho azy "Developer Python avy amin'ny scratch".

Mampahatsiahy izahay: ho an'ny mpamaky rehetra ny "Habr" - fihenam-bidy 10 roubles rehefa misoratra anarana amin'ny taranja Skillbox rehetra mampiasa ny code promotional "Habr".

entana

Mila fonosana amin'ny R izahay:

Tena ilaina tokoa ireo roa ireo. Ho fanampin'izany, ny tidyverse, ny janitor ary ny mizana dia takiana amin'ny fitantanana ny angon-drakitra, ny fanadiovana ny array sy ny endrika mifanaraka amin'izany.

tahirin-kevitra

Ny angona tany am-boalohany hampiasainay amin'ity tetikasa ity dia alaina avy amin'ny tranokalan'ny Banky Iraisam-pirenena. Eto izy ireo - WorldBank Data. Ny angon-drakitra mitovy, raha mila azy efa vita ianao, dia azo alaina avy amin'ny lahatahiry tetikasa.

Karazana fampahalalana inona izany? Ny santionany dia ahitana ny sandan'ny GDP an'ny ankamaroan'ny firenena nandritra ny taona maromaro (manomboka 2000 ka hatramin'ny 2017).

Fanodinana data

Hampiasa ny kaody napetraka eto ambany izahay hanomanana ny format data ilaina. Manadio ny anaran'ny tsanganana izahay, mamadika ny isa ho endrika isa, ary mamadika ny angon-drakitra amin'ny alàlan'ny asa gather(). Tehirizinay daholo izay voaray ao amin'ny gdp_tidy.csv mba hampiasaina bebe kokoa.

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

Animated histograms

Ny famoronana azy ireo dia mitaky dingana roa:

  • Mamolavola andiana histograma tena izy amin'ny fampiasana ggplot2.
  • Ampifanaraho ny histograma static miaraka amin'ny masontsivana tianao amin'ny fampiasana gganimate.

Ny dingana farany dia ny mamadika ny sarimiaina amin'ny endrika tiana, anisan'izany ny GIF na MP4.

Mametraka tranomboky

  • trano famakiam-boky (tidyverse)
  • tranomboky (gganimate)

Fitantanana data

Amin'ity dingana ity, mila manivana ny angon-drakitra ianao hahazoana ireo firenena 10 ambony indrindra isan-taona. Andeha isika hanampy tsanganana maromaro ahafahantsika mampiseho angano momba ny histograma.

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

Manangana histograma static

Amin'izao fotoana izao dia manana fonosana angon-drakitra amin'ny endrika ilaina isika, manomboka manao sary histograma static. Fampahalalana fototra - firenena 10 ambony manana PIB ambony indrindra amin'ny elanelan'ny fotoana voafantina. Mamorona grafika isan-taona izahay.

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

Tena tsotra ny famoronana tetika mampiasa ggplot2. Araka ny hitanao ao amin'ny fizarana kaody etsy ambony dia misy hevi-dehibe maromaro miaraka amin'ny fiasa theme(). Ilaina izy ireo mba hahafahan'ny singa rehetra mihetsika tsy misy olana. Mety tsy aseho ny sasany amin'izy ireo raha ilaina. Ohatra: Ny tsipika sy ny angano mitsangana ihany no alaina, fa ny lohatenin'ny axis sy ny singa hafa dia nesorina tao amin'ilay faritra.

fanentanana

Ny fiasa fototra eto dia ny transition_states(), manjaitra ireo grafika static misaraka. view_follow() dia ampiasaina hanoratana tsipika tsipika.

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

dikan-

Raha vantany vao noforonina sy voatahiry ao amin'ny zavatra anime ny sarimiaina, fotoana izao handikana azy amin'ny fampiasana ny fiasa animate(). Ny renderer ampiasaina amin'ny animate() dia mety tsy mitovy arakaraka ny karazana rakitra mivoaka ilaina.

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 )

vokatra

Mamorona Histograma Animated amin'ny fampiasana R

Araka ny hitanao, tsy misy sarotra. Ny tetikasa manontolo dia misy ao ny GitHub, azonao ampiasaina araka izay hitanao fa mety.

Skillbox dia manoro hevitra:

Source: www.habr.com

Add a comment