# This file takes too long
testthat::skip_on_cran()
data(tips)
data(nasa)
nas <- subset(nasa, x <= 2 & y == 1)
test_that("denstrip", {
expect_message(
suppressWarnings(print(ggally_denstrip(tips, mapping = aes(!!as.name("sex"), !!as.name("tip"))))),
"`stat_bin()` using `bins = 30`",
fixed = TRUE
)
expect_message(
suppressWarnings(print(ggally_denstrip(tips, mapping = aes(!!as.name("tip"), !!as.name("sex"))))),
"`stat_bin()` using `bins = 30`",
fixed = TRUE
)
})
test_that("density", {
p <- ggally_density(
tips,
mapping = ggplot2::aes(x = !!as.name("total_bill"), y = !!as.name("tip"), fill = after_stat(level))
) + ggplot2::scale_fill_gradient(breaks = c(0.05, 0.1, 0.15, 0.2))
expect_equal(p$labels$fill, "level")
})
test_that("cor", {
ti <- tips
class(ti) <- c("NOTFOUND", "data.frame")
p <- ggally_cor(ti, ggplot2::aes(x = total_bill, y = tip, color = day), use = "complete.obs")
expect_equal(mapping_string(get("mapping", envir = p$layers[[2]])$colour), "labelp")
p <- ggally_cor(
ti,
ggplot2::aes(x = total_bill, y = tip, color = I("blue")),
use = "complete.obs"
)
expect_equal(mapping_string(get("mapping", envir = p$layers[[1]])$colour), "I(\"blue\")")
expect_err <- function(..., msg = NULL) {
expect_error(
ggally_cor(
ti, ggplot2::aes(x = total_bill, y = tip),
...
),
msg
)
}
vdiffr::expect_doppelganger(
"cor-green",
ggally_cor(ti, ggplot2::aes(x = total_bill, y = tip, color = I("green")))
)
ti3 <- ti2 <- ti
ti2[2, "total_bill"] <- NA
ti3[2, "total_bill"] <- NA
ti3[3, "tip"] <- NA
ti3[4, "total_bill"] <- NA
ti3[4, "tip"] <- NA
expect_warn <- function(data, msg) {
expect_warning(
ggally_cor(data, ggplot2::aes(x = total_bill, y = tip)),
msg
)
}
expect_warn(ti2, "Removing 1 row that")
expect_warn(ti3, "Removed 3 rows containing")
expect_error(
ggally_cor(
ti,
ggplot2::aes(x = total_bill, y = tip, color = size)
),
"must be categorical"
)
expect_silent(
ggally_cor(
ti,
ggplot2::aes(x = total_bill, y = tip, color = as.factor(size))
)
)
})
test_that("diagAxis", {
p <- ggally_diagAxis(iris, ggplot2::aes(x = Petal.Width))
pDat1 <- get("data", envir = p$layers[[2]])
attr(pDat1, "out.attrs") <- NULL
testDt1 <- data.frame(
xPos = c(0.076, 0.076, 0.076, 0.076, 0.076, 0.076, 0.500, 1.000, 1.500, 2.000, 2.500),
yPos = c(0.500, 1.000, 1.500, 2.000, 2.500, 0.076, 0.076, 0.076, 0.076, 0.076, 0.076),
lab = as.character(c(0.5, 1, 1.5, 2, 2.5, 0, 0.5, 1, 1.5, 2, 2.5)),
hjust = c(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.5, 0.5, 0.5),
vjust = c(0.5, 0.5, 0.5, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0),
stringsAsFactors = FALSE
)
rownames(testDt1) <- 2:12
expect_equal(pDat1, testDt1)
p <- ggally_diagAxis(iris, ggplot2::aes(x = Species))
pDat2 <- get("data", envir = p$layers[[2]])
attr(pDat2, "out.attrs") <- NULL
testDt2 <- data.frame(
x = c(0.125, 0.500, 0.875),
y = c(0.875, 0.500, 0.125),
lab = c("setosa", "versicolor", "virginica")
)
expect_equal(pDat2, testDt2)
expect_error(
{
ggally_diagAxis(iris, mapping = ggplot2::aes(y = Sepal.Length))
},
"mapping\\$x is null."
) # nolint
})
test_that("dates", {
class(nas) <- c("NOTFOUND", "data.frame")
p <- ggally_cor(nas, ggplot2::aes(x = date, y = ozone))
expect_equal(get("aes_params", envir = p$layers[[1]])$label, "Corr:\n0.278***")
p <- ggally_barDiag(nas, ggplot2::aes(x = date))
expect_equal(mapping_string(p$mapping$x), "date")
expect_equal(as.character(p$labels$y), "count")
})
test_that("cor stars are aligned", {
p <- ggally_cor(iris, ggplot2::aes(x = Sepal.Length, y = Petal.Width, color = as.factor(Species)))
expect_equal(get("aes_params", envir = p$layers[[1]])$label, "Corr: 0.818***")
# expect_equal(get("aes_params", envir = p$layers[[1]])$family, "mono")
labels <- eval_data_col(p$layers[[2]]$data, p$layers[[2]]$mapping$label)
expect_equal(as.character(labels), c(" setosa: 0.278. ", "versicolor: 0.546***", " virginica: 0.281* "))
})
test_that("ggally_statistic handles factors", {
simple_chisq <- function(x, y) {
scales::number(chisq.test(x, y)$p.value, accuracy = .001)
}
expect_silent({
p <- ggally_statistic(tips, aes(x = sex, y = day), text_fn = simple_chisq, title = "Chi^2")
})
})
test_that("rescale", {
p <- ggally_densityDiag(tips, mapping = ggplot2::aes(x = day), rescale = FALSE)
expect_true(p$labels$y == "density")
vdiffr::expect_doppelganger("rescale-false", p)
p <- ggally_densityDiag(tips, mapping = ggplot2::aes(x = day), rescale = TRUE)
expect_true(!identical(p$labels$y, "density"))
vdiffr::expect_doppelganger("rescale-true", p)
p <- ggally_barDiag(tips, mapping = ggplot2::aes(x = tip), binwidth = 0.25, rescale = FALSE)
expect_true(p$labels$y == "count")
vdiffr::expect_doppelganger("rescale-false-binwidth", p)
p <- ggally_barDiag(tips, mapping = ggplot2::aes(x = tip), binwidth = 0.25, rescale = TRUE)
expect_true(!identical(p$labels$y, "count"))
vdiffr::expect_doppelganger("rescale-true-binwidth", p)
})
test_that("shrink", {
p <- ggally_smooth_loess(iris, mapping = ggplot2::aes(Sepal.Width, Petal.Length))
expect_true(!is.null(p$coordinates$limits$y))
vdiffr::expect_doppelganger("shrink-true", p)
p <- ggally_smooth_loess(iris, mapping = ggplot2::aes(Sepal.Width, Petal.Length), shrink = FALSE)
expect_true(is.null(p$coordinates$limits$y))
vdiffr::expect_doppelganger("shrink-false", p)
})
test_that("smooth_se", {
p <- ggally_smooth_loess(iris, mapping = ggplot2::aes(Sepal.Width, Petal.Length), se = TRUE)
expect_equal(p$layers[[2]]$stat_params$se, TRUE)
vdiffr::expect_doppelganger("smooth-se-true", p)
p <- ggally_smooth_loess(iris, mapping = ggplot2::aes(Sepal.Width, Petal.Length), se = FALSE)
expect_equal(p$layers[[2]]$stat_params$se, FALSE)
vdiffr::expect_doppelganger("smooth-se-false", p)
})
test_that("ggally_count", {
p <- ggally_count(
as.data.frame(Titanic),
ggplot2::aes(x = Class, y = Survived, weight = Freq)
)
vdiffr::expect_doppelganger("titanic-count", p)
p <- ggally_count(
as.data.frame(Titanic),
ggplot2::aes(x = Class, y = Survived, weight = Freq),
fill = "red"
)
vdiffr::expect_doppelganger("titanic-count-red", p)
p <- ggally_count(
as.data.frame(Titanic),
ggplot2::aes(x = Class, y = Survived, weight = Freq, fill = Sex)
)
vdiffr::expect_doppelganger("titanic-count-sex", p)
p <- ggally_count(
as.data.frame(Titanic),
ggplot2::aes(x = Class, y = Survived, weight = Freq, fill = Class)
)
vdiffr::expect_doppelganger("titanic-count-class", p)
p <- ggally_count(
as.data.frame(Titanic),
ggplot2::aes(x = Survived, y = interaction(Sex, Age), weight = Freq, fill = Class)
)
vdiffr::expect_doppelganger("titanic-count-interaction", p)
# check that y character vectors are rendering
p <- ggally_count(
as.data.frame(Titanic),
ggplot2::aes(x = Class, y = toupper(Survived), weight = Freq, fill = Class)
)
vdiffr::expect_doppelganger("titanic-count-toupper", p)
# check countDiag
p <- ggally_countDiag(
as.data.frame(Titanic),
ggplot2::aes(x = Survived, weight = Freq, fill = Class)
)
vdiffr::expect_doppelganger("titanic-count-diag", p)
# change size of tiles
p <- ggally_count(
as.data.frame(Titanic),
ggplot2::aes(x = Class, y = Survived, weight = Freq, fill = Class),
x.width = .5
)
vdiffr::expect_doppelganger("titanic-count-diag-class", p)
# no warnings expected if na.rm = TRUE
p <- ggally_count(
as.data.frame(Titanic),
ggplot2::aes(x = interaction(Class, Age), y = Survived, weight = Freq, fill = Class),
na.rm = TRUE
)
vdiffr::expect_doppelganger("titanic-count-diag-interaction", p)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.