
Аливаа вэбсайт дээрх нийтлэлд шууд оруулах боломжтой хөдөлгөөнт баганан графикууд улам бүр түгээмэл болж байна. Тэд тодорхой хугацааны туршид аливаа шинж чанарын өөрчлөлтийн динамикийг харуулдаг бөгөөд үүнийг тодорхой хийдэг. R болон ерөнхий багцуудыг ашиглан тэдгээрийг хэрхэн үүсгэхийг харцгаая.
Skillbox зөвлөж байна: Практик курс .
Бид танд сануулж байна: "Хабр" -ын бүх уншигчдад - "Habr" сурталчилгааны кодыг ашиглан Skillbox-ын аль ч курст бүртгүүлэхдээ 10 рублийн хөнгөлөлт.
Багцууд
Бидэнд R-д багц хэрэгтэй:
- ggplot2
Энэ хоёр маш хэрэгтэй. Нэмж дурдахад, өгөгдлийг удирдах, массивыг цэвэрлэж, форматлахын тулд эмх цэгцтэй, цэвэрлэгч, жинлүүр шаардлагатай болно.
мэдээ
Энэхүү төсөлд бидний ашиглах анхны мэдээллийн багцыг Дэлхийн банкны вэбсайтаас татаж авсан болно. Тэд энд байна - . Үүнтэй ижил өгөгдлийг, хэрэв танд бэлэн байгаа бол эндээс татаж авч болно .
Энэ ямар мэдээлэл вэ? Түүвэрт ихэнх улс орны хэдэн жилийн (2000-2017 он) ДНБ-ий үнэ цэнийг оруулсан болно.
Өгөгдөл боловсруулах
Бид шаардлагатай өгөгдлийн форматыг бэлтгэхийн тулд доор байрлуулсан кодыг ашиглана. Бид баганын нэрийг цэвэрлэж, тоонуудыг тооны формат болгон хувиргаж, gather() функцийг ашиглан өгөгдлийг хөрвүүлдэг. Бид gdp_tidy.csv-д хүлээн авсан бүх зүйлийг цаашид ашиглах зорилгоор хадгалдаг.
library(tidyverse)
library(janitor)
gdp <- read_csv("./data/GDP_Data.csv")
#шаардлагатай багануудыг сонгоно уу
gdp <- gdp %>% сонгох(3:15)
#зөвхөн улсын мөрүүдийг шүүнэ
gdp <- gdp[1:217,]
gdp_tidy <- gdp %>%
mutate_at(vars(contains("YR")), as.тоон) %>%
цуглуулах(жил,утга,3:13) %>%
цэвэрлэгч::clean_names() %>%
хувиргах(жил = тоогоор(stringr::str_sub(жил,1,4)))
write_csv(gdp_tidy,"./data/gdp_tidy.csv")
Хөдөлгөөнт гистограмууд
Тэдгээрийг бүтээхэд хоёр үе шат шаардлагатай:
- ggplot2 ашиглан бодит гистограммуудын бүрэн багцыг зурах.
- gganimate ашиглан статик гистограммыг хүссэн параметрүүдээр хөдөлгөөнтэй болгоно.
Эцсийн алхам бол хөдөлгөөнт дүрсийг GIF эсвэл MP4 зэрэг хүссэн форматаар гаргах явдал юм.
Номын сангуудыг ачаалж байна
- номын сан (эмх цэгц)
- номын сан(gganimate)
Өгөгдлийн менежмент
Энэ алхамд та жил бүрийн шилдэг 10 улсыг авахын тулд өгөгдлийг шүүж үзэх хэрэгтэй. Гистограмын домог харуулах боломжийг олгох хэд хэдэн багана нэмье.
gdp_tidy <- read_csv("./data/gdp_tidy.csv")
gdp_formatted <- gdp_tidy %>%
group_by(жил) %>%
# * 1 нь гулсах үед бүхэл бус зэрэглэлийг бий болгодог
мутаци (зэрэглэл = зэрэглэл(-утга),
Утга_рел = утга/утга[зэрэглэл==1],
Value_lbl = paste0(" ",round(утга/1e9))) %>%
group_by(улсын_нэр) %>%
шүүлтүүр(зэрэглэл <=10) %>%
бүлгийг задлах()
Статик гистограмм бүтээх
Одоо бид шаардлагатай форматтай өгөгдлийн багцтай болсон тул статик гистограмм зурж эхэлнэ. Үндсэн мэдээлэл - сонгосон хугацааны интервалд хамгийн их ДНБ-тэй эхний 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 ашиглан график үүсгэх нь маш энгийн. Дээрх код хэсгээс харж байгаачлан theme() функцтэй холбоотой хэд хэдэн гол зүйл байдаг. Эдгээр нь бүх элементүүд асуудалгүйгээр амилахын тулд зайлшгүй шаардлагатай. Шаардлагатай бол заримыг нь харуулахгүй байж болно. Жишээ: Зөвхөн босоо шугам, тэмдэглэгээг зурсан боловч тэнхлэгийн гарчиг болон бусад хэд хэдэн бүрэлдэхүүн хэсгүүдийг талбайгаас хассан.
хөдөлгөөнт дүрс
Энд байгаа гол функц нь 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")
Үзүүлж байна
Хөдөлгөөнт дүрсийг үүсгэн, animate() функцийг ашиглан дүрслэх цаг нь анимацийн объектод хадгалагдсан болно. animate()-д ашигласан рендер нь шаардлагатай гаралтын файлын төрлөөс хамаарч өөр байж болно.
GIF
# For GIF
animate(anim, 200, fps = 20, өргөн = 1200, өндөр = 1000,
renderer = gifski_renderer("gganim.gif"))
MP4
# For MP4
animate(anim, 200, fps = 20, өргөн = 1200, өндөр = 1000,
renderer = ffmpeg_renderer()) -> for_mp4
anim_save("animation.mp4", хөдөлгөөнт дүрс = for_mp4 )
үр дүн

Таны харж байгаагаар ямар ч төвөгтэй зүйл байхгүй. Төслийг бүхэлд нь эндээс авах боломжтой , та үүнийг хүссэнээрээ ашиглаж болно.
Skillbox зөвлөж байна:
- Хоёр жилийн практик сургалт .
- Онлайн курс .
- Практик жилийн курс .
Эх сурвалж: www.habr.com
