Abuur Histograms Animated Isticmaalka R

Abuur Histograms Animated Isticmaalka R

Jaantusyada bar-xakamaynta ee si toos ah loogu dhejin karo boostada shabakad kasta ayaa sii kordheysa oo caan ah. Waxay soo bandhigaan dhaqdhaqaaqyada isbeddelka sifooyin kasta muddo cayiman waxayna tan si cad u sameeyaan. Aan aragno sida loo abuuro iyaga oo isticmaalaya R iyo xirmooyinka guud.

Skillbox waxay ku talinaysaa: Koorso wax ku ool ah "Horumariyaha Python meel eber ah".

Waxaan xusuusineynaa: dhammaan akhristayaasha "Habr" - qiimo dhimis ah 10 rubles marka la qorayo koorso kasta oo Skillbox ah iyadoo la adeegsanayo koodhka xayeysiinta "Habr".

Baakado

Waxaan u baahanahay baakadaha R:

Labadan aad bay lagama maarmaan u yihiin. Intaa waxaa dheer, hagaajinta, nadiifiyaha iyo miisaanka ayaa looga baahan doonaa si loo maareeyo xogta, loo nadiifiyo habraaca iyo qaabka ku habboon.

data

Xogta asalka ah ee aan u adeegsan doono mashruucan waxaa laga soo dejisanayay bogga Bangiga Adduunka. Waa kuwan - Xogta Bangiga Adduunka. Xog isku mid ah, haddii aad u baahan tahay diyaarsan, ayaa laga soo dejisan karaa galalka mashruuca.

Waa maxay xog noocee ah? Muunadku waxa uu ka kooban yahay qiimaha wax-soo-saarka guud ee waddammada intooda badan dhowr sano (laga bilaabo 2000 ilaa 2017).

Habaynta xogta

Waxaan isticmaali doonaa koodka hoos lagu dhejiyay si aan u diyaarino qaabka xogta loo baahan yahay. Waxaan nadiifineynaa magacyada tiirarka, nambarada waxaan u rognaa qaab nambar, waxaanan u bedelnaa xogta anagoo adeegsanayna shaqada ururinta. Waxaan keydineynaa wax kasta oo lagu helo gdp_tidy.csv si loo sii isticmaalo.

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

Histogram-yada firfircoon

Abuuritaankoodu wuxuu u baahan yahay laba marxaladood:

  • Qorista xisaab dhammaystiran oo dhab ah iyadoo la adeegsanayo ggplot2.
  • Ku dhaq histograms taagan oo leh cabbiraadyo la rabo adiga oo isticmaalaya ganimate.

Talaabada ugu danbeysa waa in loo sameeyo animation qaabka la rabo, oo ay ku jiraan GIF ama MP4.

Soodejinaya maktabadaha

  • maktabad
  • maktabad (ganmate)

Maamulka xogta

Tallaabadan, waxaad u baahan tahay inaad shaandhayso xogta si aad u hesho 10ka waddan ee ugu sarreeya sannad kasta. Aan ku darno dhowr tiir oo noo ogolaan doona inaan soo bandhigno halyeyga histogramka.

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

Dhisida histogaraamyada taagan

Hadda oo aan haysano xirmo xog ah oo qaabka loo baahan yahay, waxaan bilaabeynaa sawirista histograms taagan. Macluumaadka aasaasiga ah - 10ka waddan ee ugu sarreeya ee leh GDP ugu badnaan muddada la doortay. Waxaan abuurnaa garaafyo sannad kasta.

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

Abuuritaanka goobo la isticmaalayo ggplot2 waa mid aad u fudud. Sida aad ku arki karto qaybta koodhka ee sare, waxa jira dhawr qodob oo muhiim ah oo mawduuca() shaqada ku leh. Waxay lagama maarmaan u yihiin si dhammaan curiyayaasha ay u noolaadaan dhibaato la'aan. Qaarkood waxaa laga yaabaa inaan la soo bandhigin haddii loo baahdo. Tusaale: Kaliya xariiqyada xariiqda toosan iyo halyeeyada ayaa la sawiray, laakiin ciwaannada dhidibka iyo qaybo kale oo dhowr ah ayaa laga saaray aagga.

Animation

Hawsha muhiimka ah ee halkan ku taal waa kala-guurka_states(), waxay isku tolaysaa garaafyo kala duwan. view_follow() waxaa loo isticmaalaa in lagu sawiro xariiqyada.

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

Bixinta

Marka animation-ka la sameeyo oo lagu kaydiyo shayga animation, waa waqtigii la samayn lahaa iyada oo la adeegsanayo animate() function. Sameeyaha loo isticmaalo animate() wuu ka duwanaan karaa iyadoo ku xiran nooca faylka wax soo saarka ee loo baahan yahay.

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 )

natiijada

Abuur Histograms Animated Isticmaalka R

Sida aad arki karto, ma jiraan wax adag. Mashruuca oo dhan waa laga heli karaa gudaha my GitHub, waxaad u isticmaali kartaa sida aad ku habboon tahay.

Skillbox waxay ku talinaysaa:

Source: www.habr.com

Add a comment