context("stat_ma_eq")
old.out.dec <- options(OutDec = ".")
on.exit(options(old.out.dec), add = TRUE, after = FALSE)
set.seed(4321)
# generate artificial data
my.data <- data.frame(x = (1:100) / 10 + rnorm(n = 100),
y = (1:100) / 5 + rnorm(n = 100))
if (isNamespaceLoaded(name = "package:ggpmisc")) detach(package:ggpmisc, unload = TRUE)
if (isNamespaceLoaded(name = "package:ggpp")) detach(package:ggpp, unload = TRUE)
if (isNamespaceLoaded(name = "package:ggplot2")) detach(package:ggplot2, unload = TRUE)
test_that("ma_eq_noload", {
vdiffr::expect_doppelganger("stat_ma_eq_noload",
ggplot2::ggplot(my.data, ggplot2::aes(x, y)) +
ggplot2::geom_point() +
ggpmisc::stat_ma_eq(formula = y ~ x, parse = TRUE,
mapping =
ggplot2::aes(label = paste(ggplot2::after_stat(eq.label),
ggplot2::after_stat(rr.label),
ggplot2::after_stat(p.value.label),
ggplot2::after_stat(n.label),
sep = "~~")))
)
vdiffr::expect_doppelganger("stat_ma_eq_noload_more",
ggplot2::ggplot(my.data, ggplot2::aes(x, y)) +
ggplot2::geom_point() +
ggpmisc::stat_ma_eq(formula = y ~ x, parse = TRUE,
mapping =
ggplot2::aes(label = paste(ggplot2::after_stat(rr.label),
ggplot2::after_stat(theta.label),
ggplot2::after_stat(method.label),
sep = "~~")))
)
vdiffr::expect_doppelganger("stat_ma_eq_noload_use_label",
ggplot2::ggplot(my.data, ggplot2::aes(x, y)) +
ggplot2::geom_point() +
ggpmisc::stat_ma_eq(formula = y ~ x, parse = TRUE,
mapping = use_label(c("eq", "R2", "P", "n"),
sep = "~~"))
)
vdiffr::expect_doppelganger("stat_ma_eq_noload_use_label_more",
ggplot2::ggplot(my.data, ggplot2::aes(x, y)) +
ggplot2::geom_point() +
ggpmisc::stat_ma_eq(formula = y ~ x, parse = TRUE,
mapping = use_label(c("R2", "theta", "method"),
sep = "~~"))
)
vdiffr::expect_doppelganger("stat_ma_eq_noload_use_label_small",
ggplot2::ggplot(my.data, ggplot2::aes(x, y)) +
ggplot2::geom_point() +
ggpmisc::stat_ma_eq(formula = y ~ x, parse = TRUE, small.r = TRUE, small.p = TRUE,
mapping = use_label(c("eq", "R2", "P", "n"),
sep = "~~"))
)
vdiffr::expect_doppelganger("stat_ma_eq_noload_use_label_more_small",
ggplot2::ggplot(my.data, ggplot2::aes(x, y)) +
ggplot2::geom_point() +
ggpmisc::stat_ma_eq(formula = y ~ x, parse = TRUE, small.r = TRUE, small.p =TRUE,
mapping = use_label(c("R2", "theta", "method"),
sep = "~~"))
)
})
library(ggpmisc)
# testthat does not "see" the messages and warnings, so these tests play no role
# test_that("number_of_rows_ma", {
# # message works but is not seen by the test
# expect_message(
# ggplot(my.data[1, ], aes(x, y)) +
# geom_point() +
# stat_ma_eq(formula = y ~ x, parse = TRUE,
# mapping =
# aes(label = paste(after_stat(eq.label),
# after_stat(rr.label),
# after_stat(p.value.label),
# after_stat(n.label),
# sep = "~~")))
# )
#
# expect_silent(
# ggplot(my.data[1:2, ], aes(x, y)) +
# geom_point() +
# stat_ma_eq(formula = y ~ x, parse = TRUE,
# mapping =
# aes(label = paste(after_stat(eq.label),
# after_stat(rr.label),
# after_stat(p.value.label),
# after_stat(n.label),
# sep = "~~")))
# )
#
# expect_silent(
# ggplot(my.data[1:3, ], aes(x, y)) +
# geom_point() +
# stat_ma_eq(formula = y ~ x, parse = TRUE,
# mapping =
# aes(label = paste(after_stat(eq.label),
# after_stat(rr.label),
# after_stat(p.value.label),
# after_stat(n.label),
# sep = "~~")))
# )
#
# expect_silent(
# ggplot(my.data[1:3, ], aes(x, y)) +
# geom_point() +
# stat_ma_eq(formula = y ~ x, parse = TRUE,
# mapping =
# aes(label = paste(after_stat(eq.label),
# after_stat(rr.label),
# after_stat(p.value.label),
# after_stat(n.label),
# sep = "~~")))
# )
#
# })
test_that("ma_formulas", {
vdiffr::expect_doppelganger("stat_ma_eq_formula_x",
ggplot(my.data, aes(x, y)) +
geom_point() +
stat_ma_eq(formula = y ~ x, parse = TRUE,
mapping =
aes(label = paste(after_stat(eq.label),
after_stat(rr.label),
after_stat(p.value.label),
after_stat(n.label),
sep = "~~")))
)
vdiffr::expect_doppelganger("stat_ma_eq_formula_x_Iy",
ggplot(my.data, aes(x, y)) +
geom_point() +
stat_ma_eq(formula = I(y) ~ x, parse = TRUE,
mapping =
aes(label = paste(after_stat(eq.label),
after_stat(rr.label),
after_stat(p.value.label),
after_stat(n.label),
sep = "~~")))
)
vdiffr::expect_doppelganger("stat_ma_eq_formula_x_I(x)",
ggplot(my.data, aes(x, y)) +
geom_point() +
stat_ma_eq(formula = y ~ I(x), parse = TRUE,
mapping =
aes(label = paste(after_stat(eq.label),
after_stat(rr.label),
after_stat(p.value.label),
after_stat(n.label),
sep = "~~")))
)
vdiffr::expect_doppelganger("stat_ma_eq_formula_poly1",
ggplot(my.data, aes(x, y)) +
geom_point() +
stat_ma_eq(formula = y ~ poly(x, 1, raw = TRUE),
parse = TRUE,
mapping =
aes(label = paste(after_stat(eq.label),
after_stat(rr.label),
after_stat(p.value.label),
after_stat(n.label),
sep = "~~")))
)
vdiffr::expect_doppelganger("stat_ma_eq_formula_y",
ggplot(my.data, aes(x, y)) +
geom_point() +
stat_ma_eq(formula = x ~ y,
parse = TRUE,
mapping =
aes(label = paste(after_stat(eq.label),
after_stat(rr.label),
after_stat(p.value.label),
after_stat(n.label),
sep = "~~")))
)
vdiffr::expect_doppelganger("stat_ma_eq_formula_y_Ix",
ggplot(my.data, aes(x, y)) +
geom_point() +
stat_ma_eq(formula = I(x) ~ y,
parse = TRUE,
mapping =
aes(label = paste(after_stat(eq.label),
after_stat(rr.label),
after_stat(p.value.label),
after_stat(n.label),
sep = "~~")))
)
vdiffr::expect_doppelganger("stat_ma_eq_formula_y_Iy",
ggplot(my.data, aes(x, y)) +
geom_point() +
stat_ma_eq(formula = x ~ I(y),
parse = TRUE,
mapping =
aes(label = paste(after_stat(eq.label),
after_stat(rr.label),
after_stat(p.value.label),
after_stat(n.label),
sep = "~~")))
)
})
test_that("ma_methods", {
vdiffr::expect_doppelganger("stat_ma_eq_ma",
ggplot(my.data, aes(x, y)) +
geom_point() +
stat_ma_eq(formula = y ~ x,
method = "MA",
parse = TRUE,
mapping =
aes(label = paste(after_stat(eq.label),
after_stat(rr.label),
after_stat(p.value.label),
after_stat(n.label),
sep = "~~")))
)
vdiffr::expect_doppelganger("stat_ma_eq_sma",
ggplot(my.data, aes(x, y)) +
geom_point() +
stat_ma_eq(formula = y ~ x,
method = "SMA",
parse = TRUE,
mapping =
aes(label = paste(after_stat(eq.label),
after_stat(rr.label),
after_stat(p.value.label),
after_stat(n.label),
sep = "~~")))
)
vdiffr::expect_doppelganger("stat_ma_eq_ols",
ggplot(my.data, aes(x, y)) +
geom_point() +
stat_ma_eq(formula = y ~ x,
method = "OLS",
parse = TRUE,
mapping =
aes(label = paste(after_stat(eq.label),
after_stat(rr.label),
after_stat(p.value.label),
after_stat(n.label),
sep = "~~")))
)
vdiffr::expect_doppelganger("stat_ma_eq_rma_int",
ggplot(my.data, aes(x, y)) +
geom_point() +
stat_ma_eq(formula = y ~ x,
method = "RMA",
range.y = "interval",
range.x = "interval",
parse = TRUE,
mapping =
aes(label = paste(after_stat(eq.label),
after_stat(rr.label),
after_stat(p.value.label),
after_stat(n.label),
sep = "~~")))
)
vdiffr::expect_doppelganger("stat_ma_eq_rma_rel",
ggplot(my.data, aes(x + 5, y + 20)) +
geom_point() +
stat_ma_eq(formula = y ~ x,
method = "RMA",
range.y = "relative",
range.x = "relative",
parse = TRUE,
mapping =
aes(label = paste(after_stat(eq.label),
after_stat(rr.label),
after_stat(p.value.label),
after_stat(n.label),
sep = "~~")))
)
vdiffr::expect_doppelganger("stat_ma_eq_fun_NA",
ggplot(my.data, aes(x + 5, y + 20)) +
geom_point() +
stat_ma_eq(formula = y ~ x,
method = function(...) {NA},
range.y = "relative",
range.x = "relative",
parse = TRUE,
mapping =
aes(label = paste(after_stat(eq.label),
after_stat(rr.label),
after_stat(p.value.label),
after_stat(n.label),
sep = "~~")))
)
vdiffr::expect_doppelganger("stat_ma_eq_fun_NULL",
ggplot(my.data, aes(x + 5, y + 20)) +
geom_point() +
stat_ma_eq(formula = y ~ x,
method = function(...) {NULL},
range.y = "relative",
range.x = "relative",
parse = TRUE,
mapping =
aes(label = paste(after_stat(eq.label),
after_stat(rr.label),
after_stat(p.value.label),
after_stat(n.label),
sep = "~~")))
)
vdiffr::expect_doppelganger("stat_ma_eq_fun_missing",
ggplot(my.data, aes(x + 5, y + 20)) +
geom_point() +
stat_ma_eq(formula = y ~ x,
method = function(...) {list()},
range.y = "relative",
range.x = "relative",
parse = TRUE,
mapping =
aes(label = paste(after_stat(eq.label),
after_stat(rr.label),
after_stat(p.value.label),
after_stat(n.label),
sep = "~~")))
)
})
test_that("rounding_signif", {
vdiffr::expect_doppelganger("stat_ma_eq_formula_x_round",
ggplot(my.data, aes(x, y)) +
geom_point() +
stat_ma_eq(formula = y ~ x,
parse = TRUE,
rr.digits = 3,
p.digits = 4,
coef.digits = 6,
mapping =
aes(label = paste(after_stat(eq.label),
after_stat(rr.label),
after_stat(p.value.label),
after_stat(n.label),
sep = "~~")))
)
vdiffr::expect_doppelganger("stat_ma_eq_formula_x_round_less",
ggplot(my.data, aes(x, y)) +
geom_point() +
stat_ma_eq(formula = y ~ x,
parse = TRUE,
rr.digits = 2,
p.digits = 2,
coef.digits = 3,
mapping =
aes(label = paste(after_stat(eq.label),
after_stat(rr.label),
after_stat(p.value.label),
after_stat(n.label),
sep = "~~")))
)
vdiffr::expect_doppelganger("stat_ma_eq_formula_x_round_Inf",
ggplot(my.data, aes(x, y)) +
geom_point() +
stat_ma_eq(formula = y ~ x,
parse = TRUE,
rr.digits = 2,
p.digits = Inf,
coef.digits = 3,
mapping =
aes(label = paste(after_stat(eq.label),
after_stat(rr.label),
after_stat(p.value.label),
after_stat(n.label),
sep = "~~")))
)
})
# Markdown ----------------------------------------------------------------
if (requireNamespace("ggtext", quietly = TRUE)) {
library(ggtext)
test_that("markdown_richtext", {
vdiffr::expect_doppelganger("stat_ma_eq_n1_markdown",
ggplot(my.data, aes(x, y)) +
geom_point() +
stat_ma_line() +
stat_ma_eq(mapping = use_label("eq", "n", "R2", "P", sep = ", "),
geom = "richtext",
hjust = 0, vjust = 1,
vstep = .1,
label.x = 0, label.y = 28)
)
vdiffr::expect_doppelganger("stat_ma_eq_n2_markdown",
ggplot(my.data, aes(x, y)) +
geom_point() +
stat_ma_line() +
stat_ma_eq(mapping = use_label("eq", "n", "R2", "P", sep = ", "),
colour = "red",
geom = "richtext",
hjust = 0, vjust = 1,
vstep = .1,
label.x = 0, label.y = 28)
)
vdiffr::expect_doppelganger("stat_ma_eq_n3_markdown",
ggplot(my.data, aes(x, y)) +
geom_point() +
stat_ma_line() +
stat_ma_eq(use_label("theta"),
geom = "richtext",
hjust = 0, vjust = 1,
vstep = .1,
label.x = 0, label.y = 28)
)
})
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.