library(tidyverse)
library(gganimate)
library(rgl)
library(gapminder)
library(ggplot2)
library(animation)
library(gt)
Usamos otro conjunto de datos del archivo airquality que se encuentra en el paquete datasets. Primero creamos un gráfico estático (sin animación), el día del mes (day), la temperatura del día (Temp) y una linea para cada mes (mayo a septiembre) con la función group.
Comenzamos con cambiar el nombre de algunas variables al castellano
names(airquality) # Nombres originales
## [1] "Ozone" "Solar.R" "Viento" "Temp" "Mes" "Día"
names(airquality)[3] <- 'Viento'
names(airquality)[5] <- 'Mes'
names(airquality)[6] <- 'Día'
#names(airquality) # Nombres en castellano
calidad_aire=airquality
head(calidad_aire)
## Ozone Solar.R Viento Temp Mes Día
## 1 41 190 7.4 67 5 1
## 2 36 118 8.0 72 5 2
## 3 12 149 12.6 74 5 3
## 4 18 313 11.5 62 5 4
## 5 NA NA 14.3 56 5 5
## 6 28 NA 14.9 66 5 6
La transiciones también pueden ser producida con otros geoms por ejemplo con geom_col. El primer paso es tener un data frame que representa los valores de cada columna/barra. Entonces el primer paso aquí fue de calcular el promedio de temperatura por mes en un nuevo data frame que llamamos temp.promedio.
Preparación de los datos
names(calidad_aire)
## [1] "Ozone" "Solar.R" "Viento" "Temp" "Mes" "Día"
temp.promedio2 <- calidad_aire %>%
dplyr::select(Mes, Temp) %>%
group_by(Mes) %>%
summarise(Temp = mean( Temp))
temp.promedio2
## Temp
## 1 77.88235
Ahora creamos un gráfico estático de los datos con geom_col.
library(ggplot2)
s=ggplot(temp.promedio2, aes(Mes, Temp, fill = Temp)) +
geom_col() +
scale_fill_distiller(palette = "Reds", direction = 1) +
theme_minimal() +
theme(
panel.grid = element_blank(),
panel.grid.major.y = element_line(color = "white"),
panel.ontop = TRUE
)
s
El efecto de transición de un mes al otro se añade con la función transition_states(). Si uno añade solamente esta función aparece solamente una barra a la vez.
s + transition_states( Mes, wrap = FALSE)
s + transition_states( Mes, wrap = FALSE) +
shadow_mark()
Para más ejemplos de como usar gganimate ver este enlace Oceonografia