# 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(get_labs(p)$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)) 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")) ) 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 ) } ggally_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." ) }) 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), bins = 10) expect_equal(mapping_string(p$mapping$x), "date") expect_equal(as.character(get_labs(p)$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(get_labs(p)$y == "density") ggally_expect_doppelganger("rescale-false", p) p <- ggally_densityDiag(tips, mapping = ggplot2::aes(x = day), rescale = TRUE) expect_true(!identical(get_labs(p)$y, "density")) ggally_expect_doppelganger("rescale-true", p) p <- ggally_barDiag( tips, mapping = ggplot2::aes(x = tip), binwidth = 0.25, rescale = FALSE ) expect_true(get_labs(p)$y == "count") ggally_expect_doppelganger("rescale-false-binwidth", p) p <- ggally_barDiag( tips, mapping = ggplot2::aes(x = tip), binwidth = 0.25, rescale = TRUE ) expect_true(!identical(get_labs(p)$y, "count")) ggally_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)) ggally_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)) ggally_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) ggally_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) ggally_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) ) ggally_expect_doppelganger("titanic-count", p) p <- ggally_count( as.data.frame(Titanic), ggplot2::aes(x = Class, y = Survived, weight = Freq), fill = "red" ) ggally_expect_doppelganger("titanic-count-red", p) p <- ggally_count( as.data.frame(Titanic), ggplot2::aes(x = Class, y = Survived, weight = Freq, fill = Sex) ) ggally_expect_doppelganger("titanic-count-sex", p) p <- ggally_count( as.data.frame(Titanic), ggplot2::aes(x = Class, y = Survived, weight = Freq, fill = Class) ) ggally_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 ) ) ggally_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) ) ggally_expect_doppelganger("titanic-count-toupper", p) # check countDiag p <- ggally_countDiag( as.data.frame(Titanic), ggplot2::aes(x = Survived, weight = Freq, fill = Class) ) ggally_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 ) ggally_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 ) ggally_expect_doppelganger("titanic-count-diag-interaction", p) }) test_that("deprecated ggally_cor variables are deprecated", { lifecycle::expect_deprecated( ggally_cor(tips, mapping = aes(total_bill, tip), use = "something") ) lifecycle::expect_deprecated( ggally_cor(tips, mapping = aes(total_bill, tip), alignPercent = 0.5) ) lifecycle::expect_deprecated( ggally_cor(tips, mapping = aes(total_bill, tip), displayGrid = FALSE) ) })