Nothing
test_that("north arrow drawing works", {
skip_if_not_installed("vdiffr")
load_longlake_data(which = "longlake_waterdf")
expect_doppelganger(
"north arrow default (cartesian)",
ggplot() +
ggplot2::geom_point(aes(x, y), data = data.frame(x = 0:4, y = -(0:4))) +
annotation_north_arrow()
)
expect_doppelganger(
"north arrow default (sf)",
ggplot() +
geom_sf(data = longlake_waterdf) +
annotation_north_arrow()
)
})
test_that("north arrow math is correct", {
# -63 longitude is the centre of the UTM 20 timezone
crs_points <- sf::st_sfc(
sf::st_point(c(-63, 45)),
sf::st_point(c(-63, 60)),
sf::st_point(c(-63, 80)),
sf::st_point(c(-66, 45)),
sf::st_point(c(-66, 60)),
sf::st_point(c(-66, 80)),
sf::st_point(c(-60, 45)),
sf::st_point(c(-60, 60)),
sf::st_point(c(-60, 80)),
crs = 4326
) %>%
sf::st_transform(32620) %>%
sf::st_coordinates() %>%
as.data.frame()
crs_points$north_angle <- mapply(true_north, crs_points$X, crs_points$Y, crs = 32620)
expect_true(all(abs(crs_points$north_angle[c(1, 2, 3)]) < 1e-1))
expect_true(all(crs_points$north_angle[c(4, 5, 6)] > 0))
expect_true(
abs(sum(crs_points$north_angle[c(4, 5, 6)], crs_points$north_angle[c(7, 8, 9)])) < 1e-1)
})
test_that("true north arrow points in the right direction", {
skip_if_not_installed("vdiffr")
load_longlake_data(which = "longlake_waterdf")
expect_doppelganger(
"north arrows (grid north)",
ggplot() +
geom_sf(data = longlake_waterdf) +
annotation_north_arrow(location = "tl", which_north = "grid") +
annotation_north_arrow(location = "tr", which_north = "grid") +
annotation_north_arrow(location = "bl", which_north = "grid") +
annotation_north_arrow(location = "br", which_north = "grid") +
coord_sf(crs = 26922) # utm zone 22...has some angle to it
)
expect_doppelganger(
"north arrows (true north)",
ggplot() +
geom_sf(data = longlake_waterdf) +
annotation_north_arrow(location = "tl", which_north = "true") +
annotation_north_arrow(location = "tr", which_north = "true") +
annotation_north_arrow(location = "bl", which_north = "true") +
annotation_north_arrow(location = "br", which_north = "true") +
coord_sf(crs = 26922) # utm zone 22...has some angle to it
)
expect_doppelganger(
"north arrows (true north, global)",
ggplot() +
geom_spatial_point(
mapping = aes(x, y),
data = data.frame(x = c(-63.58595, 116.41214), y = c(44.64862, 40.19063), city = c("Halifax", "Beijing")),
crs = 4326
) +
annotation_north_arrow(location = "tl", which_north = "true") +
annotation_north_arrow(location = "tr", which_north = "true") +
annotation_north_arrow(location = "bl", which_north = "true") +
annotation_north_arrow(location = "br", which_north = "true") +
coord_sf(crs = 3995)
)
})
test_that("all built-in styles of north arrow rotate properly", {
skip_if_not_installed("vdiffr")
p <- ggplot() +
geom_spatial_point(
mapping = aes(x, y),
data = data.frame(x = c(-63.58595, 116.41214), y = c(44.64862, 40.19063), city = c("Halifax", "Beijing")),
crs = 4326
) +
coord_sf(crs = 3995)
expect_doppelganger(
"north arrows (styles as functions)",
p +
annotation_north_arrow(location = "tl", which_north = "true", style = north_arrow_orienteering) +
annotation_north_arrow(location = "tr", which_north = "true", style = north_arrow_fancy_orienteering) +
annotation_north_arrow(location = "bl", which_north = "true", style = north_arrow_minimal) +
annotation_north_arrow(location = "br", which_north = "true", style = north_arrow_nautical)
)
expect_doppelganger(
"north arrows (styles as calls)",
p +
annotation_north_arrow(location = "tl", which_north = "true", style = north_arrow_orienteering()) +
annotation_north_arrow(location = "tr", which_north = "true", style = north_arrow_fancy_orienteering()) +
annotation_north_arrow(location = "bl", which_north = "true", style = north_arrow_minimal()) +
annotation_north_arrow(location = "br", which_north = "true", style = north_arrow_nautical())
)
expect_doppelganger(
"north arrows (styles, grid north)",
p +
annotation_north_arrow(location = "tl", which_north = "grid", style = north_arrow_orienteering) +
annotation_north_arrow(location = "tr", which_north = "grid", style = north_arrow_fancy_orienteering) +
annotation_north_arrow(location = "bl", which_north = "grid", style = north_arrow_minimal) +
annotation_north_arrow(location = "br", which_north = "grid", style = north_arrow_nautical)
)
})
test_that("colour on north arrows is propogated through for all north arrow styles", {
skip_if_not_installed("vdiffr")
p <- ggplot() +
geom_spatial_point(
mapping = aes(x, y),
data = data.frame(x = c(-63.58595, 116.41214), y = c(44.64862, 40.19063), city = c("Halifax", "Beijing")),
crs = 4326
) +
coord_sf(crs = 3995)
expect_doppelganger(
"north arrows (text colours)",
p +
annotation_north_arrow(location = "tl", style = north_arrow_orienteering(text_col = "purple")) +
annotation_north_arrow(location = "tr", style = north_arrow_fancy_orienteering(text_col = "blue")) +
annotation_north_arrow(location = "bl", style = north_arrow_minimal(text_col = "green")) +
annotation_north_arrow(location = "br", style = north_arrow_nautical(text_col = "red"))
)
})
test_that("certain parameters can be passed as aesthetics to show up on different panels", {
skip_if_not_installed("vdiffr")
load_longlake_data(which = "longlake_waterdf")
# note that passing NA in the label column makes this not work
arrow_params <- tibble::tibble(
label = c("Round Lake", "Long Lake"),
which_north = c("true", "grid"),
location = c("bl", "tr")
)
expect_doppelganger(
"north arrows (use of aesthetics)",
ggplot() +
layer_spatial(longlake_waterdf) +
annotation_north_arrow(
aes(which_north = which_north, location = location),
data = arrow_params
) +
ggplot2::facet_wrap(~label)
)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.