Unda Histogramu Zilizohuishwa Ukitumia R

Unda Histogramu Zilizohuishwa Ukitumia R

Chati za pau zilizohuishwa ambazo zinaweza kupachikwa moja kwa moja kwenye chapisho kwenye tovuti yoyote zinazidi kuwa maarufu. Wao huonyesha mienendo ya mabadiliko katika sifa zozote kwa muda fulani na hufanya hivi kwa uwazi. Wacha tuone jinsi ya kuziunda kwa kutumia R na vifurushi vya kawaida.

Skillbox inapendekeza: Kozi ya vitendo "Mtengenezaji wa chatu kutoka mwanzo".

Tunakukumbusha: kwa wasomaji wote wa "Habr" - punguzo la rubles 10 wakati wa kujiandikisha katika kozi yoyote ya Skillbox kwa kutumia msimbo wa uendelezaji wa "Habr".

Vifurushi

Tunahitaji vifurushi katika R:

Hizi mbili ni muhimu sana. Kwa kuongeza, mpangilio, mwangalizi na mizani itahitajika ili kudhibiti data, kusafisha safu na umbizo ipasavyo.

Data

Seti halisi ya data tutakayotumia katika mradi huu imepakuliwa kutoka kwa tovuti ya Benki ya Dunia. Hawa hapa - Data ya Benki ya Dunia. Data sawa, ikiwa unahitaji tayari, inaweza kupakuliwa kutoka folda za mradi.

Ni aina gani ya habari hii? Sampuli ina thamani ya Pato la Taifa la nchi nyingi kwa miaka kadhaa (kutoka 2000 hadi 2017).

Usindikaji wa data

Tutatumia msimbo uliowekwa hapa chini ili kuandaa umbizo la data linalohitajika. Tunafuta majina ya safu wima, kugeuza nambari kuwa muundo wa nambari, na kubadilisha data kwa kutumia mkusanyiko () kitendakazi. Tunahifadhi kila kitu kinachopokelewa katika gdp_tidy.csv kwa matumizi zaidi.

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

Histogramu zilizohuishwa

Uumbaji wao unahitaji hatua mbili:

  • Kupanga seti kamili ya histograms halisi kwa kutumia ggplot2.
  • Huisha histogramu tuli na vigezo unavyotaka kwa kutumia gganimate.

Hatua ya mwisho ni kutoa uhuishaji katika umbizo linalotakikana, ikijumuisha GIF au MP4.

Inapakia maktaba

  • maktaba (tidyverse)
  • maktaba (gganimate)

Usimamizi wa data

Katika hatua hii, unahitaji kuchuja data ili kupata nchi 10 bora kwa kila mwaka. Hebu tuongeze safu wima kadhaa ambazo zitaturuhusu kuonyesha hadithi kwa 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()

Kujenga histograms tuli

Sasa kwa kuwa tuna kifurushi cha data katika muundo unaohitajika, tunaanza kuchora histograms tuli. Taarifa za msingi - nchi 10 bora zilizo na Pato la Taifa la juu zaidi kwa muda uliochaguliwa. Tunaunda grafu kwa kila mwaka.

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

Kuunda viwanja kwa kutumia ggplot2 ni rahisi sana. Kama unavyoona katika sehemu ya msimbo hapo juu, kuna vidokezo kadhaa muhimu na theme() kazi. Ni muhimu ili vipengele vyote vihuishwe bila matatizo. Baadhi yao huenda zisionyeshwe ikiwa ni lazima. Mfano: Mistari na hekaya wima pekee ndizo zinazochorwa, lakini vichwa vya mhimili na vipengele vingine kadhaa huondolewa kwenye eneo hilo.

Uhuishaji

Kazi kuu hapa ni transition_states(); inaunganisha pamoja grafu tuli tofauti. view_follow() hutumika kuchora mistari ya gridi ya taifa.

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

Utoaji

Mara tu uhuishaji unapoundwa na kuhifadhiwa kwenye kitu cha anim, ni wakati wa kuifanya kwa kutumia animate() kazi. Kionyeshi kinachotumiwa katika animate() kinaweza kuwa tofauti kulingana na aina ya faili ya towe inayohitajika.

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 )

Matokeo

Unda Histogramu Zilizohuishwa Ukitumia R

Kama unaweza kuona, hakuna kitu ngumu. Mradi mzima unapatikana ndani GitHub yangu, unaweza kuitumia unavyoona inafaa.

Skillbox inapendekeza:

Chanzo: mapenzi.com

Kuongeza maoni