test_that("geom_spatraster several layer with CRS", {
suppressWarnings(library(ggplot2))
suppressWarnings(library(terra))
# Import also vector
f <- system.file("extdata/cyl_temp.tif", package = "tidyterra")
r_init <- rast(f)
# Create levels and coltabs
rf <- r_init %>%
mutate(
cut1 = cut(tavg_04, c(-Inf, 5, 7, 11, 15, Inf)),
cut2 = cut(tavg_05, c(-Inf, seq(2, 16, 2), Inf)),
cut3 = cut(tavg_06, c(-Inf, 5.6, 8.9, 14.2, Inf))
) %>%
select(cut1:cut3)
hlp_input_coltab <- function(r_f, lyr, pal, ...) {
rd <- r_f[[lyr]]
# Coltab
cls <- terra::cats(rd)[[1]]
ctb <- cls[, 1, drop = FALSE]
ctb$col <- pal(nrow(ctb), ...)
terra::coltab(rd) <- ctb
# Regenerate
r_f[[lyr]] <- rd
r_f
}
r <- hlp_input_coltab(rf, lyr = 1, pal = whitebox.colors)
r <- hlp_input_coltab(r, lyr = 2, pal = whitebox.colors, palette = "bl_yl_rd")
r <- hlp_input_coltab(r, lyr = 3, pal = hypso.colors, palette = "pakistan")
# test with vdiffr
skip_on_cran()
skip_if_not_installed("vdiffr")
# Regular plot
p <- ggplot() +
geom_spatraster(data = r)
expect_snapshot(pp <- ggplot2::ggplot_build(p))
vdiffr::expect_doppelganger("crs_01a: regular no facet", p)
# Add facets
p <- p + facet_wrap(~lyr)
expect_silent(ggplot2::ggplot_build(p))
vdiffr::expect_doppelganger("crs_01b: regular facet", p)
p_aes <- ggplot() +
geom_spatraster(data = r, aes(fill = cut2)) +
facet_wrap(~lyr)
expect_silent(ggplot2::ggplot_build(p_aes))
vdiffr::expect_doppelganger("crs_02: w/aes", p_aes)
# Using a categorical
expect_snapshot(
p_cats <- ggplot() +
geom_spatraster(data = r) +
facet_wrap(~lyr) +
scale_fill_terrain_d()
)
vdiffr::expect_doppelganger("crs_03: categ w/scale disc", p_cats)
# Mixed cols
rnum <- terra::rast(r, nlyr = 1)
terra::values(rnum) <- 1
names(rnum) <- "num"
r_mix1 <- c(r, rnum)
expect_snapshot(
pmix1 <- ggplot() +
geom_spatraster(data = r_mix1) +
facet_wrap(~lyr)
)
vdiffr::expect_doppelganger("crs_04: Mixed with nums", pmix1)
# Resampling
expect_snapshot(
p_res <- ggplot() +
geom_spatraster(data = r, maxcell = 20) +
facet_wrap(~lyr)
)
vdiffr::expect_doppelganger("crs_05: resampled", p_res)
# With crs
p_rast_first <- ggplot() +
geom_spatraster(data = r) +
facet_wrap(~lyr)
vdiffr::expect_doppelganger(
"crs_06: change crs",
p_rast_first +
coord_sf(crs = "ESRI:102003")
)
# Mixing different types of factors
# Coltab first
rcfirst <- c(r[[1]], rf[[2]])
rcfirstplot <- ggplot() +
geom_spatraster(data = rcfirst) +
facet_wrap(~lyr)
vdiffr::expect_doppelganger("crs_07: Mix factors: coltab first", rcfirstplot)
rcsec <- c(rf[[1]], r[[2]])
rcsecplot <- ggplot() +
geom_spatraster(data = rcsec) +
facet_wrap(~lyr)
vdiffr::expect_doppelganger("crs_08: Mix factors: coltab second", rcsecplot)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.