## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.width = 7, fig.height = 7, dpi = 100, out.width = "95%" ) ## ----get_ready, results='hide', message=FALSE, warning=FALSE------------------ # Load packages library(nicheR) #library(terra) # Current directory getwd() # Define new directory #setwd("YOUR/DIRECTORY") # modify if setting a new directory # Saving original plotting parameters original_par <- par(no.readonly = TRUE) ## ----data--------------------------------------------------------------------- # Load raster layers bios <- terra::rast(system.file("extdata", "ma_bios.tif", package = "nicheR")) ## ----data_prep---------------------------------------------------------------- # Subset to the three variables used in this vignette bios <- bios[[c("bio_1", "bio_12", "bio_15")]] # Convert raster to data frame (retaining xy coordinates) bios_df <- as.data.frame(bios, xy = TRUE) # Quick look at each variable terra::plot(c(bios$bio_1, bios$bio_12, bios$bio_15), main = c("Bio 1 - Mean Annual Temperature", "Bio 12 - Annual Precipitation", "Bio 15 - Precipitation Seasonality")) ## ----build-------------------------------------------------------------------- # Define environmental ranges for the species range <- data.frame(bio_1 = c(20, 32), bio_12 = c(750, 4000)) # Build the ellipsoid ell <- build_ellipsoid(range = range) ## ----print-------------------------------------------------------------------- print(ell) ## ----plot_basic--------------------------------------------------------------- plot_ellipsoid(ell) ## ----plot_bg------------------------------------------------------------------ plot_ellipsoid(ell, background = bios_df, dim = c(1, 2)) ## ----plot_styled-------------------------------------------------------------- plot_ellipsoid(ell, background = bios_df, dim = c(1, 2), bg_sample = 5000, pch = ".", cex_bg = 1.5, col_bg = "gray50", lwd = 2, fixed_lims = list(xlim = c(5, 32), ylim = c(200, 7500))) add_data(as.data.frame(t(ell$centroid)), x = "bio_1", y = "bio_12", pts_col = "red", cex = 1, pch = 18) ## ----cov_limits--------------------------------------------------------------- # Inspect the allowable covariance range ell$cov_limits ## ----update_cov--------------------------------------------------------------- # Apply a positive covariance between bio_1 and bio_12 ell2 <- update_ellipsoid_covariance(ell, c("bio_1-bio_12" = 750)) ell2 ## ----update_cov_fail, error = TRUE-------------------------------------------- try({ ell2 <- update_ellipsoid_covariance(ell, c("bio_1-bio_12" = 10000)) }) ## ----plot_cov----------------------------------------------------------------- plot_ellipsoid(ell, background = bios_df, dim = c(1, 2), bg_sample = 5000, pch = ".", cex_bg = 1.5, col_bg = "gray50", lwd = 3, col_ell = "purple", lty = 6, fixed_lims = list(xlim = c(14, 32), ylim = c(200, 5000))) nicheR::add_data(as.data.frame(t(ell$centroid)), x = "bio_1", y = "bio_12", pts_col = "purple", cex = 1, pch = 18) add_ellipsoid(ell2, lwd = 3, col_ell = "forestgreen", lty = 6) nicheR::add_data(as.data.frame(t(ell2$centroid)), x = "bio_1", y = "bio_12", pts_col = "forestgreen", cex = 1, pch = 18) ## ----build_sp2---------------------------------------------------------------- range <- data.frame(bio_1 = c(12, 24), bio_12 = c(1400, 4500)) ell3 <- build_ellipsoid(range = range) ell3$cov_limits ell3 <- update_ellipsoid_covariance(ell3, c("bio_1-bio_12" = 500)) ## ----plot_sp2----------------------------------------------------------------- plot_ellipsoid(ell2, background = bios_df, dim = c(1, 2), bg_sample = 5000, pch = ".", cex_bg = 1.5, col_bg = "gray50", lwd = 3, col_ell = "forestgreen", lty = 6, fixed_lims = list(xlim = c(6, 32), ylim = c(200, 5000))) add_data(as.data.frame(t(ell2$centroid)), x = "bio_1", y = "bio_12", pts_col = "forestgreen", cex = 2, pch = 18) add_ellipsoid(ell3, lwd = 3, col_ell = "brown", lty = 6) add_data(as.data.frame(t(ell3$centroid)), x = "bio_1", y = "bio_12", pts_col = "brown", cex = 2, pch = 18) ## ----build_sp3---------------------------------------------------------------- range <- data.frame(bio_1 = c(18, 30), bio_12 = c(200, 1100)) ell4 <- build_ellipsoid(range = range) ell4$cov_limits ell4 <- update_ellipsoid_covariance(ell4, c("bio_1-bio_12" = 120)) ## ----plot_sp3----------------------------------------------------------------- plot_ellipsoid(ell2, background = bios_df, dim = c(1, 2), bg_sample = 5000, pch = ".", cex_bg = 1.5, col_bg = "gray50", lwd = 3, col_ell = "forestgreen", lty = 6, fixed_lims = list(xlim = c(6, 32), ylim = c(200, 5000))) add_data(as.data.frame(t(ell2$centroid)), x = "bio_1", y = "bio_12", pts_col = "forestgreen", cex = 2, pch = 18) add_ellipsoid(ell3, lwd = 3, col_ell = "brown", lty = 6) add_data(as.data.frame(t(ell3$centroid)), x = "bio_1", y = "bio_12", pts_col = "brown", cex = 2, pch = 18) add_ellipsoid(ell4, lwd = 3, col_ell = "orange", lty = 6) add_data(as.data.frame(t(ell4$centroid)), x = "bio_1", y = "bio_12", pts_col = "orange", cex = 2, pch = 18) ## ----save_2d------------------------------------------------------------------ # Save ellipsoid objects to a local directory temp_file1 <- file.path(tempdir(), "example_sp_1.rda") save_nicheR(ell2, file = temp_file1) temp_file2 <- file.path(tempdir(), "example_sp_2.rda") save_nicheR(ell3, file = temp_file2) temp_file3 <- file.path(tempdir(), "example_sp_3.rda") save_nicheR(ell4, file = temp_file3) ## ----read_2d------------------------------------------------------------------ # Import an ellipsoid object from a local directory data("example_sp_1", package = "nicheR") plot_ellipsoid(example_sp_1, background = bios_df, dim = c(1, 2), bg_sample = 5000, pch = ".", cex_bg = 1.5, col_bg = "gray50", lwd = 3, col_ell = "forestgreen", lty = 6, fixed_lims = list(xlim = c(6, 32), ylim = c(200, 5000))) add_data(as.data.frame(t(example_sp_1$centroid)), x = "bio_1", y = "bio_12", pts_col = "forestgreen", cex = 2, pch = 18) ## ----build_3d----------------------------------------------------------------- # Define ranges across three environmental variables range <- data.frame(bio_1 = c(22, 32), bio_12 = c(800, 4200), bio_15 = c(45, 115)) ell5 <- build_ellipsoid(range = range) ell5 ## ----cov_limits_3d------------------------------------------------------------ ell5$cov_limits ## ----update_cov_3d------------------------------------------------------------ ell5 <- update_ellipsoid_covariance(ell5, c("bio_1-bio_12" = 200, "bio_1-bio_15" = 0, "bio_12-bio_15" = -5000)) ## ----plot_3d------------------------------------------------------------------ plot_ellipsoid(ell5, background = bios_df, dim = c(1, 2), bg_sample = 5000, pch = ".", cex_bg = 1.5, col_bg = "gray50", lwd = 3, col_ell = "blue", lty = 6, fixed_lims = list(xlim = c(6, 32), ylim = c(200, 5000))) plot_ellipsoid(ell5, background = bios_df, dim = c(2, 3), bg_sample = 5000, pch = ".", cex_bg = 1.5, col_bg = "gray50", lwd = 3, col_ell = "blue", lty = 6, fixed_lims = list(xlim = c(200, 5000), ylim = c(20, 120))) plot_ellipsoid(ell5, background = bios_df, dim = c(1, 3), bg_sample = 5000, pch = ".", cex_bg = 1.5, col_bg = "gray50", lwd = 3, col_ell = "blue", lty = 6, fixed_lims = list(xlim = c(6, 32), ylim = c(20, 120))) ## ----plot_pairs--------------------------------------------------------------- plot_ellipsoid_pairs(ell5, background = bios_df, pch = ".", cex_bg = 1.5, col_bg = "gray50", lwd = 3, lty = 6, col_ell = "blue") ## ----par_reset---------------------------------------------------------------- # Reset plotting parameters par(original_par) ## ----save_3d------------------------------------------------------------------ temp_file4 <- file.path(tempdir(), "example_sp_4.rda") save_nicheR(ell5, file = temp_file4)