Ƙirƙirar Histograms Mai Rarwa Ta Amfani da R

Ƙirƙirar Histograms Mai Rarwa Ta Amfani da R

Taswirar mashaya mai rai waɗanda za a iya shigar da su kai tsaye cikin matsayi akan kowane gidan yanar gizon suna ƙara shahara. Suna nuna sauye-sauye na canje-canje a cikin kowane halaye a cikin wani ɗan lokaci kuma suna yin hakan a fili. Bari mu ga yadda ake ƙirƙira su ta amfani da fakitin R da na gama-gari.

Skillbox yana ba da shawarar: Hakikanin hanya "Python developer daga karce".

Muna tunatarwa: ga duk masu karatu na "Habr" - rangwame na 10 rubles lokacin yin rajista a kowane kwas na Skillbox ta amfani da lambar talla "Habr".

Fakitin

Muna buƙatar fakiti a cikin R:

Waɗannan biyun suna da matuƙar mahimmanci. Bugu da ƙari, za a buƙaci gyara, mai kula da ma'auni don sarrafa bayanai, tsaftace tsararru da tsara yadda ya kamata.

data

Ana zazzage bayanan asali na asali da za mu yi amfani da su a cikin wannan aikin daga gidan yanar gizon Bankin Duniya. Ga su - Bayanan Bankin Duniya. Haka bayanai, idan kana bukatar shi shirye-sanya, za a iya sauke daga manyan fayilolin aikin.

Wane irin bayani ne wannan? Samfurin ya ƙunshi ƙimar GDP na yawancin ƙasashe na shekaru da yawa (daga 2000 zuwa 2017).

Sarrafa bayanai

Za mu yi amfani da lambar da aka buga a ƙasa don shirya tsarin bayanan da ake buƙata. Muna share sunayen ginshiƙan, mu juya lambobi zuwa tsarin lamba, kuma muna canza bayanan ta amfani da aikin tara(). Muna adana duk abin da aka karɓa a gdp_tidy.csv don ƙarin amfani.

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

Histograms mai rai

Halittar su tana buƙatar matakai biyu:

  • Ƙirƙirar cikakken saitin ainihin histogram ta amfani da ggplot2.
  • Rarraba static histogram tare da sigogin da ake so ta amfani da ganimate.

Mataki na ƙarshe shine sanya motsin rai a tsarin da ake so, gami da GIF ko MP4.

Ana loda dakunan karatu

  • dakin karatu (laburare)
  • laburare (ganimate)

Gudanar da bayanai

A cikin wannan matakin, kuna buƙatar tace bayanai don samun manyan ƙasashe 10 na kowace shekara. Bari mu ƙara ginshiƙai da yawa waɗanda za su ba mu damar nuna tatsuniyoyi don tarihin.

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

Gina a tsaye histogram

Yanzu da muke da fakitin bayanai a cikin tsarin da ake buƙata, za mu fara zana statistics histograms. Bayanan asali - manyan ƙasashe 10 tare da matsakaicin GDP na tazarar lokaci da aka zaɓa. Muna ƙirƙirar hotuna don kowace shekara.

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

Ƙirƙirar filaye ta amfani da ggplot2 abu ne mai sauƙi. Kamar yadda kuke gani a sashin lambar da ke sama, akwai maɓalli da yawa tare da aikin jigon(). Sun zama dole domin duk abubuwa su rayayye ba tare da matsala ba. Wasu daga cikinsu ƙila ba za a nuna su ba idan ya cancanta. Misali: Layukan grid na tsaye da tatsuniyoyi ne kawai aka zana, amma ana cire taken axis da wasu abubuwa da yawa daga yankin.

Tashin hankali

Makullin aikin anan shine transfer_states(), yana haɗa hotuna daban-daban. Ana amfani da view_follow() don zana layukan 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")

Bayarwa

Da zarar an ƙirƙiri animation kuma a adana shi a cikin abu mai rai, lokaci yayi da za a yi shi ta amfani da aikin animate(). Mai yin amfani da shi a cikin animate() na iya bambanta dangane da nau'in fayil ɗin fitarwa da ake buƙata.

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 )

sakamakon

Ƙirƙirar Histograms Mai Rarwa Ta Amfani da R

Kamar yadda kake gani, babu wani abu mai rikitarwa. Ana samun dukkan aikin a ciki GitHub ku, za ku iya amfani da shi yadda kuke so.

Skillbox yana ba da shawarar:

source: www.habr.com

Add a comment