Har qanday veb-saytdagi postga to'g'ridan-to'g'ri joylashtirilishi mumkin bo'lgan animatsion chiziqli diagrammalar tobora ommalashib bormoqda. Ular ma'lum bir vaqt ichida har qanday xususiyatlardagi o'zgarishlar dinamikasini namoyish etadilar va buni aniq bajaradilar. Keling, ularni R va umumiy paketlar yordamida qanday yaratishni ko'rib chiqaylik.
Sizga eslatib o'tamiz:"Habr" ning barcha o'quvchilari uchun - "Habr" promo-kodidan foydalangan holda har qanday Skillbox kursiga yozilishda 10 000 rubl chegirma.
Bu ikkisi juda zarur. Bundan tashqari, ma'lumotlarni boshqarish, massivni tozalash va shunga mos ravishda formatlash uchun tartibli, farrosh va tarozi talab qilinadi.
ma'lumotlar
Ushbu loyihada biz foydalanadigan asl ma'lumotlar to'plami Jahon banki veb-saytidan yuklab olingan. Mana ular - Jahon banki ma'lumotlari. Xuddi shu ma'lumotlarni, agar sizga tayyor bo'lsa, yuklab olish mumkin loyiha papkalari.
Bu qanday ma'lumot? Namunada koβpchilik mamlakatlarning bir necha yillardagi (2000 yildan 2017 yilgacha) YaIM qiymati keltirilgan.
Ma'lumotni qayta ishlash
Kerakli ma'lumotlar formatini tayyorlash uchun quyida joylashtirilgan koddan foydalanamiz. Biz ustun nomlarini tozalaymiz, raqamlarni raqam formatiga aylantiramiz va ma'lumotlarni yig'ish () funktsiyasidan foydalanib o'zgartiramiz. Biz gdp_tidy.csv da olingan hamma narsani keyingi foydalanish uchun saqlaymiz.
Ggplot2 yordamida haqiqiy histogrammalarning to'liq to'plamini chizish.
Gganimate yordamida kerakli parametrlar bilan statik gistogrammalarni jonlantiring.
Yakuniy qadam animatsiyani kerakli formatda, shu jumladan GIF yoki MP4 formatida ko'rsatishdir.
Kutubxonalar yuklanmoqda
kutubxona (tartib)
kutubxona (gganimate)
Ma'lumotlarni boshqarish
Ushbu bosqichda har yili eng yaxshi 10 ta davlatni olish uchun ma'lumotlarni filtrlashingiz kerak. Keling, gistogramma uchun afsonani ko'rsatishga imkon beradigan bir nechta ustunlarni qo'shamiz.
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()
Statik histogrammalarni yaratish
Endi biz kerakli formatdagi ma'lumotlar paketiga egamiz, biz statik histogrammalarni chizishni boshlaymiz. Asosiy ma'lumotlar - tanlangan vaqt oralig'ida maksimal YaIMga ega 10 ta mamlakat. Biz har bir yil uchun grafiklarni yaratamiz.
Ggplot2 yordamida uchastkalarni yaratish juda oddiy. Yuqoridagi kod bo'limida ko'rib turganingizdek, theme() funksiyasi bilan bir nechta asosiy fikrlar mavjud. Ular barcha elementlar muammosiz jonlanishi uchun kerak. Agar kerak bo'lsa, ulardan ba'zilari ko'rsatilmasligi mumkin. Misol: Faqat vertikal panjara chiziqlari va afsonalari chizilgan, lekin o'q sarlavhalari va bir nechta boshqa komponentlar maydondan olib tashlanadi.
Animatsiya
Bu erda asosiy funktsiya transition_states() bo'lib, u alohida statik grafiklarni birlashtiradi. view_follow() panjara chiziqlarini chizish uchun ishlatiladi.
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")
Renderlash
Animatsiya yaratilgan va animatsiya ob'ektida saqlanganidan so'ng, uni animate() funktsiyasidan foydalanib ko'rsatish vaqti keldi. animate() da ishlatiladigan renderer talab qilinadigan chiqish fayli turiga qarab har xil bo'lishi mumkin.
Ko'rib turganingizdek, hech qanday murakkab narsa yo'q. Butun loyiha ichida mavjud mening GitHub, siz undan o'zingiz xohlagancha foydalanishingiz mumkin.