## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set(collapse = TRUE, fig.width = 7, fig.height = 5, fig.align = "center") ## ----message = FALSE, warning = FALSE----------------------------------------- # Load deeptime library(deeptime) # Load other packages library(ggplot2) library(dplyr) # Load divDyn for coral data library(divDyn) data(corals) # Load gsloid for oxygen isotope data library(gsloid) ## ----message = FALSE---------------------------------------------------------- # this is not a proper diversity curve but it gets the point across coral_div <- corals %>% filter(stage != "") %>% group_by(period, stage) %>% summarise(n = n()) %>% mutate(stage_age = (stages$max_age[match(stage, stages$name)] + stages$min_age[match(stage, stages$name)]) / 2) ## ----------------------------------------------------------------------------- ggplot(coral_div) + geom_line(aes(x = stage_age, y = n)) + scale_x_reverse("Age (Ma)") + ylab("Coral Genera") + coord_geo(xlim = c(250, 0), ylim = c(0, 1700)) + theme_classic() ## ----eval = FALSE------------------------------------------------------------- # ggplot(lisiecki2005) + # geom_line(aes(x = d18O, y = Time / 1000), orientation = "y") + # scale_y_reverse("Time (Ma)") + # scale_x_reverse() + # coord_geo( # dat = "Geomagnetic Polarity Chron", xlim = c(6, 2), ylim = c(6, 0), # pos = "left", rot = 90 # ) + # theme_classic() ## ----eval = FALSE------------------------------------------------------------- # # uses the oxygen isotope data from above # ggplot(lisiecki2005) + # geom_line(aes(x = d18O, y = Time / 1000), orientation = "y") + # scale_y_reverse("Time (Ma)") + # scale_x_reverse() + # coord_geo( # dat = list("Geomagnetic Polarity Chron", "Planktic foraminiferal Primary Biozones"), # xlim = c(6, 2), ylim = c(5.5, 0), pos = list("l", "r"), # rot = 90, skip = "PL4", size = list(5, 4) # ) + # theme_classic() ## ----------------------------------------------------------------------------- # uses the coral diversity data from above ggplot(coral_div) + geom_line(aes(x = stage_age, y = n)) + scale_x_reverse("Age (Ma)") + ylab("Coral Genera") + coord_geo( dat = list("periods", "eras"), xlim = c(250, 0), ylim = c(0, 1700), pos = list("b", "b"), abbrv = list(TRUE, FALSE) ) + theme_classic() ## ----message = FALSE---------------------------------------------------------- # uses the coral occurrence data from above coral_div_diet <- corals %>% filter(stage != "") %>% group_by(diet, stage) %>% summarise(n = n()) %>% mutate(stage_age = (stages$max_age[match(stage, stages$name)] + stages$min_age[match(stage, stages$name)]) / 2) ggplot(coral_div_diet) + geom_line(aes(x = stage_age, y = n)) + scale_x_reverse("Age (Ma)") + ylab("Coral Genera") + coord_geo(xlim = c(250, 0)) + theme_classic() + facet_wrap(~diet, nrow = 3) ## ----message = FALSE---------------------------------------------------------- ggplot(coral_div_diet) + geom_line(aes(x = stage_age, y = n)) + scale_x_reverse("Age (Ma)") + ylab("Coral Genera") + coord_geo(xlim = c(250, 0)) + theme_classic() + facet_wrap(~diet, nrow = 3, scales = "free_x") ## ----------------------------------------------------------------------------- ggplot(coral_div) + geom_line(aes(x = stage_age, y = n)) + scale_x_reverse("Age (Ma)") + ylab("Coral Genera") + coord_geo( dat = "periods", xlim = c(250, 0), ylim = c(0, 1700), abbrv = FALSE, size = "auto", fittext_args = list(size = 20) ) + theme_classic() ## ----message = FALSE---------------------------------------------------------- # use the coral occurrence data from above coral_div_dis <- corals %>% filter(period != "") %>% group_by(diet, period) %>% summarise(n = n()) %>% mutate(period_age = (periods$max_age[match(period, periods$name)] + periods$min_age[match(period, periods$name)]) / 2) %>% arrange(-period_age) ggplot(coral_div_dis) + geom_col(aes(x = period, y = n, fill = diet)) + scale_x_discrete("Period", limits = unique(coral_div_dis$period), labels = NULL, expand = expansion(add = .5) ) + scale_y_continuous(expand = c(0, 0)) + scale_fill_viridis_d("Diet") + ylab("Coral Genera") + coord_geo(expand = TRUE, skip = NULL, abbrv = TRUE) + theme_classic() + theme(axis.ticks.length.x = unit(0, "lines")) ## ----------------------------------------------------------------------------- eras_custom <- data.frame( name = c("Mesozoic", "Cenozoic"), max_age = c(0.5, 3.5), min_age = c(3.5, 6.5), color = c("#67C5CA", "#F2F91D") ) ggplot(coral_div_dis) + geom_col(aes(x = period, y = n, fill = diet)) + scale_x_discrete(NULL, limits = unique(coral_div_dis$period), labels = NULL, expand = expansion(add = .5) ) + scale_y_continuous(expand = c(0, 0)) + scale_fill_viridis_d("Diet") + ylab("Coral Genera") + coord_geo( dat = list("periods", eras_custom), pos = c("b", "b"), expand = TRUE, skip = NULL, abbrv = list(TRUE, FALSE), dat_is_discrete = list(FALSE, TRUE) ) + theme_classic() + theme(axis.ticks.length.x = unit(0, "lines"))