R ఉపయోగించి యానిమేటెడ్ హిస్టోగ్రామ్‌లను సృష్టించండి

R ఉపయోగించి యానిమేటెడ్ హిస్టోగ్రామ్‌లను సృష్టించండి

ఏదైనా వెబ్‌సైట్‌లోని పోస్ట్‌లో నేరుగా పొందుపరచగల యానిమేటెడ్ బార్ చార్ట్‌లు బాగా ప్రాచుర్యం పొందుతున్నాయి. వారు నిర్దిష్ట సమయంలో ఏదైనా లక్షణాలలో మార్పుల యొక్క డైనమిక్‌లను ప్రదర్శిస్తారు మరియు దీన్ని స్పష్టంగా చేస్తారు. R మరియు జెనరిక్ ప్యాకేజీలను ఉపయోగించి వాటిని ఎలా సృష్టించాలో చూద్దాం.

Skillbox సిఫార్సు చేస్తోంది: ప్రాక్టికల్ కోర్సు "మొదటి నుండి పైథాన్ డెవలపర్".

మేము గుర్తు చేస్తున్నాము: Habr పాఠకులందరికీ - Habr ప్రోమో కోడ్‌ని ఉపయోగించి ఏదైనా Skillbox కోర్సులో నమోదు చేసుకున్నప్పుడు 10 రూబుల్ తగ్గింపు.

ప్యాకేజీలు

మాకు R లో ప్యాకేజీలు అవసరం:

ఈ రెండు చాలా అవసరం. అదనంగా, డేటాను నిర్వహించడానికి, శ్రేణిని క్లీన్ అప్ చేయడానికి మరియు తదనుగుణంగా ఫార్మాట్ చేయడానికి టైడ్వర్స్, జానిటర్ మరియు స్కేల్స్ అవసరం.

డేటా

ఈ ప్రాజెక్ట్‌లో మేము ఉపయోగించే అసలు డేటాసెట్ ప్రపంచ బ్యాంక్ వెబ్‌సైట్ నుండి డౌన్‌లోడ్ చేయబడింది. వారు ఇక్కడ ఉన్నారు - వరల్డ్ బ్యాంక్ డేటా. అదే డేటా, మీకు రెడీమేడ్ కావాలంటే, డౌన్‌లోడ్ చేసుకోవచ్చు ప్రాజెక్ట్ ఫోల్డర్లు.

ఇది ఎలాంటి సమాచారం? నమూనా అనేక సంవత్సరాల (2000 నుండి 2017 వరకు) చాలా దేశాల GDP విలువను కలిగి ఉంది.

డేటా ప్రాసెసింగ్

అవసరమైన డేటా ఆకృతిని సిద్ధం చేయడానికి మేము దిగువ పోస్ట్ చేసిన కోడ్‌ని ఉపయోగిస్తాము. మేము కాలమ్ పేర్లను క్లియర్ చేస్తాము, సంఖ్యలను నంబర్ ఫార్మాట్‌గా మారుస్తాము మరియు gather() ఫంక్షన్‌ని ఉపయోగించి డేటాను మారుస్తాము. మేము తదుపరి ఉపయోగం కోసం gdp_tidy.csvలో స్వీకరించిన ప్రతిదాన్ని సేవ్ చేస్తాము.

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

యానిమేటెడ్ హిస్టోగ్రామ్‌లు

వారి సృష్టికి రెండు దశలు అవసరం:

  • ggplot2ని ఉపయోగించి వాస్తవ హిస్టోగ్రామ్‌ల పూర్తి సెట్‌ను ప్లాట్ చేయడం.
  • గ్గనిమేట్‌ని ఉపయోగించి కావలసిన పారామితులతో స్టాటిక్ హిస్టోగ్రామ్‌లను యానిమేట్ చేయండి.

GIF లేదా MP4తో సహా కావలసిన ఫార్మాట్‌లో యానిమేషన్‌ను రెండర్ చేయడం చివరి దశ.

లైబ్రరీలను లోడ్ చేస్తోంది

  • లైబ్రరీ (అలసట)
  • లైబ్రరీ(గానిమేట్)

సమాచార నిర్వహణ

ఈ దశలో, మీరు ప్రతి సంవత్సరం టాప్ 10 దేశాలను పొందడానికి డేటాను ఫిల్టర్ చేయాలి. హిస్టోగ్రాం కోసం ఒక లెజెండ్‌ను ప్రదర్శించడానికి మమ్మల్ని అనుమతించే అనేక నిలువు వరుసలను జోడిద్దాం.

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

స్టాటిక్ హిస్టోగ్రామ్‌లను నిర్మించడం

ఇప్పుడు మనకు అవసరమైన ఫార్మాట్‌లో డేటా ప్యాకేజీ ఉంది, మేము స్టాటిక్ హిస్టోగ్రామ్‌లను గీయడం ప్రారంభిస్తాము. ప్రాథమిక సమాచారం - ఎంచుకున్న సమయ వ్యవధిలో గరిష్ట GDP ఉన్న టాప్ 10 దేశాలు. మేము ప్రతి సంవత్సరం గ్రాఫ్‌లను రూపొందిస్తాము.

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

ggplot2 ఉపయోగించి ప్లాట్లను సృష్టించడం చాలా సులభం. మీరు పైన ఉన్న కోడ్ విభాగంలో చూడగలిగినట్లుగా, థీమ్() ఫంక్షన్‌తో అనేక కీలక అంశాలు ఉన్నాయి. అన్ని అంశాలు సమస్యలు లేకుండా యానిమేట్ చేయడానికి అవి అవసరం. అవసరమైతే వాటిలో కొన్ని ప్రదర్శించబడకపోవచ్చు. ఉదాహరణ: నిలువు గ్రిడ్ లైన్‌లు మరియు లెజెండ్‌లు మాత్రమే డ్రా చేయబడ్డాయి, అయితే అక్షం శీర్షికలు మరియు అనేక ఇతర భాగాలు ప్రాంతం నుండి తీసివేయబడతాయి.

యానిమేషన్

ఇక్కడ ముఖ్య విధి transition_states(), ఇది ప్రత్యేక స్టాటిక్ గ్రాఫ్‌లను కలిపి కుట్టడం. view_follow() గ్రిడ్ లైన్లను గీయడానికి ఉపయోగించబడుతుంది.

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

రెండరింగ్

యానిమేషన్ సృష్టించబడి, యానిమ్ ఆబ్జెక్ట్‌లో నిల్వ చేయబడిన తర్వాత, యానిమేట్() ఫంక్షన్‌ని ఉపయోగించి దాన్ని రెండర్ చేయడానికి సమయం ఆసన్నమైంది. అవసరమైన అవుట్‌పుట్ ఫైల్ రకాన్ని బట్టి యానిమేట్()లో ఉపయోగించే రెండరర్ భిన్నంగా ఉండవచ్చు.

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 )

ఫలితంగా

R ఉపయోగించి యానిమేటెడ్ హిస్టోగ్రామ్‌లను సృష్టించండి

మీరు గమనిస్తే, సంక్లిష్టంగా ఏమీ లేదు. మొత్తం ప్రాజెక్ట్ అందుబాటులో ఉంది నా GitHub, మీకు తగినట్లుగా మీరు దీన్ని ఉపయోగించవచ్చు.

Skillbox సిఫార్సు చేస్తోంది:

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి