Nothing
# 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"
)
})
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.