Os gráficos de barras animados que se poden inserir directamente nunha publicación de calquera sitio web son cada vez máis populares. Mostran a dinámica dos cambios en calquera característica durante un tempo determinado e fano con claridade. Vexamos como crealos usando R e paquetes xenéricos.
Recordámolo:para todos os lectores de "Habr" - un desconto de 10 rublos ao inscribirse en calquera curso de Skillbox usando o código promocional "Habr".
Estes dous son extremadamente necesarios. Ademais, será necesario tidyverse, conserxe e básculas para xestionar os datos, limpar a matriz e formatar en consecuencia.
Datos
O conxunto de datos orixinais que usaremos neste proxecto descárgase do sitio web do Banco Mundial. Aquí están - Datos do Banco Mundial. Os mesmos datos, se o necesitas listo, pódense descargar desde carpetas do proxecto.
Que tipo de información é esta? A mostra contén o valor do PIB da maioría dos países durante varios anos (de 2000 a 2017).
Tratamento de datos
Usaremos o código publicado a continuación para preparar o formato de datos necesario. Borramos os nomes das columnas, transformamos os números nun formato numérico e convertemos os datos mediante a función gather(). Gardamos todo o que se recibe en gdp_tidy.csv para o seu posterior uso.
Trazar un conxunto completo de histogramas reais usando ggplot2.
Anima histogramas estáticos cos parámetros desexados usando gganimate.
O paso final é renderizar a animación no formato desexado, incluído GIF ou MP4.
Cargando bibliotecas
biblioteca (tidyverse)
biblioteca (gganimate)
Xestión de datos
Neste paso, cómpre filtrar os datos para obter os 10 principais países de cada ano. Engademos varias columnas que nos permitirán mostrar unha lenda para o histograma.
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()
Construción de histogramas estáticos
Agora que temos un paquete de datos no formato necesario, comezamos a debuxar histogramas estáticos. Información básica: os 10 principais países con PIB máximo para o intervalo de tempo seleccionado. Creamos gráficos para cada ano.
Crear tramas usando ggplot2 é moi sinxelo. Como podes ver na sección de código anterior, hai varios puntos clave coa función theme(). Son necesarios para que todos os elementos se animen sen problemas. É posible que algúns deles non se mostren se é necesario. Exemplo: só se debuxan as liñas de grade verticais e as lendas, pero os títulos dos eixes e outros compoñentes elimínanse da área.
Animación
A función clave aquí é transition_states(), que une gráficos estáticos separados. view_follow() úsase para debuxar liñas de grade.
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")
Representación
Unha vez creada e almacenada a animación no obxecto anim, é hora de renderizala usando a función animate(). O renderizador usado en animate() pode ser diferente dependendo do tipo de ficheiro de saída necesario.