Theha li-Histograms tsa Animated U sebelisa R

Theha li-Histograms tsa Animated U sebelisa R

Lits'oants'o tsa li-bar charts tse ka kenngoa ka kotloloho posong efe kapa efe ea marang-rang li ntse li ata haholo. Ba bonts'a matla a liphetoho litšobotsing leha e le life ka nako e itseng 'me ba etsa sena ka ho hlaka. Ha re boneng hore na re ka li etsa joang ho sebelisa R le liphutheloana tse akaretsang.

Skillbox e khothaletsa: Tsela e sebetsang "Moetsi oa Python ho tloha qalong".

Re hopotsa: bakeng sa babali bohle ba "Habr" - theolelo ea li-ruble tse 10 ha u ngolisa thupelong efe kapa efe ea Skillbox u sebelisa khoutu ea papatso ea "Habr".

Lipapaka

Re hloka liphutheloana ka R:

Tsena tse peli li bohlokoa haholo. Ntle le moo, ho tla hlokahala li-tidyverse, janitor le sekala ho tsamaisa data, ho hloekisa sehlopha le ho fomata ka nepo.

ya data

Lintlha tsa mantlha tseo re tla li sebelisa morerong ona li kopitsoe webosaeteng ea Banka ea Lefatše. Ke bana - Lintlha tsa WorldBank. Lintlha tse tšoanang, haeba u li hloka li se li entsoe, li ka kopitsoa ho tsoa lifoldara tsa morero.

Ke boitsebiso ba mofuta ofe boo? Mohlala o na le boleng ba GDP ea linaha tse ngata bakeng sa lilemo tse 'maloa (ho tloha 2000 ho ea 2017).

Ts'ebetso ea data

Re tla sebelisa khoutu e behiloeng ka tlase ho lokisa mokhoa o hlokahalang oa data. Re hlakola mabitso a likholomo, re fetole linomoro hore e be sebopeho sa linomoro, ebe re fetola data re sebelisa "kokello" () ts'ebetso. Re boloka tsohle tse amoheloang ho gdp_tidy.csv bakeng sa tšebeliso e eketsehileng.

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

Ho bōptjoa ha bona ho hloka mekhahlelo e 'meli:

  • Ho rera sete e felletseng ea li-histograms tsa 'nete u sebelisa ggplot2.
  • Animate static histograms ka liparamente tse lakatsehang o sebelisa gganimate.

Mohato oa ho qetela ke ho fana ka animation ka sebopeho se lakatsehang, ho kenyeletsoa GIF kapa MP4.

E kenya lilaebrari

  • laebrari (e hlophisitsoeng)
  • laebrari(gganimate)

Tsamaiso ea data

Mohato ona, o hloka ho sefa data ho fumana linaha tse 10 tse holimo bakeng sa selemo se seng le se seng. Ha re kenye litšiea tse 'maloa tse tla re lumella ho hlahisa tšōmo bakeng sa 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()

Ho etsa li-histograms tse tsitsitseng

Kaha joale re na le sephutheloana sa data ka mokhoa o hlokahalang, re qala ho taka li-histograms tse tsitsitseng. Lintlha tsa mantlha - linaha tse 10 tse holimo ka ho fetesisa tse nang le GDP e phahameng bakeng sa nako e khethiloeng. Re etsa li-graph bakeng sa selemo se seng le se seng.

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

Ho theha meralo ho sebelisa ggplot2 ho bonolo haholo. Joalokaha u ka bona karolong ea khoutu e ka holimo, ho na le lintlha tse 'maloa tsa bohlokoa tse nang le mosebetsi oa sehlooho (). Lia hlokahala e le hore likarolo tsohle li phele ntle le mathata. Tse ling tsa tsona li ka 'na tsa se ke tsa hlahisoa ha ho hlokahala. Mohlala: Ke mela le litšōmo tse otlolohileng feela tse tolotsoeng, empa litlotla tsa axis le likarolo tse ling tse 'maloa li tlosoa sebakeng seo.

animatsioon

Mosebetsi oa bohlokoa mona ke transition_states (), e kopanya hammoho li-graph tse fapaneng tse tsitsitseng. view_follow() e sebelisoa ho hula mela ea marang-rang.

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

E fana ka

Hang ha animation e bōpiloe le ho bolokoa nthong ea anim, ke nako ea ho e fana ka ho sebelisa animate () mosebetsi. Renderer e sebelisitsoeng ho animate() e ka fapana ho latela mofuta oa faele e hlahisoang e hlokahalang.

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 )

sephetho

Theha li-Histograms tsa Animated U sebelisa R

Joalokaha u ka bona, ha ho letho le rarahaneng. Morero oohle o fumaneha ho GitHub ea ka, u ka e sebelisa kamoo u bonang ho loketse kateng.

Skillbox e khothaletsa:

Source: www.habr.com

Eketsa ka tlhaloso