Creu Histogramau Animeiddiedig Gan Ddefnyddio R

Creu Histogramau Animeiddiedig Gan Ddefnyddio R

Mae siartiau bar animeiddiedig y gellir eu mewnosod yn uniongyrchol i bostiad ar unrhyw wefan yn dod yn fwyfwy poblogaidd. Dangosant ddeinameg newidiadau mewn unrhyw nodweddion dros gyfnod penodol a gwnΓ’nt hyn yn glir. Gadewch i ni weld sut i'w creu gan ddefnyddio pecynnau R a generig.

Mae Skillsbox yn argymell: Cwrs ymarferol "Datblygwr Python o'r dechrau".

Rydym yn atgoffa: i holl ddarllenwyr "Habr" - gostyngiad o 10 rubles wrth gofrestru ar unrhyw gwrs Skillbox gan ddefnyddio'r cod hyrwyddo "Habr".

Pecynnau

Mae angen pecynnau arnom yn R:

Mae'r ddau hyn yn hynod angenrheidiol. Yn ogystal, bydd angen dull taclus, porthor a chloriannau i reoli'r data, glanhau'r arae a fformat yn unol Γ’ hynny.

Data

Mae'r set ddata wreiddiol y byddwn yn ei defnyddio yn y prosiect hwn yn cael ei lawrlwytho o wefan Banc y Byd. Dyma nhw - Data Banc y Byd. Gellir lawrlwytho'r un data, os oes ei angen arnoch yn barod, o ffolderi prosiect.

Pa fath o wybodaeth yw hwn? Mae'r sampl yn cynnwys gwerth CMC y rhan fwyaf o wledydd ers sawl blwyddyn (rhwng 2000 a 2017).

Prosesu data

Byddwn yn defnyddio'r cod a bostiwyd isod i baratoi'r fformat data gofynnol. Rydyn ni'n clirio enwau'r colofnau, yn troi'r rhifau i fformat rhif, ac yn trosi'r data gan ddefnyddio'r swyddogaeth casglu (). Rydym yn cadw popeth a dderbynnir yn gdp_tidy.csv i'w ddefnyddio ymhellach.

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

Histogramau animeiddiedig

Mae angen dau gam i'w creu:

  • Plotio set gyflawn o histogramau go iawn gan ddefnyddio ggplot2.
  • Animeiddio histogramau statig gyda pharamedrau dymunol gan ddefnyddio gganimate.

Y cam olaf yw gwneud yr animeiddiad yn y fformat a ddymunir, gan gynnwys GIF neu MP4.

Llwytho llyfrgelloedd

  • llyfrgell (mynd taclus)
  • llyfrgell (gganimate)

Rheoli data

Yn y cam hwn, mae angen i chi hidlo'r data i gael y 10 gwlad orau ar gyfer pob blwyddyn. Gadewch i ni ychwanegu sawl colofn a fydd yn caniatΓ‘u inni arddangos chwedl ar gyfer yr 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()

Adeiladu histogramau statig

Nawr bod gennym becyn data yn y fformat gofynnol, rydym yn dechrau llunio histogramau statig. Gwybodaeth sylfaenol - y 10 gwlad orau gydag uchafswm CMC ar gyfer yr egwyl amser a ddewiswyd. Rydym yn creu graffiau ar gyfer pob blwyddyn.

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

Mae creu plotiau gan ddefnyddio ggplot2 yn syml iawn. Fel y gwelwch yn yr adran cod uchod, mae sawl pwynt allweddol gyda'r swyddogaeth thema (). Maent yn angenrheidiol fel bod pob elfen yn animeiddio heb broblemau. Efallai na fydd rhai ohonynt yn cael eu harddangos os oes angen. Enghraifft: Dim ond y llinellau grid fertigol a'r chwedlau sy'n cael eu tynnu, ond mae'r teitlau echelin a sawl cydran arall yn cael eu tynnu o'r ardal.

Animeiddio

Y ffwythiant allweddol yma yw transition_states(), mae'n pwytho graffiau statig ar wahΓ’n at ei gilydd. defnyddir view_follow() i dynnu llinellau grid.

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

Rendro

Unwaith y bydd yr animeiddiad wedi'i greu a'i storio yn y gwrthrych anim, mae'n bryd ei rendro gan ddefnyddio'r ffwythiant animate(). Gall y rendr a ddefnyddir yn animeiddio () fod yn wahanol yn dibynnu ar y math o ffeil allbwn sydd ei hangen.

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 )

Canlyniad

Creu Histogramau Animeiddiedig Gan Ddefnyddio R

Fel y gallwch weld, dim byd cymhleth. Mae'r prosiect cyfan ar gael yn fy GitHub, gallwch ei ddefnyddio fel y gwelwch yn dda.

Mae Skillsbox yn argymell:

Ffynhonnell: hab.com

Ychwanegu sylw