# Install and load packages using pacman
if (!require("pacman")) install.packages("pacman")
## Loading required package: pacman
library(pacman)
p_load(emoGG,extrafont, gganimate, magrittr, tidyverse)
# Import data
dino_df <- read.csv("https://raw.githubusercontent.com/shahnp/data/master/pbdb_data.txt", skip = 21, header = TRUE, stringsAsFactors = FALSE)
#-----------#
# Set theme #
#-----------#
## Color scheme adapted from https://dinosaurstew.com/color-palettes/ (stormy seas palette).
dino_theme <- theme(axis.line = element_blank(),
axis.text.x = element_text(colour = "darkgreen"),
axis.text.y = element_text(colour = "darkgreen"),
axis.ticks = element_blank(),
axis.ticks.length = unit(0, "pt"),
axis.title.x = element_text(colour = "#484745", size = 12),
axis.title.y = element_text(colour = "#484745", size = 12),
legend.position = "none",
panel.background = element_blank(),
panel.border = element_blank(),
panel.grid.major = element_line(colour = "#eaead6"),
panel.grid.minor = element_line(colour = "#eaead6"),
plot.background = element_rect(fill = "#ccc7ad", colour = NA),
plot.caption = element_text(colour = "#eaead6",size = 12),
plot.margin = margin(5.5, 40, 5.5, 5.5),
plot.subtitle = element_text(colour = "#484745"),
plot.title = element_text(face = "bold", colour = "#484745", size = 16))
#--------------#
# Prepare data #
#--------------#
# Prepare data
dino_df %<>%
rename(species = accepted_name, begin = max_ma, end = min_ma) %>%
mutate_at(vars(begin, end), funs(round(.))) %>%
mutate(years = Map(seq, begin, end, -1)) %>%
select(species, years) %>%
unnest(years) %>%
distinct() %>%
group_by(years) %>%
dplyr::count() %>%
rename(Year = years, Count = n)
# Plot animated timeline
dino_timeline <- ggplot(dino_df, aes(x = Year, y = Count)) +
geom_line(col = "darkgreen", size = 1.2) +
geom_emoji(emoji = "1f996") +
geom_emoji(data = dino_df %>% filter(Year == 247), emoji = "1f95a") +
geom_emoji(data = dino_df %>% filter(Year == 62), emoji = "1f525") +
scale_x_reverse() +
transition_reveal(rev(Year)) +
labs(title = "Number of dinosaur species over time", subtitle = " ",
x = "Age in millions of years (Ma)", y = "Species count", caption = "Data source: \nPaleobiology Database") +
theme_minimal() + dino_theme
# Save GIF
anim_save("dino_timeline.gif", dino_timeline)
dino_timeline
