# Tests for scales # # Author: mjskay ############################################################################### library(dplyr) library(tidyr) test_that("direct scale setting works", { skip_if_no_vdiffr() vdiffr::expect_doppelganger("direct scale setting", tibble(dist = "norm", mean = 1, sd = 2) %>% ggplot(aes(y = "", dist = dist, arg1 = mean, arg2 = sd)) + stat_dist_halfeye( n = 20, shape = 21, # this point shape has a fill and outline point_color = "red", point_fill = "black", point_alpha = .1, point_size = 6, stroke = 2, interval_color = "blue", # interval sizes are scaled from [1, 6] onto [0.6, 1.4] by default # see the interval_size_range option in help("geom_slabinterval") interval_size = 8, interval_linetype = "dashed", interval_alpha = .25, # fill sets the fill color of the slab (here the density) slab_color = "green", slab_fill = "purple", slab_linewidth = 3, slab_linetype = "dotted", slab_alpha = .5 ) ) }) test_that("mapping custom aesthetics works", { skip_if_no_vdiffr() df = tibble( datatype = "slab", x = c("a", "b", "c"), x_num = c(1, 2, 3), y = list(c(-0.75, -0.25)), f = .1 ) %>% unnest(y) %>% bind_rows(tibble( datatype = "interval", x = c("a", "b", "c"), x_num = c(1, 2, 3), y = 0 )) p = df %>% ggplot(aes(x = x, y = y, datatype = datatype, ymin = -1, ymax = 1, thickness = f)) # POINT vdiffr::expect_doppelganger("point_color discrete mapping", p + geom_slabinterval(aes(point_color = x), normalize = "none", point_size = 5, shape = 21, stroke = 2) ) vdiffr::expect_doppelganger("point_color continuous mapping", p + geom_slabinterval(aes(point_color = x_num), normalize = "none", point_size = 5, shape = 21, stroke = 2) ) vdiffr::expect_doppelganger("point_fill discrete mapping", p + geom_slabinterval(aes(point_fill = x), normalize = "none", point_size = 5, shape = 21, stroke = 2) ) vdiffr::expect_doppelganger("point_fill continuous mapping", p + geom_slabinterval(aes(point_fill = x_num), normalize = "none", point_size = 5, shape = 21, stroke = 2) ) vdiffr::expect_doppelganger("point_alpha discrete mapping", p + geom_slabinterval(aes(point_alpha = x), normalize = "none", point_size = 5, shape = 21, stroke = 2) ) vdiffr::expect_doppelganger("point_alpha continuous mapping", p + geom_slabinterval(aes(point_alpha = x_num), normalize = "none", point_size = 5, shape = 21, stroke = 2) ) vdiffr::expect_doppelganger("point_size discrete mapping", p + geom_slabinterval(aes(point_size = x), normalize = "none", shape = 21, stroke = 2) ) vdiffr::expect_doppelganger("point_size continuous mapping", p + geom_slabinterval(aes(point_size = x_num), normalize = "none", shape = 21, stroke = 2) ) # INTERVAL vdiffr::expect_doppelganger("interval_color discrete mapping", p + geom_slabinterval(aes(interval_color = x), normalize = "none") ) vdiffr::expect_doppelganger("interval_color continuous mapping", p + geom_slabinterval(aes(interval_color = x_num), normalize = "none") ) vdiffr::expect_doppelganger("interval_alpha discrete mapping", p + geom_slabinterval(aes(interval_alpha = x), normalize = "none") ) vdiffr::expect_doppelganger("interval_alpha continuous mapping", p + geom_slabinterval(aes(interval_alpha = x_num), normalize = "none") ) vdiffr::expect_doppelganger("interval_size discrete mapping", p + geom_slabinterval(aes(interval_size = x), normalize = "none") ) vdiffr::expect_doppelganger("interval_size continuous mapping", p + geom_slabinterval(aes(interval_size = x_num), normalize = "none") ) vdiffr::expect_doppelganger("interval_linetype discrete mapping", p + geom_slabinterval(aes(interval_linetype = x), normalize = "none") ) expect_error( ggplot_build(p + geom_slabinterval(aes(interval_linetype = x_num), normalize = "none")), "A continuous variable cannot be mapped to linetype" ) # SLAB vdiffr::expect_doppelganger("slab_color discrete mapping", p + geom_slabinterval(aes(slab_color = x), normalize = "none") ) vdiffr::expect_doppelganger("slab_color continuous mapping", p + geom_slabinterval(aes(slab_color = x_num), normalize = "none") ) vdiffr::expect_doppelganger("slab_fill discrete mapping", p + geom_slabinterval(aes(slab_fill = x), normalize = "none") ) vdiffr::expect_doppelganger("slab_fill continuous mapping", p + geom_slabinterval(aes(slab_fill = x_num), normalize = "none") ) vdiffr::expect_doppelganger("slab_alpha discrete mapping", p + geom_slabinterval(aes(slab_alpha = x), normalize = "none") ) vdiffr::expect_doppelganger("slab_alpha continuous mapping", p + geom_slabinterval(aes(slab_alpha = x_num), normalize = "none") ) vdiffr::expect_doppelganger("slab_size discrete mapping", p + geom_slabinterval(aes(slab_size = x), normalize = "none", slab_color = "black") ) vdiffr::expect_doppelganger("slab_size continuous mapping", p + geom_slabinterval(aes(slab_size = x_num), normalize = "none", slab_color = "black") ) vdiffr::expect_doppelganger("slab_linewidth discrete mapping", p + geom_slabinterval(aes(slab_linewidth = x), normalize = "none", slab_color = "black") ) vdiffr::expect_doppelganger("slab_linewidth continuous mapping", p + geom_slabinterval(aes(slab_linewidth = x_num), normalize = "none", slab_color = "black") ) vdiffr::expect_doppelganger("slab_linetype discrete mapping", p + geom_slabinterval(aes(slab_linetype = x), normalize = "none", slab_color = "black") ) expect_error( ggplot_build( p + geom_slabinterval( aes(slab_linetype = x_num), normalize = "none", size = 10, shape = 21, stroke = 2 ) ), "A continuous variable cannot be mapped to linetype" ) vdiffr::expect_doppelganger("slab_linetype plus slab_color mapping", p + geom_slabinterval(aes(slab_color = x == "a", slab_linetype = x), normalize = "none") ) # DOTS p = tibble(x = qnorm(ppoints(20)), y = "a") %>% rbind(tibble(x = qnorm(ppoints(20), 3, 2), y = "b")) %>% ggplot(aes(x = x, y = y, group = NA)) vdiffr::expect_doppelganger("dots: slab_color plus slab_shape mapping", p + geom_dots(aes(slab_color = x > 1.9, slab_shape = x > 1.9), orientation = "horizontal") ) expect_error( ggplot_build(p + geom_dots(aes(slab_color = x > 1.9, slab_shape = x), orientation = "horizontal")), "A continuous variable cannot be mapped to shape" ) })