Nggawe Histogram Animasi Nggunakake R

Nggawe Histogram Animasi Nggunakake R

Bagan garis animasi sing bisa diselehake langsung menyang kiriman ing situs web apa wae dadi tambah populer. Dheweke nampilake dinamika owah-owahan ing karakteristik apa wae sajrone wektu tartamtu lan nindakake kanthi jelas. Ayo ndeleng carane nggawe nggunakake R lan paket umum.

Skillbox nyaranake: Kursus praktis "Pengembang Python saka awal".

Kita ngelingake: kanggo kabeh sing maca "Habr" - diskon 10 rubel nalika ndhaptar kursus Skillbox nggunakake kode promosi "Habr".

Paket

Kita butuh paket ing R:

Iki loro banget perlu. Kajaba iku, tidyverse, janitor lan timbangan bakal dibutuhake kanggo ngatur data, ngresiki array lan format sing cocog.

data

Dataset asli sing bakal digunakake ing proyek iki diundhuh saka situs web Bank Dunia. Iki padha- Data Bank Dunia. Data sing padha, yen sampeyan butuh siap, bisa diundhuh saka folder proyek.

Apa jenis informasi iki? Sampel kasebut ngemot nilai PDB umume negara sajrone pirang-pirang taun (saka 2000 nganti 2017).

Ngolah data

Kita bakal nggunakake kode sing dikirim ing ngisor iki kanggo nyiapake format data sing dibutuhake. We mbusak jeneng kolom, nguripake nomer menyang format nomer, lan Ngonversi data nggunakake klumpukne () fungsi. We nyimpen kabeh sing ditampa ing gdp_tidy.csv kanggo nggunakake luwih.

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

Histogram animasi

Penciptaan kasebut mbutuhake rong tahap:

  • Ngplot set lengkap histogram aktual nggunakake ggplot2.
  • Animasi histogram statis kanthi parameter sing dikarepake nggunakake gganimate.

Langkah pungkasan yaiku nerjemahake animasi ing format sing dikarepake, kalebu GIF utawa MP4.

Loading perpustakaan

  • perpustakaan (singkatan)
  • perpustakaan (ganimate)

Manajemen data

Ing langkah iki, sampeyan kudu nyaring data kanggo entuk 10 negara paling dhuwur saben taun. Ayo nambah sawetara kolom sing ngidini kita nampilake legenda kanggo 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()

Nggawe histogram statis

Saiki kita duwe paket data ing format sing dibutuhake, kita miwiti nggambar histogram statis. Informasi dhasar - 10 negara paling dhuwur kanthi PDB maksimum kanggo interval wektu sing dipilih. Kita nggawe grafik saben taun.

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

Nggawe plot nggunakake ggplot2 gampang banget. Nalika sampeyan bisa ndeleng ing bagean kode ndhuwur, ana sawetara TCTerms tombol karo fungsi tema (). Padha perlu supaya kabeh unsur animasi tanpa masalah. Sawetara bisa uga ora ditampilake yen perlu. Conto: Mung garis kothak vertikal lan legenda sing digambar, nanging judhul sumbu lan sawetara komponen liyane dibusak saka wilayah.

Animasi

Fungsi tombol ing kene yaiku transition_states (), nggawe grafik statis sing kapisah. view_follow() digunakake kanggo nggambar garis kothak.

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

Rendering

Sawise animasi wis digawe lan disimpen ing obyek anim, iku wektu kanggo nerjemahake nggunakake fungsi animate (). Renderer digunakake ing animate () bisa beda-beda gumantung ing jinis file output dibutuhake.

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 )

asil

Nggawe Histogram Animasi Nggunakake R

Nalika sampeyan bisa ndeleng, ora ana sing rumit. Kabeh proyek kasedhiya ing GitHub kula, sampeyan bisa nggunakake kaya sing dikarepake.

Skillbox nyaranake:

Source: www.habr.com

Add a comment