From 55d8c27c5e383bbdd2e76b491ed90adf69ff748f Mon Sep 17 00:00:00 2001 From: JTPetter Date: Fri, 24 Apr 2026 16:54:42 +0200 Subject: [PATCH 1/6] DoE emmeans plots sketch --- DESCRIPTION | 1 + R/doeAnalysis.R | 250 +++++++++++++++++++++++++++++++++++++++ inst/qml/doeAnalysis.qml | 45 +++++++ renv.lock | 82 +++++++++++++ 4 files changed, 378 insertions(+) diff --git a/DESCRIPTION b/DESCRIPTION index 2f5769a5..02fbea40 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -23,6 +23,7 @@ Imports: ggrepel, goftest, ggpp, + emmeans, irr, jaspBase, jaspDescriptives, diff --git a/R/doeAnalysis.R b/R/doeAnalysis.R index bc4cd1f7..70604846 100644 --- a/R/doeAnalysis.R +++ b/R/doeAnalysis.R @@ -126,6 +126,8 @@ doeAnalysis <- function(jaspResults, dataset, options, ...) { .doeAnalysisStepwiseTable(jaspResults, dependent, options, ready, coded, stepwiseMethod) .doeAnalysisPlotPareto(jaspResults, dependent, options, blocks, covariates, ready) .doeAnalysisPlotEffectNormalDistribution(jaspResults, dependent, options, blocks, covariates, ready) + .doeAnalysisPlotMainEffects(jaspResults, dependent, options, ready) + .doeAnalysisPlotInteractionEffects(jaspResults, dependent, options, ready) .doeAnalysisPlotQQResiduals(jaspResults, dependent, options, ready) .doeAnalysisPlotHistResiduals(jaspResults, dependent, options, ready) .doeAnalysisPlotFittedVsResiduals(jaspResults, dependent, options, ready) @@ -1914,6 +1916,254 @@ get_levels <- function(var, num_levels, dataset) { } } +.doeAnalysisPlotFactorCandidates <- function(options, model = NULL) { + # Collect candidate factors from the active design mode. + if (options[["designType"]] == "factorialDesign") { + factors <- c(unlist(options[["fixedFactorsFactorial"]]), unlist(options[["continuousFactorsFactorial"]])) + } else { + factors <- c(unlist(options[["fixedFactorsResponseSurface"]]), unlist(options[["continuousFactorsResponseSurface"]])) + } + + factors <- factors[factors != ""] + factors <- unique(factors) + + if (!is.null(model)) { + modelVars <- colnames(model$model) + responseVars <- all.vars(stats::formula(model)[[2]]) + predictorVars <- setdiff(modelVars, responseVars) + factors <- factors[factors %in% predictorVars] + + # Fallback for encoded/renamed predictor columns in the model frame. + if (length(factors) == 0) { + factors <- predictorVars + } + } + + return(factors) +} + +.doeAnalysisEmmeansByTerms <- function(model, termNames, level, includeCi = TRUE) { + # Use emmeans on the already fitted model; never refit here. + + specs <- if (length(termNames) == 1) { + as.formula(paste0("~", termNames)) + } else { + as.formula(paste0("~", termNames[1], "*", termNames[2])) + } + + if (includeCi) { + emm <- emmeans::emmeans(model, specs = specs, level = level) + return(as.data.frame(emm)) + } + + emm <- emmeans::emmeans(model, specs = specs) + return(as.data.frame(emm, infer = c(FALSE, FALSE))) +} + +.doeAnalysisNormalizeCiLevel <- function(level) { + if (is.null(level) || !is.finite(level)) { + return(0.95) + } + + if (level > 1) { + return(level / 100) + } + + return(level) +} + +.doeAnalysisPlotMainEffects <- function(jaspResults, dependent, options, ready) { + if (!options[["mainEffectsPlot"]] || !is.null(jaspResults[["mainEffectsPlot"]])) { + return() + } + + container <- createJaspContainer(title = gettext("Main Effects Plots")) + container$dependOn(options = c("mainEffectsPlot", "mainEffectsPlotCi", "mainEffectsPlotCiLevel", .doeAnalysisBaseDependencies())) + container$position <- 12 + jaspResults[["mainEffectsPlot"]] <- container + + includeCi <- isTRUE(options[["mainEffectsPlotCi"]]) + ciLevel <- .doeAnalysisNormalizeCiLevel(options[["mainEffectsPlotCiLevel"]]) + + # Create one child container/plot per dependent outcome. + for (depIdx in seq_along(dependent)) { + dep <- dependent[[depIdx]] + + depContainer <- createJaspContainer(title = dep) + depContainer$position <- depIdx + container[[dep]] <- depContainer + + if (!ready || is.null(jaspResults[[dep]][["doeResult"]]) || jaspResults[[dep]]$getError()) { + return() + } + + result <- jaspResults[[dep]][["doeResult"]]$object[["regression"]] + model <- result[["object"]] + factors <- .doeAnalysisPlotFactorCandidates(options, model) + + # Build one plot per factor inside the dependent-variable container. + plotCount <- 0 + emmErrors <- character(0) + for (factorName in factors) { + if (!factorName %in% names(model$model)) { + next + } + + predictor <- model$model[[factorName]] + predictor <- predictor[!is.na(predictor)] + if (length(unique(predictor)) < 2) { + next + } + + emm <- try(.doeAnalysisEmmeansByTerms(model, factorName, ciLevel, includeCi = includeCi)) + if (isTryError(emm)) { + emmErrors <- c(emmErrors, .extractErrorMessage(emm)) + next + } + + if (!factorName %in% names(emm)) { + emmErrors <- c(emmErrors, gettextf("Estimated means output did not contain factor '%s'.", factorName)) + next + } + + emm[["x"]] <- as.character(emm[[factorName]]) + factorPlot <- createJaspPlot(title = gettextf("Main Effect: %s", factorName), width = 500, height = 500) + p <- ggplot2::ggplot(emm, ggplot2::aes(x = x, y = emmean, group = 1)) + + ggplot2::geom_line(color = "black", linewidth = 0.9) + + ggplot2::geom_point(color = "black", fill = "black", shape = 21, size = 3.2, stroke = 0.2) + + ggplot2::scale_x_discrete(name = factorName) + + ggplot2::scale_y_continuous(name = dep) + + jaspGraphs::geom_rangeframe() + + jaspGraphs::themeJaspRaw() + + if (includeCi && all(c("lower.CL", "upper.CL") %in% names(emm))) { + p <- p + ggplot2::geom_errorbar(ggplot2::aes(ymin = lower.CL, ymax = upper.CL), width = 0.12, linewidth = 0.6) + } + + factorPlot$plotObject <- p + factorPlotKey <- gsub("[^[:alnum:]_]", "_", paste0("mainEffect_", factorName)) + depContainer[[factorPlotKey]] <- factorPlot + plotCount <- plotCount + 1 + } + + if (plotCount == 0) { + errorPlot <- createJaspPlot(title = gettextf("Main Effects Plot: %s", dep), width = 900, height = 500) + if (length(emmErrors) > 0) { + errorPlot$setError(gettextf("Failed to compute main effects plot: %s", emmErrors[[1]])) + } else { + errorPlot$setError(gettext("Main effects plot requires at least one factor with two or more levels.")) + } + depContainer[["plot"]] <- errorPlot + } + } +} + +.doeAnalysisPlotInteractionEffects <- function(jaspResults, dependent, options, ready) { + if (!options[["interactionPlot"]] || !is.null(jaspResults[["interactionPlot"]])) { + return() + } + + container <- createJaspContainer(title = gettext("Interaction Plots")) + container$dependOn(options = c("interactionPlot", "interactionPlotCi", "interactionPlotCiLevel", .doeAnalysisBaseDependencies())) + container$position <- 13 + jaspResults[["interactionPlot"]] <- container + + includeCi <- isTRUE(options[["interactionPlotCi"]]) + ciLevel <- .doeAnalysisNormalizeCiLevel(options[["interactionPlotCiLevel"]]) + + # Create one child container/plot per dependent outcome. + for (depIdx in seq_along(dependent)) { + dep <- dependent[[depIdx]] + + depContainer <- createJaspContainer(title = dep) + depContainer$position <- depIdx + container[[dep]] <- depContainer + + if (!ready || is.null(jaspResults[[dep]][["doeResult"]]) || jaspResults[[dep]]$getError()) { + return() + } + + result <- jaspResults[[dep]][["doeResult"]]$object[["regression"]] + model <- result[["object"]] + factors <- .doeAnalysisPlotFactorCandidates(options, model) + # Pairwise interactions for all available factors. + factorPairs <- if (length(factors) > 1) utils::combn(factors, 2, simplify = FALSE) else list() + + if (length(factorPairs) == 0) { + errorPlot <- createJaspPlot(title = gettextf("Interaction Plot: %s", dep), width = 1000, height = 600) + errorPlot$setError(gettext("Interaction plot requires at least two factors with two or more levels.")) + depContainer[["plot"]] <- errorPlot + next + } + + # Each pair contributes one separate interaction plot. + plotCount <- 0 + emmErrors <- character(0) + for (pair in factorPairs) { + factorA <- pair[[1]] + factorB <- pair[[2]] + + if (!all(c(factorA, factorB) %in% names(model$model))) { + next + } + + predictorA <- model$model[[factorA]] + predictorB <- model$model[[factorB]] + predictorA <- predictorA[!is.na(predictorA)] + predictorB <- predictorB[!is.na(predictorB)] + if (length(unique(predictorA)) < 2 || length(unique(predictorB)) < 2) { + next + } + + emm <- try(.doeAnalysisEmmeansByTerms(model, c(factorA, factorB), ciLevel, includeCi = includeCi)) + if (isTryError(emm)) { + emmErrors <- c(emmErrors, .extractErrorMessage(emm)) + next + } + + if (!all(c(factorA, factorB) %in% names(emm))) { + emmErrors <- c(emmErrors, gettextf("Estimated means output did not contain factors '%1$s' and '%2$s'.", factorA, factorB)) + next + } + + emm[["x"]] <- as.character(emm[[factorA]]) + emm[["trace"]] <- as.character(emm[[factorB]]) + + pairTitle <- gettextf("Interaction: %1$s x %2$s", factorA, factorB) + pairPlot <- createJaspPlot(title = pairTitle, width = 600, height = 500) + dodge <- ggplot2::position_dodge(width = 0.2) + p <- ggplot2::ggplot(emm, ggplot2::aes(x = x, y = emmean, color = trace, group = trace)) + + ggplot2::geom_line(linewidth = 0.95) + + ggplot2::geom_point(position = dodge, shape = 21, ggplot2::aes(fill = trace), size = 3.2, stroke = 0.2) + + ggplot2::scale_x_discrete(name = factorA) + + ggplot2::scale_y_continuous(name = dep) + + ggplot2::labs(color = factorB, fill = factorB) + + jaspGraphs::geom_rangeframe() + + jaspGraphs::themeJaspRaw() + + ggplot2::theme(legend.position = "right") + + if (includeCi && all(c("lower.CL", "upper.CL") %in% names(emm))) { + p <- p + ggplot2::geom_errorbar(ggplot2::aes(ymin = lower.CL, ymax = upper.CL), width = 0.12, linewidth = 0.6, position = dodge) + } + + pairPlot$plotObject <- p + pairPlotKey <- gsub("[^[:alnum:]_]", "_", paste0("interaction_", factorA, "_x_", factorB)) + depContainer[[pairPlotKey]] <- pairPlot + plotCount <- plotCount + 1 + } + + if (plotCount == 0) { + errorPlot <- createJaspPlot(title = gettextf("Interaction Plot: %s", dep), width = 1000, height = 600) + if (length(emmErrors) > 0) { + errorPlot$setError(gettextf("Failed to compute interaction plot: %s", emmErrors[[1]])) + } else { + errorPlot$setError(gettext("Interaction plot requires at least two factors with two or more levels.")) + } + depContainer[["plot"]] <- errorPlot + } + } +} + .doeAnalysisCheckErrors <- function(dataset, options, continuousPredictors, discretePredictors, blocks, covariates, dependent, ready) { if (!ready) { return() diff --git a/inst/qml/doeAnalysis.qml b/inst/qml/doeAnalysis.qml index c938e422..7482ed53 100644 --- a/inst/qml/doeAnalysis.qml +++ b/inst/qml/doeAnalysis.qml @@ -378,6 +378,51 @@ Form } } + Group + { + title: qsTr("Factorial Plots") + + CheckBox + { + name: "mainEffectsPlot" + label: qsTr("Main effect plots") + checked: true + + CheckBox + { + name: "mainEffectsPlotCi" + label: qsTr("Confidence interval") + checked: true + childrenOnSameRow: true + + CIField + { + name: "mainEffectsPlotCiLevel" + } + } + } + + CheckBox + { + name: "interactionPlot" + label: qsTr("Interaction plots") + checked: false + + CheckBox + { + name: "interactionPlotCi" + label: qsTr("Confidence interval") + checked: true + childrenOnSameRow: true + + CIField + { + name: "interactionPlotCiLevel" + } + } + } + } + Group { title: qsTr("Other Plots") diff --git a/renv.lock b/renv.lock index c5e1031f..34d1024d 100644 --- a/renv.lock +++ b/renv.lock @@ -2520,6 +2520,88 @@ "Author": "Robin K. S. Hankin [aut, cre] (ORCID: )", "Repository": "CRAN" }, + "emmeans": { + "Package": "emmeans", + "Version": "2.0.3", + "Source": "Repository", + "Type": "Package", + "Title": "Estimated Marginal Means, aka Least-Squares Means", + "Date": "2026-03-30", + "Authors@R": "c(person(\"Russell V.\", \"Lenth\", role = c(\"aut\", \"cph\"), email = \"russell-lenth@uiowa.edu\"), person(\"Julia\", \"Piaskowski\", role = c(\"cre\", \"aut\"), email = \"julia.piask@gmail.com\"), person(\"Balazs\", \"Banfai\", role = \"ctb\"), person(\"Ben\", \"Bolker\", role = \"ctb\"), person(\"Paul\", \"Buerkner\", role = \"ctb\"), person(\"Iago\", \"Giné-Vázquez\", role = \"ctb\"), person(\"Maxime\", \"Hervé\", role = \"ctb\"), person(\"Maarten\", \"Jung\", role = \"ctb\"), person(\"Jonathon\", \"Love\", role = \"ctb\"), person(\"Fernando\", \"Miguez\", role = \"ctb\"), person(\"Hannes\", \"Riebl\", role = \"ctb\"), person(\"Henrik\", \"Singmann\", role = \"ctb\"))", + "Maintainer": "Julia Piaskowski ", + "Depends": [ + "R (>= 4.1.0)" + ], + "Imports": [ + "estimability (>= 1.4.1)", + "graphics", + "methods", + "mvtnorm", + "numDeriv", + "rlang", + "stats", + "utils" + ], + "Suggests": [ + "bayesplot", + "bayestestR", + "biglm", + "brms", + "car", + "coda (>= 0.17)", + "compositions", + "ggplot2 (>= 4.0.0)", + "knitr", + "lattice", + "lme4", + "lmerTest (>= 2.0.32)", + "logspline", + "MASS", + "mediation", + "mgcv", + "multcomp", + "multcompView", + "MuMIn", + "nlme", + "ordinal (>= 2014.11-12)", + "pbkrtest (>= 0.4-1)", + "rmarkdown", + "robmixglm", + "rsm", + "sandwich", + "scales", + "splines", + "testthat", + "tibble", + "xtable (>= 1.8-2)" + ], + "Enhances": [ + "CARBayes", + "coxme", + "gee", + "geepack", + "MCMCglmm", + "MCMCpack", + "mice", + "nnet", + "pscl", + "rstanarm", + "sommer", + "survival" + ], + "URL": "https://rvlenth.github.io/emmeans/, https://github.com/rvlenth/emmeans/", + "BugReports": "https://github.com/rvlenth/emmeans/issues", + "LazyData": "yes", + "ByteCompile": "yes", + "Description": "Obtain estimated marginal means (EMMs) for many linear, generalized linear, and mixed models. Compute contrasts or linear functions of EMMs, trends, and comparisons of slopes. Plots and other displays. Least-squares means are discussed, and the term \"estimated marginal means\" is suggested, in Searle, Speed, and Milliken (1980) Population marginal means in the linear model: An alternative to least squares means, The American Statistician 34(4), 216-221 .", + "License": "GPL-2 | GPL-3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "VignetteBuilder": "knitr", + "NeedsCompilation": "no", + "Author": "Russell V. Lenth [aut, cph], Julia Piaskowski [cre, aut], Balazs Banfai [ctb], Ben Bolker [ctb], Paul Buerkner [ctb], Iago Giné-Vázquez [ctb], Maxime Hervé [ctb], Maarten Jung [ctb], Jonathon Love [ctb], Fernando Miguez [ctb], Hannes Riebl [ctb], Henrik Singmann [ctb]", + "Repository": "RSPM" + }, "estimability": { "Package": "estimability", "Version": "1.5.1", From 5a0de3ec80319b0eb1afed6b9862351fa22c6a60 Mon Sep 17 00:00:00 2001 From: JTPetter Date: Tue, 28 Apr 2026 16:59:48 +0200 Subject: [PATCH 2/6] factorial plots v2 and unit tests for what works already --- R/doeAnalysis.R | 312 +++++++++-------- inst/qml/doeAnalysis.qml | 2 +- ...{contour-plot54.svg => contour-plot56.svg} | 0 .../interaction-angle-x-vertical-55-05.svg | 82 +++++ .../interaction-ball-x-angle-55-06.svg | 86 +++++ .../interaction-ball-x-vertical-55-07.svg | 86 +++++ .../interaction-injpress-x-injtemp-54-05.svg | 82 +++++ .../interaction-injpress-x-injtemp-54-15.svg | 84 +++++ .../interaction-material-x-injpress-54-06.svg | 84 +++++ .../interaction-material-x-injpress-54-16.svg | 86 +++++ .../interaction-material-x-injtemp-54-07.svg | 84 +++++ .../interaction-material-x-injtemp-54-17.svg | 86 +++++ .../doeAnalysis/main-effect-angle-55-08.svg | 66 ++++ .../doeAnalysis/main-effect-ball-55-09.svg | 60 ++++ .../main-effect-injpress-54-08.svg | 62 ++++ .../main-effect-injpress-54-18.svg | 62 ++++ .../doeAnalysis/main-effect-injtemp-54-09.svg | 60 ++++ .../doeAnalysis/main-effect-injtemp-54-19.svg | 62 ++++ .../main-effect-material-54-10.svg | 60 ++++ .../main-effect-material-54-20.svg | 62 ++++ .../main-effect-vertical-55-10.svg | 64 ++++ tests/testthat/test-doeAnalysis.R | 322 +++++++++++++++++- 22 files changed, 1803 insertions(+), 151 deletions(-) rename tests/testthat/_snaps/doeAnalysis/{contour-plot54.svg => contour-plot56.svg} (100%) create mode 100644 tests/testthat/_snaps/doeAnalysis/interaction-angle-x-vertical-55-05.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/interaction-ball-x-angle-55-06.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/interaction-ball-x-vertical-55-07.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-05.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-15.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-06.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-16.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-07.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-17.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/main-effect-angle-55-08.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/main-effect-ball-55-09.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/main-effect-injpress-54-08.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/main-effect-injpress-54-18.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/main-effect-injtemp-54-09.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/main-effect-injtemp-54-19.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/main-effect-material-54-10.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/main-effect-material-54-20.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/main-effect-vertical-55-10.svg diff --git a/R/doeAnalysis.R b/R/doeAnalysis.R index 70604846..4cf28539 100644 --- a/R/doeAnalysis.R +++ b/R/doeAnalysis.R @@ -126,8 +126,7 @@ doeAnalysis <- function(jaspResults, dataset, options, ...) { .doeAnalysisStepwiseTable(jaspResults, dependent, options, ready, coded, stepwiseMethod) .doeAnalysisPlotPareto(jaspResults, dependent, options, blocks, covariates, ready) .doeAnalysisPlotEffectNormalDistribution(jaspResults, dependent, options, blocks, covariates, ready) - .doeAnalysisPlotMainEffects(jaspResults, dependent, options, ready) - .doeAnalysisPlotInteractionEffects(jaspResults, dependent, options, ready) + .doeAnalysisPlotFactorialPlots(jaspResults, dependent, options, ready) .doeAnalysisPlotQQResiduals(jaspResults, dependent, options, ready) .doeAnalysisPlotHistResiduals(jaspResults, dependent, options, ready) .doeAnalysisPlotFittedVsResiduals(jaspResults, dependent, options, ready) @@ -1972,20 +1971,19 @@ get_levels <- function(var, num_levels, dataset) { return(level) } -.doeAnalysisPlotMainEffects <- function(jaspResults, dependent, options, ready) { - if (!options[["mainEffectsPlot"]] || !is.null(jaspResults[["mainEffectsPlot"]])) { +.doeAnalysisPlotFactorialPlots <- function(jaspResults, dependent, options, ready) { + if ((!options[["mainEffectsPlot"]] && !options[["interactionPlot"]]) || !is.null(jaspResults[["factorialPlots"]])) { return() } - container <- createJaspContainer(title = gettext("Main Effects Plots")) - container$dependOn(options = c("mainEffectsPlot", "mainEffectsPlotCi", "mainEffectsPlotCiLevel", .doeAnalysisBaseDependencies())) + container <- createJaspContainer(title = gettext("Factorial Plots")) + container$dependOn(options = c("mainEffectsPlot", "mainEffectsPlotCi", "mainEffectsPlotCiLevel", + "interactionPlot", "interactionPlotCi", "interactionPlotCiLevel", + .doeAnalysisBaseDependencies())) container$position <- 12 - jaspResults[["mainEffectsPlot"]] <- container + jaspResults[["factorialPlots"]] <- container - includeCi <- isTRUE(options[["mainEffectsPlotCi"]]) - ciLevel <- .doeAnalysisNormalizeCiLevel(options[["mainEffectsPlotCiLevel"]]) - - # Create one child container/plot per dependent outcome. + # Create one child container per dependent outcome. for (depIdx in seq_along(dependent)) { dep <- dependent[[depIdx]] @@ -1994,173 +1992,193 @@ get_levels <- function(var, num_levels, dataset) { container[[dep]] <- depContainer if (!ready || is.null(jaspResults[[dep]][["doeResult"]]) || jaspResults[[dep]]$getError()) { - return() + next } - result <- jaspResults[[dep]][["doeResult"]]$object[["regression"]] - model <- result[["object"]] - factors <- .doeAnalysisPlotFactorCandidates(options, model) - - # Build one plot per factor inside the dependent-variable container. - plotCount <- 0 - emmErrors <- character(0) - for (factorName in factors) { - if (!factorName %in% names(model$model)) { - next - } + if (options[["mainEffectsPlot"]]) { + .doeAnalysisPlotMainEffectsSubplots(depContainer, dep, options, jaspResults, ready) + } - predictor <- model$model[[factorName]] - predictor <- predictor[!is.na(predictor)] - if (length(unique(predictor)) < 2) { - next - } + if (options[["interactionPlot"]]) { + .doeAnalysisPlotInteractionEffectsSubplots(depContainer, dep, options, jaspResults, ready) + } + } +} - emm <- try(.doeAnalysisEmmeansByTerms(model, factorName, ciLevel, includeCi = includeCi)) - if (isTryError(emm)) { - emmErrors <- c(emmErrors, .extractErrorMessage(emm)) - next - } +.doeAnalysisPlotMainEffectsSubplots <- function(depContainer, dep, options, jaspResults, ready) { + mainEffectContainer <- createJaspContainer(title = gettext("Main Effects")) + mainEffectContainer$position <- 1 + depContainer[["mainEffect"]] <- mainEffectContainer - if (!factorName %in% names(emm)) { - emmErrors <- c(emmErrors, gettextf("Estimated means output did not contain factor '%s'.", factorName)) - next - } + includeCi <- isTRUE(options[["mainEffectsPlotCi"]]) + ciLevel <- .doeAnalysisNormalizeCiLevel(options[["mainEffectsPlotCiLevel"]]) - emm[["x"]] <- as.character(emm[[factorName]]) - factorPlot <- createJaspPlot(title = gettextf("Main Effect: %s", factorName), width = 500, height = 500) - p <- ggplot2::ggplot(emm, ggplot2::aes(x = x, y = emmean, group = 1)) + - ggplot2::geom_line(color = "black", linewidth = 0.9) + - ggplot2::geom_point(color = "black", fill = "black", shape = 21, size = 3.2, stroke = 0.2) + - ggplot2::scale_x_discrete(name = factorName) + - ggplot2::scale_y_continuous(name = dep) + - jaspGraphs::geom_rangeframe() + - jaspGraphs::themeJaspRaw() - - if (includeCi && all(c("lower.CL", "upper.CL") %in% names(emm))) { - p <- p + ggplot2::geom_errorbar(ggplot2::aes(ymin = lower.CL, ymax = upper.CL), width = 0.12, linewidth = 0.6) - } + result <- jaspResults[[dep]][["doeResult"]]$object[["regression"]] + model <- result[["object"]] + factors <- .doeAnalysisPlotFactorCandidates(options, model) - factorPlot$plotObject <- p - factorPlotKey <- gsub("[^[:alnum:]_]", "_", paste0("mainEffect_", factorName)) - depContainer[[factorPlotKey]] <- factorPlot - plotCount <- plotCount + 1 + # Build one plot per factor inside the main effects container. + plotCount <- 0 + emmErrors <- character(0) + for (factorName in factors) { + if (!factorName %in% names(model$model)) { + next } - if (plotCount == 0) { - errorPlot <- createJaspPlot(title = gettextf("Main Effects Plot: %s", dep), width = 900, height = 500) - if (length(emmErrors) > 0) { - errorPlot$setError(gettextf("Failed to compute main effects plot: %s", emmErrors[[1]])) - } else { - errorPlot$setError(gettext("Main effects plot requires at least one factor with two or more levels.")) - } - depContainer[["plot"]] <- errorPlot + predictor <- model$model[[factorName]] + predictor <- predictor[!is.na(predictor)] + if (length(unique(predictor)) < 2) { + next + } + + emm <- try(.doeAnalysisEmmeansByTerms(model, factorName, ciLevel, includeCi = includeCi)) + if (isTryError(emm)) { + emmErrors <- c(emmErrors, .extractErrorMessage(emm)) + next + } + + if (!factorName %in% names(emm)) { + emmErrors <- c(emmErrors, gettextf("Estimated means output did not contain factor '%s'.", factorName)) + next + } + + # Sort numeric factors by size; character factors remain in original order + emm[["x"]] <- as.character(emm[[factorName]]) + + # Try to sort numerically - if all values are numeric, sort numerically + uniqueX <- unique(emm[["x"]]) + numericX <- suppressWarnings(as.numeric(uniqueX)) + if (!anyNA(numericX)) { + # All values are numeric, sort numerically + sortedLevels <- as.character(sort(numericX)) + emm[["x"]] <- factor(emm[["x"]], levels = sortedLevels) + } + + factorPlot <- createJaspPlot(title = gettextf("Main Effect: %s", factorName), width = 500, height = 500) + p <- ggplot2::ggplot(emm, ggplot2::aes(x = x, y = emmean, group = 1)) + + ggplot2::geom_line(color = "black", linewidth = 0.9) + + ggplot2::geom_point(color = "black", fill = "black", shape = 21, size = 3.2, stroke = 0.2) + + ggplot2::scale_x_discrete(name = factorName, expand = ggplot2::expansion(add = c(0.5, 0.5))) + + ggplot2::scale_y_continuous(name = dep, expand = ggplot2::expansion(mult = c(0.1, 0.1))) + + jaspGraphs::geom_rangeframe() + + jaspGraphs::themeJaspRaw() + + if (includeCi && all(c("lower.CL", "upper.CL") %in% names(emm))) { + p <- p + ggplot2::geom_errorbar(ggplot2::aes(ymin = lower.CL, ymax = upper.CL), width = 0.12, linewidth = 0.6) } + + factorPlot$plotObject <- p + factorPlotKey <- gsub("[^[:alnum:]_]", "_", paste0("mainEffect_", factorName)) + mainEffectContainer[[factorPlotKey]] <- factorPlot + plotCount <- plotCount + 1 } -} -.doeAnalysisPlotInteractionEffects <- function(jaspResults, dependent, options, ready) { - if (!options[["interactionPlot"]] || !is.null(jaspResults[["interactionPlot"]])) { - return() + if (plotCount == 0) { + errorPlot <- createJaspPlot(title = gettext("Main Effects"), width = 900, height = 500) + if (length(emmErrors) > 0) { + errorPlot$setError(gettextf("Failed to compute main effects plot: %s", emmErrors[[1]])) + } else { + errorPlot$setError(gettext("Main effects plot requires at least one factor with two or more levels.")) + } + mainEffectContainer[["plot"]] <- errorPlot } +} - container <- createJaspContainer(title = gettext("Interaction Plots")) - container$dependOn(options = c("interactionPlot", "interactionPlotCi", "interactionPlotCiLevel", .doeAnalysisBaseDependencies())) - container$position <- 13 - jaspResults[["interactionPlot"]] <- container +.doeAnalysisPlotInteractionEffectsSubplots <- function(depContainer, dep, options, jaspResults, ready) { + interactionEffectContainer <- createJaspContainer(title = gettext("Interaction Effects")) + interactionEffectContainer$position <- 2 + depContainer[["interactionEffect"]] <- interactionEffectContainer includeCi <- isTRUE(options[["interactionPlotCi"]]) ciLevel <- .doeAnalysisNormalizeCiLevel(options[["interactionPlotCiLevel"]]) - # Create one child container/plot per dependent outcome. - for (depIdx in seq_along(dependent)) { - dep <- dependent[[depIdx]] + result <- jaspResults[[dep]][["doeResult"]]$object[["regression"]] + model <- result[["object"]] + factors <- .doeAnalysisPlotFactorCandidates(options, model) + # Pairwise interactions for all available factors. + factorPairs <- if (length(factors) > 1) utils::combn(factors, 2, simplify = FALSE) else list() - depContainer <- createJaspContainer(title = dep) - depContainer$position <- depIdx - container[[dep]] <- depContainer - - if (!ready || is.null(jaspResults[[dep]][["doeResult"]]) || jaspResults[[dep]]$getError()) { - return() - } + if (length(factorPairs) == 0) { + errorPlot <- createJaspPlot(title = gettext("Interaction Effects"), width = 1000, height = 600) + errorPlot$setError(gettext("Interaction plot requires at least two factors with two or more levels.")) + interactionEffectContainer[["plot"]] <- errorPlot + return() + } - result <- jaspResults[[dep]][["doeResult"]]$object[["regression"]] - model <- result[["object"]] - factors <- .doeAnalysisPlotFactorCandidates(options, model) - # Pairwise interactions for all available factors. - factorPairs <- if (length(factors) > 1) utils::combn(factors, 2, simplify = FALSE) else list() + # Each pair contributes one separate interaction plot. + plotCount <- 0 + emmErrors <- character(0) + for (pair in factorPairs) { + factorA <- pair[[1]] + factorB <- pair[[2]] - if (length(factorPairs) == 0) { - errorPlot <- createJaspPlot(title = gettextf("Interaction Plot: %s", dep), width = 1000, height = 600) - errorPlot$setError(gettext("Interaction plot requires at least two factors with two or more levels.")) - depContainer[["plot"]] <- errorPlot + if (!all(c(factorA, factorB) %in% names(model$model))) { next } - # Each pair contributes one separate interaction plot. - plotCount <- 0 - emmErrors <- character(0) - for (pair in factorPairs) { - factorA <- pair[[1]] - factorB <- pair[[2]] - - if (!all(c(factorA, factorB) %in% names(model$model))) { - next - } - - predictorA <- model$model[[factorA]] - predictorB <- model$model[[factorB]] - predictorA <- predictorA[!is.na(predictorA)] - predictorB <- predictorB[!is.na(predictorB)] - if (length(unique(predictorA)) < 2 || length(unique(predictorB)) < 2) { - next - } + predictorA <- model$model[[factorA]] + predictorB <- model$model[[factorB]] + predictorA <- predictorA[!is.na(predictorA)] + predictorB <- predictorB[!is.na(predictorB)] + if (length(unique(predictorA)) < 2 || length(unique(predictorB)) < 2) { + next + } - emm <- try(.doeAnalysisEmmeansByTerms(model, c(factorA, factorB), ciLevel, includeCi = includeCi)) - if (isTryError(emm)) { - emmErrors <- c(emmErrors, .extractErrorMessage(emm)) - next - } + emm <- try(.doeAnalysisEmmeansByTerms(model, c(factorA, factorB), ciLevel, includeCi = includeCi)) + if (isTryError(emm)) { + emmErrors <- c(emmErrors, .extractErrorMessage(emm)) + next + } - if (!all(c(factorA, factorB) %in% names(emm))) { - emmErrors <- c(emmErrors, gettextf("Estimated means output did not contain factors '%1$s' and '%2$s'.", factorA, factorB)) - next - } + if (!all(c(factorA, factorB) %in% names(emm))) { + emmErrors <- c(emmErrors, gettextf("Estimated means output did not contain factors '%1$s' and '%2$s'.", factorA, factorB)) + next + } - emm[["x"]] <- as.character(emm[[factorA]]) - emm[["trace"]] <- as.character(emm[[factorB]]) - - pairTitle <- gettextf("Interaction: %1$s x %2$s", factorA, factorB) - pairPlot <- createJaspPlot(title = pairTitle, width = 600, height = 500) - dodge <- ggplot2::position_dodge(width = 0.2) - p <- ggplot2::ggplot(emm, ggplot2::aes(x = x, y = emmean, color = trace, group = trace)) + - ggplot2::geom_line(linewidth = 0.95) + - ggplot2::geom_point(position = dodge, shape = 21, ggplot2::aes(fill = trace), size = 3.2, stroke = 0.2) + - ggplot2::scale_x_discrete(name = factorA) + - ggplot2::scale_y_continuous(name = dep) + - ggplot2::labs(color = factorB, fill = factorB) + - jaspGraphs::geom_rangeframe() + - jaspGraphs::themeJaspRaw() + - ggplot2::theme(legend.position = "right") - - if (includeCi && all(c("lower.CL", "upper.CL") %in% names(emm))) { - p <- p + ggplot2::geom_errorbar(ggplot2::aes(ymin = lower.CL, ymax = upper.CL), width = 0.12, linewidth = 0.6, position = dodge) - } + # Sort numeric factors by size; character factors remain in original order + emm[["x"]] <- as.character(emm[[factorA]]) + + # Try to sort numerically - if all values are numeric, sort numerically + uniqueX <- unique(emm[["x"]]) + numericX <- suppressWarnings(as.numeric(uniqueX)) + if (!anyNA(numericX)) { + # All values are numeric, sort numerically + sortedLevels <- as.character(sort(numericX)) + emm[["x"]] <- factor(emm[["x"]], levels = sortedLevels) + } + + emm[["trace"]] <- as.character(emm[[factorB]]) + + pairTitle <- gettextf("Interaction: %1$s x %2$s", factorA, factorB) + pairPlot <- createJaspPlot(title = pairTitle, width = 600, height = 500) + p <- ggplot2::ggplot(emm, ggplot2::aes(x = x, y = emmean, color = trace, group = trace)) + + ggplot2::geom_line(linewidth = 0.95) + + ggplot2::geom_point(shape = 21, ggplot2::aes(fill = trace), size = 3.2, stroke = 0.2) + + ggplot2::scale_x_discrete(name = factorA, expand = ggplot2::expansion(add = c(0.5, 0.5))) + + ggplot2::scale_y_continuous(name = dep, expand = ggplot2::expansion(mult = c(0.1, 0.1))) + + ggplot2::labs(color = factorB, fill = factorB) + + jaspGraphs::geom_rangeframe() + + jaspGraphs::themeJaspRaw() + + ggplot2::theme(legend.position = "right") - pairPlot$plotObject <- p - pairPlotKey <- gsub("[^[:alnum:]_]", "_", paste0("interaction_", factorA, "_x_", factorB)) - depContainer[[pairPlotKey]] <- pairPlot - plotCount <- plotCount + 1 + if (includeCi && all(c("lower.CL", "upper.CL") %in% names(emm))) { + p <- p + ggplot2::geom_errorbar(ggplot2::aes(ymin = lower.CL, ymax = upper.CL), width = 0.12, linewidth = 0.6) } - if (plotCount == 0) { - errorPlot <- createJaspPlot(title = gettextf("Interaction Plot: %s", dep), width = 1000, height = 600) - if (length(emmErrors) > 0) { - errorPlot$setError(gettextf("Failed to compute interaction plot: %s", emmErrors[[1]])) - } else { - errorPlot$setError(gettext("Interaction plot requires at least two factors with two or more levels.")) - } - depContainer[["plot"]] <- errorPlot + pairPlot$plotObject <- p + pairPlotKey <- gsub("[^[:alnum:]_]", "_", paste0("interaction_", factorA, "_x_", factorB)) + interactionEffectContainer[[pairPlotKey]] <- pairPlot + plotCount <- plotCount + 1 + } + + if (plotCount == 0) { + errorPlot <- createJaspPlot(title = gettext("Interaction Effects"), width = 1000, height = 600) + if (length(emmErrors) > 0) { + errorPlot$setError(gettextf("Failed to compute interaction plot: %s", emmErrors[[1]])) + } else { + errorPlot$setError(gettext("Interaction plot requires at least two factors with two or more levels.")) } + interactionEffectContainer[["plot"]] <- errorPlot } } diff --git a/inst/qml/doeAnalysis.qml b/inst/qml/doeAnalysis.qml index 7482ed53..3aedbd11 100644 --- a/inst/qml/doeAnalysis.qml +++ b/inst/qml/doeAnalysis.qml @@ -386,7 +386,7 @@ Form { name: "mainEffectsPlot" label: qsTr("Main effect plots") - checked: true + checked: false CheckBox { diff --git a/tests/testthat/_snaps/doeAnalysis/contour-plot54.svg b/tests/testthat/_snaps/doeAnalysis/contour-plot56.svg similarity index 100% rename from tests/testthat/_snaps/doeAnalysis/contour-plot54.svg rename to tests/testthat/_snaps/doeAnalysis/contour-plot56.svg diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-vertical-55-05.svg b/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-vertical-55-05.svg new file mode 100644 index 00000000..d7c8052d --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-vertical-55-05.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +200 +250 +300 + + + + + + +2 +3 +Angle +Distance + + +Vertical + + + + + + + + +1 +2 +interaction-angle-x-vertical-55-05 + + diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-ball-x-angle-55-06.svg b/tests/testthat/_snaps/doeAnalysis/interaction-ball-x-angle-55-06.svg new file mode 100644 index 00000000..363a6a19 --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/interaction-ball-x-angle-55-06.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +220 +240 +260 +280 +300 + + + + + + + + +Plastic +Tennis +Ball +Distance + + +Angle + + + + + + + + +2 +3 +interaction-ball-x-angle-55-06 + + diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-ball-x-vertical-55-07.svg b/tests/testthat/_snaps/doeAnalysis/interaction-ball-x-vertical-55-07.svg new file mode 100644 index 00000000..00a5b5eb --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/interaction-ball-x-vertical-55-07.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +200 +225 +250 +275 +300 + + + + + + + + +Plastic +Tennis +Ball +Distance + + +Vertical + + + + + + + + +1 +2 +interaction-ball-x-vertical-55-07 + + diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-05.svg b/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-05.svg new file mode 100644 index 00000000..a7c5a3a1 --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-05.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0.75 +1.00 +1.25 + + + + + + +75 +150 +InjPress +Density + + +InjTemp + + + + + + + + +100 +85 +interaction-injpress-x-injtemp-54-05 + + diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-15.svg b/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-15.svg new file mode 100644 index 00000000..8558e0ee --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-15.svg @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +20 +25 +30 +35 + + + + + + + +75 +150 +InjPress +Strength + + +InjTemp + + + + + + + + +100 +85 +interaction-injpress-x-injtemp-54-15 + + diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-06.svg b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-06.svg new file mode 100644 index 00000000..ba8eb12a --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-06.svg @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0.4 +0.8 +1.2 +1.6 + + + + + + + +Formula1 +Formula2 +Material +Density + + +InjPress + + + + + + + + +150 +75 +interaction-material-x-injpress-54-06 + + diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-16.svg b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-16.svg new file mode 100644 index 00000000..4209beaf --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-16.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +20 +25 +30 +35 +40 + + + + + + + + +Formula1 +Formula2 +Material +Strength + + +InjPress + + + + + + + + +150 +75 +interaction-material-x-injpress-54-16 + + diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-07.svg b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-07.svg new file mode 100644 index 00000000..654181f3 --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-07.svg @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0.8 +1.0 +1.2 +1.4 + + + + + + + +Formula1 +Formula2 +Material +Density + + +InjTemp + + + + + + + + +100 +85 +interaction-material-x-injtemp-54-07 + + diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-17.svg b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-17.svg new file mode 100644 index 00000000..99f98c29 --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-17.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +20 +25 +30 +35 +40 + + + + + + + + +Formula1 +Formula2 +Material +Strength + + +InjTemp + + + + + + + + +100 +85 +interaction-material-x-injtemp-54-17 + + diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-angle-55-08.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-angle-55-08.svg new file mode 100644 index 00000000..481686ba --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-angle-55-08.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +240 +250 +260 +270 +280 +290 + + + + + + + + + +2 +3 +Angle +Distance +main-effect-angle-55-08 + + diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-ball-55-09.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-ball-55-09.svg new file mode 100644 index 00000000..cfdf8359 --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-ball-55-09.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +250 +260 +270 + + + + + + +Plastic +Tennis +Ball +Distance +main-effect-ball-55-09 + + diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-injpress-54-08.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-injpress-54-08.svg new file mode 100644 index 00000000..628693ef --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-injpress-54-08.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0.8 +1.0 +1.2 +1.4 + + + + + + + +75 +150 +InjPress +Density +main-effect-injpress-54-08 + + diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-injpress-54-18.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-injpress-54-18.svg new file mode 100644 index 00000000..1e8acc8e --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-injpress-54-18.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +24 +27 +30 +33 + + + + + + + +75 +150 +InjPress +Strength +main-effect-injpress-54-18 + + diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-injtemp-54-09.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-injtemp-54-09.svg new file mode 100644 index 00000000..d6cfe7e6 --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-injtemp-54-09.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0.9 +1.0 +1.1 + + + + + + +85 +100 +InjTemp +Density +main-effect-injtemp-54-09 + + diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-injtemp-54-19.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-injtemp-54-19.svg new file mode 100644 index 00000000..95c1a95e --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-injtemp-54-19.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +24 +27 +30 +33 + + + + + + + +85 +100 +InjTemp +Strength +main-effect-injtemp-54-19 + + diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-material-54-10.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-material-54-10.svg new file mode 100644 index 00000000..be5597fa --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-material-54-10.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0.8 +1.0 +1.2 + + + + + + +Formula1 +Formula2 +Material +Density +main-effect-material-54-10 + + diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-material-54-20.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-material-54-20.svg new file mode 100644 index 00000000..4103e5de --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-material-54-20.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +24 +28 +32 +36 + + + + + + + +Formula1 +Formula2 +Material +Strength +main-effect-material-54-20 + + diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-vertical-55-10.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-vertical-55-10.svg new file mode 100644 index 00000000..7c6245bd --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-vertical-55-10.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +220 +240 +260 +280 +300 + + + + + + + + +1 +2 +Vertical +Distance +main-effect-vertical-55-10 + + diff --git a/tests/testthat/test-doeAnalysis.R b/tests/testthat/test-doeAnalysis.R index 476a0814..340d8105 100644 --- a/tests/testthat/test-doeAnalysis.R +++ b/tests/testthat/test-doeAnalysis.R @@ -4846,7 +4846,6 @@ test_that("48.9 Response Optimizer Response Surface No Squares - Response Optimi options("jaspRoundToPrecision" = NULL) # reset default - ## Response Surface design, basic example, squared terms #### options <- analysisOptions("doeAnalysis") options$designType <- "responseSurfaceDesign" @@ -5190,6 +5189,322 @@ test_that("Stepwise marginality leaves compliant models untouched", { options("jaspRoundToPrecision" = NULL) # reset default +### Factorial plots #### + +#### Data example 1 (factorial plots, two outcomes) #### +options <- analysisOptions("doeAnalysis") +options$designType <- "factorialDesign" +options$dependentFactorial <- c("Density", "Strength") +options$fixedFactorsFactorial <- c("Material") +options$continuousFactorsFactorial <- c("InjPress", "InjTemp") +options$codeFactors <- TRUE +options$codeFactorsMethod <- "automatic" +options$tableEquation <- TRUE +options$tableAlias <- TRUE +options$highestOrder <- FALSE +options$modelTerms <- list( + list(components = "Material"), + list(components = "InjTemp"), + list(components = "InjPress"), + list(components = c("Material", "InjTemp")), + list(components = c("Material", "InjPress")), + list(components = c("InjPress", "InjTemp")) +) +options$mainEffectsPlot <- TRUE +options$mainEffectsPlotCi <- TRUE +options$interactionPlot <- TRUE +options$interactionPlotCi <- TRUE +set.seed(123) +results <- runAnalysis("doeAnalysis", "datasets/doeAnalysis/doe_realDataExample1.csv", options) + +test_that("54.1 Data example 1 (factorial plots, two outcomes) - Density ANOVA table results match", { + table <- results[["results"]][["Density"]][["collection"]][["Density_tableAnova"]][["data"]] + jaspTools::expect_equal_tables(table, + list(0.282635417212939, 1.69581250327763, 6, 29.2340255777468, 2.0653745688331e-05, + "Model", "", 1.64742746594141, 3, "", "", " Linear terms", + 0.669433085778748, 0.669433085778748, 1, 69.2419377062769, 1.61404212637588e-05, + " Material", 0.0216428384881839, 0.0216428384881839, + 1, 2.23859875799617, 0.168820796228592, " InjTemp", + 0.956351541674477, 0.956351541674477, 1, 98.9189738013817, 3.74374736566881e-06, + " InjPress", "", 0.0483850373362251, 3, "", + "", " Interaction terms", 0.0438625219544171, 0.0438625219544171, + 1, 4.53686272359078, 0.0620223667487927, " MaterialInjTemp", + 0.0018167435738568, 0.0018167435738568, 1, 0.187912500952855, + 0.674864178734996, " MaterialInjPress", + 0.0027057718079512, 0.0027057718079512, 1, 0.279867976282664, + 0.609585425025631, " InjTempInjPress", + 0.0096680293468746, 0.0870122641218714, 9, "", "", "Error", + "", 1.78282476739951, 15, "", "", "Total")) +}) + +test_that("54.2 Data example 1 (factorial plots, two outcomes) - Density Coded Coefficients table results match", { + table <- results[["results"]][["Density"]][["collection"]][["Density_tableCoefficients"]][["data"]] + jaspTools::expect_equal_tables(table, + list("(Intercept)", 1.03348149084375, "", 1.21507749788964e-11, 0.0245815344146712, + "(Intercept)", 42.0430016047709, "", "A", -0.20454722648125, + -0.4090944529625, 1.61404212637588e-05, 0.0245815344146712, + "Material", -8.32117405816492, 1, "B", -0.03677876296875, -0.0735575259375, + 0.168820796228592, 0.0245815344146712, "InjTemp", -1.49619475938, + 1, "C", 0.24448306966875, 0.4889661393375, 3.74374736566881e-06, + 0.0245815344146712, "InjPress", 9.94580181792206, 1, "AB", 0.05235845320625, + 0.1047169064125, 0.0620223667487927, 0.0245815344146712, "MaterialInjTemp", + 2.12999124965122, 1, "AC", -0.01065581875625, -0.0213116375125001, + 0.674864178734996, 0.0245815344146712, "MaterialInjPress", + -0.433488755278444, 1, "BC", 0.01300425845625, 0.0260085169125, + 0.609585425025631, 0.0245815344146712, "InjTempInjPress", + 0.52902549681718, 1)) +}) + +test_that("54.3 Data example 1 (factorial plots, two outcomes) - Density Regression equation in Coded Units table results match", { + table <- results[["results"]][["Density"]][["collection"]][["Density_tableEquation"]][["data"]] + jaspTools::expect_equal_tables(table, + list("Density = 1.03 0.2 A 0.037 B + 0.24 C + 0.052 AB 0.011 AC + 0.013 BC" + )) +}) + +test_that("54.4 Data example 1 (factorial plots, two outcomes) - Density Model Summary table results match", { + table <- results[["results"]][["Density"]][["collection"]][["Density_tableSummary"]][["data"]] + jaspTools::expect_equal_tables(table, + list(0.91865692980323, 0.845749437256495, 0.951194157881938, 0.0983261376586846 + )) +}) + +test_that("54.11 Data example 1 (factorial plots, two outcomes) - Strength ANOVA table results match", { + table <- results[["results"]][["Strength"]][["collection"]][["Strength_tableAnova"]][["data"]] + jaspTools::expect_equal_tables(table, + list(61.4412169760555, 368.647301856333, 6, 6.02163462145317, 0.00885308674084683, + "Model", "", 367.52491531986, 3, "", "", " Linear terms", + 181.151435260225, 181.151435260225, 1, 17.7540063165417, 0.00226090333532432, + " Material", 73.7250318293204, 73.7250318293204, + 1, 7.22552752013659, 0.024876494295309, " InjTemp", + 112.648448230315, 112.648448230315, 1, 11.0402727892092, 0.00890208646409138, + " InjPress", "", 1.12238653647272, 3, "", + "", " Interaction terms", 0.778094866011372, 0.778094866011372, + 1, 0.0762583037014878, 0.788670012907783, " MaterialInjTemp", + 0.342200526962543, 0.342200526962543, 1, 0.033537853611204, + 0.858752480786647, " MaterialInjPress", + 0.00209114349880224, 0.00209114349880224, 1, 0.00020494551883179, + 0.988890269483188, " InjTempInjPress", + 10.2034116711698, 91.8307050405283, 9, "", "", "Error", "", + 460.478006896861, 15, "", "", "Total")) +}) + +test_that("54.12 Data example 1 (factorial plots, two outcomes) - Strength Coded Coefficients table results match", { + table <- results[["results"]][["Strength"]][["collection"]][["Strength_tableCoefficients"]][["data"]] + jaspTools::expect_equal_tables(table, + list("(Intercept)", 29.633570586875, "", 3.71582056009637e-11, 0.798569489429763, + "(Intercept)", 37.1083180350849, "", "A", 3.364812729375, 6.72962545875, + 0.00226090333532432, 0.798569489429763, "Material", 4.21355032206116, + 1, "B", 2.146582048125, 4.29316409625, 0.024876494295309, 0.798569489429763, + "InjTemp", 2.68803413671341, 1, "C", 2.653399331875, 5.30679866375, + 0.00890208646409137, 0.798569489429763, "InjPress", 3.32269059486573, + 1, "AB", -0.220524214375001, -0.441048428750001, 0.788670012907782, + 0.798569489429764, "MaterialInjTemp", -0.276149060656538, + 1, "AC", -0.146244770625, -0.29248954125, 0.858752480786647, + 0.798569489429763, "MaterialInjPress", -0.183133431167561, + 1, "BC", 0.0114322556249987, 0.0228645112499974, 0.98889026948318, + 0.798569489429763, "InjTempInjPress", 0.0143159183719405, + 1)) +}) + +test_that("54.13 Data example 1 (factorial plots, two outcomes) - Strength Regression equation in Coded Units table results match", { + table <- results[["results"]][["Strength"]][["collection"]][["Strength_tableEquation"]][["data"]] + jaspTools::expect_equal_tables(table, + list("Strength = 29.63 + 3.36 A + 2.15 B + 2.65 C 0.22 AB 0.15 AC + 0.011 BC" + )) +}) + +test_that("54.14 Data example 1 (factorial plots, two outcomes) - Strength Model Summary table results match", { + table <- results[["results"]][["Strength"]][["collection"]][["Strength_tableSummary"]][["data"]] + jaspTools::expect_equal_tables(table, + list(0.667625439705684, 0.369719352330779, 0.80057526382341, 3.19427795771905 + )) +}) + +test_that("54.5 Data example 1 (factorial plots, two outcomes) - Density Interaction: InjPress x InjTemp plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Density"]][["collection"]][["factorialPlots_Density_interactionEffect"]][["collection"]][["factorialPlots_Density_interactionEffect_interaction_InjPress_x_InjTemp"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "interaction-injpress-x-injtemp-54-05") +}) + +test_that("54.6 Data example 1 (factorial plots, two outcomes) - Density Interaction: Material x InjPress plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Density"]][["collection"]][["factorialPlots_Density_interactionEffect"]][["collection"]][["factorialPlots_Density_interactionEffect_interaction_Material_x_InjPress"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "interaction-material-x-injpress-54-06") +}) + +test_that("54.7 Data example 1 (factorial plots, two outcomes) - Density Interaction: Material x InjTemp plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Density"]][["collection"]][["factorialPlots_Density_interactionEffect"]][["collection"]][["factorialPlots_Density_interactionEffect_interaction_Material_x_InjTemp"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "interaction-material-x-injtemp-54-07") +}) + +test_that("54.8 Data example 1 (factorial plots, two outcomes) - Density Main Effect: InjPress plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Density"]][["collection"]][["factorialPlots_Density_mainEffect"]][["collection"]][["factorialPlots_Density_mainEffect_mainEffect_InjPress"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "main-effect-injpress-54-08") +}) + +test_that("54.9 Data example 1 (factorial plots, two outcomes) - Density Main Effect: InjTemp plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Density"]][["collection"]][["factorialPlots_Density_mainEffect"]][["collection"]][["factorialPlots_Density_mainEffect_mainEffect_InjTemp"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "main-effect-injtemp-54-09") +}) + +test_that("54.10 Data example 1 (factorial plots, two outcomes) - Density Main Effect: Material plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Density"]][["collection"]][["factorialPlots_Density_mainEffect"]][["collection"]][["factorialPlots_Density_mainEffect_mainEffect_Material"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "main-effect-material-54-10") +}) + +test_that("54.15 Data example 1 (factorial plots, two outcomes) - Strength Interaction: InjPress x InjTemp plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Strength"]][["collection"]][["factorialPlots_Strength_interactionEffect"]][["collection"]][["factorialPlots_Strength_interactionEffect_interaction_InjPress_x_InjTemp"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "interaction-injpress-x-injtemp-54-15") +}) + +test_that("54.16 Data example 1 (factorial plots, two outcomes) - Strength Interaction: Material x InjPress plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Strength"]][["collection"]][["factorialPlots_Strength_interactionEffect"]][["collection"]][["factorialPlots_Strength_interactionEffect_interaction_Material_x_InjPress"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "interaction-material-x-injpress-54-16") +}) + +test_that("54.17 Data example 1 (factorial plots, two outcomes) - Strength Interaction: Material x InjTemp plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Strength"]][["collection"]][["factorialPlots_Strength_interactionEffect"]][["collection"]][["factorialPlots_Strength_interactionEffect_interaction_Material_x_InjTemp"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "interaction-material-x-injtemp-54-17") +}) + +test_that("54.18 Data example 1 (factorial plots, two outcomes) - Strength Main Effect: InjPress plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Strength"]][["collection"]][["factorialPlots_Strength_mainEffect"]][["collection"]][["factorialPlots_Strength_mainEffect_mainEffect_InjPress"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "main-effect-injpress-54-18") +}) + +test_that("54.19 Data example 1 (factorial plots, two outcomes) - Strength Main Effect: InjTemp plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Strength"]][["collection"]][["factorialPlots_Strength_mainEffect"]][["collection"]][["factorialPlots_Strength_mainEffect_mainEffect_InjTemp"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "main-effect-injtemp-54-19") +}) + +test_that("54.20 Data example 1 (factorial plots, two outcomes) - Strength Main Effect: Material plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Strength"]][["collection"]][["factorialPlots_Strength_mainEffect"]][["collection"]][["factorialPlots_Strength_mainEffect_mainEffect_Material"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "main-effect-material-54-20") +}) + +#### Data example 2 (factorial plots, one outcome) #### +options <- analysisOptions("doeAnalysis") +options$designType <- "factorialDesign" +options$dependentFactorial <- c("Distance") +options$fixedFactorsFactorial <- c("Ball") +options$continuousFactorsFactorial <- c("Angle", "Vertical") +options$codeFactors <- TRUE +options$codeFactorsMethod <- "automatic" +options$tableEquation <- TRUE +options$tableAlias <- TRUE +options$highestOrder <- FALSE +options$modelTerms <- list( + list(components = "Ball"), + list(components = "Angle"), + list(components = "Vertical"), + list(components = c("Ball", "Angle")), + list(components = c("Angle", "Vertical")), + list(components = c("Ball", "Vertical")) +) +options$mainEffectsPlot <- TRUE +options$mainEffectsPlotCi <- TRUE +options$interactionPlot <- TRUE +options$interactionPlotCi <- TRUE +set.seed(123) +results <- runAnalysis("doeAnalysis", "datasets/doeAnalysis/doe_realDataExample2.csv", options) + +test_that("55.1 Data example 2 (factorial plots, one outcome) - ANOVA table results match", { + table <- results[["results"]][["Distance"]][["collection"]][["Distance_tableAnova"]][["data"]] + jaspTools::expect_equal_tables(table, + list(3442.47916666667, 20654.875, 6, 28.3445022585625, 2.35137006826626e-05, + "Model", "", 20274.6875, 3, "", "", " Linear terms", + 826.5625, 826.5625, 1, 6.80570644405055, 0.0283276128893302, + " Ball", 4257.5625, 4257.5625, 1, 35.055692149351, + 0.000223251267369552, " Angle", 15190.5625, + 15190.5625, 1, 125.075247298302, 1.39986713911565e-06, " Vertical", + "", 380.1875, 3, "", "", " Interaction terms", 85.5624999999998, + 85.5624999999998, 1, 0.704499971410599, 0.423009692024339, " BallAngle", + 280.5625, 280.5625, 1, 2.31008062210533, 0.162858010109754, + " AngleVertical", + 14.0625, 14.0625, 1, 0.115787066155869, 0.741456839635441, " BallVertical", + 121.451388888889, 1093.0625, 9, "", "", "Error", "", 21747.9375, + 15, "", "", "Total")) +}) + +test_that("55.2 Data example 2 (factorial plots, one outcome) - Coded Coefficients table results match", { + table <- results[["results"]][["Distance"]][["collection"]][["Distance_tableCoefficients"]][["data"]] + jaspTools::expect_equal_tables(table, + list("(Intercept)", 260.4375, "", 8.41437497943459e-15, 2.75512464428663, + "(Intercept)", 94.5283911347079, "", "A", -7.1875, -14.375, + 0.0283276128893302, 2.75512464428663, "Ball", -2.60877489332647, + 1, "B", 16.3125, 32.625, 0.000223251267369552, 2.75512464428663, + "Angle", 5.92078475789747, 1, "C", 30.8125, 61.625, 1.39986713911565e-06, + 2.75512464428663, "Vertical", 11.1837045426952, 1, "AB", -2.3125, + -4.62499999999999, 0.42300969202434, 2.75512464428663, "BallAngle", + -0.839344965678951, 1, "BC", 4.1875, 8.37500000000001, 0.162858010109754, + 2.75512464428664, "AngleVertical", 1.51989493785108, + 1, "AC", 0.937500000000003, 1.87500000000001, 0.74145683963544, + 2.75512464428663, "BallVertical", 0.340274986086063, + 1)) +}) + +test_that("55.3 Data example 2 (factorial plots, one outcome) - Regression equation in Coded Units table results match", { + table <- results[["results"]][["Distance"]][["collection"]][["Distance_tableEquation"]][["data"]] + jaspTools::expect_equal_tables(table, + list("Distance = 260.44 7.19 A + 16.31 B + 30.81 C 2.31 AB + 4.19 BC + 0.94 AC" + )) +}) + +test_that("55.4 Data example 2 (factorial plots, one outcome) - Model Summary table results match", { + table <- results[["results"]][["Distance"]][["collection"]][["Distance_tableSummary"]][["data"]] + jaspTools::expect_equal_tables(table, + list(0.916232477984023, 0.841151958251185, 0.949739486790414, 11.0204985771465 + )) +}) + +test_that("55.5 Data example 2 (factorial plots, one outcome) - Interaction: Angle x Vertical plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Distance"]][["collection"]][["factorialPlots_Distance_interactionEffect"]][["collection"]][["factorialPlots_Distance_interactionEffect_interaction_Angle_x_Vertical"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "interaction-angle-x-vertical-55-05") +}) + +test_that("55.6 Data example 2 (factorial plots, one outcome) - Interaction: Ball x Angle plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Distance"]][["collection"]][["factorialPlots_Distance_interactionEffect"]][["collection"]][["factorialPlots_Distance_interactionEffect_interaction_Ball_x_Angle"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "interaction-ball-x-angle-55-06") +}) + +test_that("55.7 Data example 2 (factorial plots, one outcome) - Interaction: Ball x Vertical plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Distance"]][["collection"]][["factorialPlots_Distance_interactionEffect"]][["collection"]][["factorialPlots_Distance_interactionEffect_interaction_Ball_x_Vertical"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "interaction-ball-x-vertical-55-07") +}) + +test_that("55.8 Data example 2 (factorial plots, one outcome) - Main Effect: Angle plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Distance"]][["collection"]][["factorialPlots_Distance_mainEffect"]][["collection"]][["factorialPlots_Distance_mainEffect_mainEffect_Angle"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "main-effect-angle-55-08") +}) + +test_that("55.9 Data example 2 (factorial plots, one outcome) - Main Effect: Ball plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Distance"]][["collection"]][["factorialPlots_Distance_mainEffect"]][["collection"]][["factorialPlots_Distance_mainEffect_mainEffect_Ball"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "main-effect-ball-55-09") +}) + +test_that("55.10 Data example 2 (factorial plots, one outcome) - Main Effect: Vertical plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Distance"]][["collection"]][["factorialPlots_Distance_mainEffect"]][["collection"]][["factorialPlots_Distance_mainEffect_mainEffect_Vertical"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "main-effect-vertical-55-10") +}) + + ## Contour plot #### options <- analysisOptions("doeAnalysis") @@ -5214,8 +5529,9 @@ options$contourSurfacePlotResponseDivision <- 5 set.seed(123) results <- runAnalysis("doeAnalysis", "datasets/doeAnalysis/RSM3contCCD.csv", options) -test_that("54.1 Contour plot matches", { +test_that("56.1 Contour plot matches", { plotName <- results[["results"]][["Result"]][["collection"]][["Result_contourSurfacePlot"]][["collection"]][["Result_contourSurfacePlot_Contour plot of Result vs A and B"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] - jaspTools::expect_equal_plots(testPlot, "contour-plot54") + jaspTools::expect_equal_plots(testPlot, "contour-plot56") }) + From 75be3b82964e10101a916b8a9a33de54ad6c6316 Mon Sep 17 00:00:00 2001 From: JTPetter Date: Thu, 30 Apr 2026 18:08:35 +0200 Subject: [PATCH 3/6] Fix with cont. factors and squared terms and update unit tests --- R/doeAnalysis.R | 313 ++++++++++++-- .../interaction-angle-x-ball-55-06.svg | 380 ++++++++++++++++ .../interaction-angle-x-vertical-55-05.svg | 354 +++++++++++++-- .../interaction-injpress-x-injtemp-54-05.svg | 360 ++++++++++++++-- .../interaction-injpress-x-injtemp-54-15.svg | 364 ++++++++++++++-- .../interaction-material-x-injpress-54-06.svg | 400 ++++++++++++++--- .../interaction-material-x-injpress-54-16.svg | 404 +++++++++++++++--- .../interaction-material-x-injtemp-54-07.svg | 402 ++++++++++++++--- .../interaction-material-x-injtemp-54-17.svg | 404 +++++++++++++++--- .../interaction-vertical-x-ball-55-07.svg | 382 +++++++++++++++++ .../doeAnalysis/main-effect-angle-55-08.svg | 203 +++++++-- .../doeAnalysis/main-effect-ball-55-09.svg | 36 +- .../main-effect-injpress-54-08.svg | 193 ++++++++- .../main-effect-injpress-54-18.svg | 193 ++++++++- .../doeAnalysis/main-effect-injtemp-54-09.svg | 189 +++++++- .../doeAnalysis/main-effect-injtemp-54-19.svg | 193 ++++++++- .../main-effect-material-54-10.svg | 34 +- .../main-effect-material-54-20.svg | 36 +- .../main-effect-vertical-55-10.svg | 199 +++++++-- tests/testthat/test-doeAnalysis.R | 16 +- 20 files changed, 4505 insertions(+), 550 deletions(-) create mode 100644 tests/testthat/_snaps/doeAnalysis/interaction-angle-x-ball-55-06.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/interaction-vertical-x-ball-55-07.svg diff --git a/R/doeAnalysis.R b/R/doeAnalysis.R index 4cf28539..18f577c1 100644 --- a/R/doeAnalysis.R +++ b/R/doeAnalysis.R @@ -1941,7 +1941,65 @@ get_levels <- function(var, num_levels, dataset) { return(factors) } -.doeAnalysisEmmeansByTerms <- function(model, termNames, level, includeCi = TRUE) { +.doeAnalysisPlotFactorType <- function(factorName, options) { + continuousFactors <- if (options[["designType"]] == "factorialDesign") { + options[["continuousFactorsFactorial"]] + } else { + options[["continuousFactorsResponseSurface"]] + } + + if (factorName %in% continuousFactors) { + return("continuous") + } + + return("discrete") +} + +.doeAnalysisPlotFactorValues <- function(model, factorName, factorType, gridResolution = 51, outerLimitsOnly = FALSE) { + values <- model.frame(model)[[factorName]] + + if (factorType == "continuous") { + numericValues <- suppressWarnings(as.numeric(values)) + numericValues <- numericValues[is.finite(numericValues)] + + if (length(numericValues) == 0) { + return(numeric()) + } + + if (outerLimitsOnly) { + return(sort(unique(range(numericValues)))) + } + + if (length(unique(numericValues)) == 1) { + return(unique(numericValues)) + } + + return(seq(min(numericValues), max(numericValues), length.out = gridResolution)) + } + + if (is.factor(values)) { + return(levels(values)) + } + + return(unique(values)) +} + +.doeAnalysisInteractionPlotOrder <- function(factorA, factorB, options) { + typeA <- .doeAnalysisPlotFactorType(factorA, options) + typeB <- .doeAnalysisPlotFactorType(factorB, options) + + if (typeA == "continuous" && typeB != "continuous") { + return(c(factorA, factorB)) + } + + if (typeA != "continuous" && typeB == "continuous") { + return(c(factorB, factorA)) + } + + return(c(factorA, factorB)) +} + +.doeAnalysisEmmeansByTerms <- function(model, termNames, level, includeCi = TRUE, options = NULL, gridResolution = 51) { # Use emmeans on the already fitted model; never refit here. specs <- if (length(termNames) == 1) { @@ -1950,13 +2008,140 @@ get_levels <- function(var, num_levels, dataset) { as.formula(paste0("~", termNames[1], "*", termNames[2])) } + # Continuous factors are evaluated on a prediction grid; discrete factors keep their levels. + modelData <- model.frame(model) + atList <- list() + + for (termIdx in seq_along(termNames)) { + termName <- termNames[[termIdx]] + if (!termName %in% names(modelData)) { + next + } + + factorType <- if (is.null(options)) { + if (is.numeric(modelData[[termName]]) && !is.factor(modelData[[termName]])) "continuous" else "discrete" + } else { + .doeAnalysisPlotFactorType(termName, options) + } + + if (factorType == "continuous") { + outerLimitsOnly <- length(termNames) > 1 && termIdx == 2 + atList[[termName]] <- .doeAnalysisPlotFactorValues( + model = model, + factorName = termName, + factorType = factorType, + gridResolution = gridResolution, + outerLimitsOnly = outerLimitsOnly + ) + } else { + atList[[termName]] <- .doeAnalysisPlotFactorValues( + model = model, + factorName = termName, + factorType = factorType + ) + } + } + + emmArgs <- list(specs = specs, level = level) + if (length(atList) > 0) { + emmArgs[["at"]] <- atList + } + + # Try emmeans first; fall back to direct prediction for squared terms. + tryCatch({ + if (includeCi) { + emm <- do.call(emmeans::emmeans, c(list(model), emmArgs)) + return(as.data.frame(emm)) + } + + emm <- do.call(emmeans::emmeans, c(list(model), emmArgs)) + return(as.data.frame(emm, infer = c(FALSE, FALSE))) + }, error = function(e) { + tryCatch({ + return(.doeAnalysisPredictByTerms(model, termNames, level, includeCi, options, gridResolution)) + }, error = function(e2) { + stop(gettextf("Error computing emmeans for terms '%s': %s. Prediction fallback failed: %s.", + paste(termNames, collapse = ", "), conditionMessage(e), conditionMessage(e2))) + }) + }) +} + +.doeAnalysisPredictByTerms <- function(model, termNames, level, includeCi, options = NULL, gridResolution = 51) { + modelData <- model.frame(model) + responseVars <- all.vars(stats::formula(model)[[2]]) + predictorNames <- setdiff(names(modelData), responseVars) + + termValues <- list() + for (termIdx in seq_along(termNames)) { + termName <- termNames[[termIdx]] + if (!termName %in% names(modelData)) { + next + } + + factorType <- if (is.null(options)) { + if (is.numeric(modelData[[termName]]) && !is.factor(modelData[[termName]])) "continuous" else "discrete" + } else { + .doeAnalysisPlotFactorType(termName, options) + } + + if (factorType == "continuous") { + outerLimitsOnly <- length(termNames) > 1 && termIdx == 2 + termValues[[termName]] <- .doeAnalysisPlotFactorValues( + model = model, + factorName = termName, + factorType = factorType, + gridResolution = gridResolution, + outerLimitsOnly = outerLimitsOnly + ) + } else { + termValues[[termName]] <- .doeAnalysisPlotFactorValues( + model = model, + factorName = termName, + factorType = factorType + ) + } + } + + grid <- expand.grid(termValues, stringsAsFactors = FALSE) + + for (pred in setdiff(predictorNames, termNames)) { + predValues <- modelData[[pred]] + if (is.factor(predValues)) { + grid[[pred]] <- factor(levels(predValues)[[1]], levels = levels(predValues)) + } else if (is.character(predValues)) { + predNonMissing <- predValues[!is.na(predValues)] + grid[[pred]] <- if (length(predNonMissing) > 0) predNonMissing[[1]] else "" + } else { + grid[[pred]] <- mean(predValues, na.rm = TRUE) + } + } + + for (termName in termNames) { + if (termName %in% names(modelData) && is.factor(modelData[[termName]])) { + grid[[termName]] <- factor(grid[[termName]], levels = levels(modelData[[termName]])) + } + } + if (includeCi) { - emm <- emmeans::emmeans(model, specs = specs, level = level) - return(as.data.frame(emm)) + pred <- stats::predict(model, newdata = grid, se.fit = TRUE) + df <- stats::df.residual(model) + tcrit <- stats::qt((1 + level) / 2, df) + emmean <- pred$fit + se <- pred$se.fit + lower <- emmean - tcrit * se + upper <- emmean + tcrit * se + } else { + emmean <- stats::predict(model, newdata = grid) + } + + out <- grid[, termNames, drop = FALSE] + out$emmean <- emmean + if (includeCi) { + out$lower.CL <- lower + out$upper.CL <- upper } - emm <- emmeans::emmeans(model, specs = specs) - return(as.data.frame(emm, infer = c(FALSE, FALSE))) + return(out) } .doeAnalysisNormalizeCiLevel <- function(level) { @@ -2031,7 +2216,7 @@ get_levels <- function(var, num_levels, dataset) { next } - emm <- try(.doeAnalysisEmmeansByTerms(model, factorName, ciLevel, includeCi = includeCi)) + emm <- try(.doeAnalysisEmmeansByTerms(model, factorName, ciLevel, includeCi = includeCi, options = options)) if (isTryError(emm)) { emmErrors <- c(emmErrors, .extractErrorMessage(emm)) next @@ -2042,29 +2227,47 @@ get_levels <- function(var, num_levels, dataset) { next } - # Sort numeric factors by size; character factors remain in original order - emm[["x"]] <- as.character(emm[[factorName]]) - - # Try to sort numerically - if all values are numeric, sort numerically - uniqueX <- unique(emm[["x"]]) - numericX <- suppressWarnings(as.numeric(uniqueX)) - if (!anyNA(numericX)) { - # All values are numeric, sort numerically - sortedLevels <- as.character(sort(numericX)) - emm[["x"]] <- factor(emm[["x"]], levels = sortedLevels) + factorType <- .doeAnalysisPlotFactorType(factorName, options) + if (factorType == "continuous") { + emm[["x"]] <- as.numeric(emm[[factorName]]) + xBreaks <- sort(unique(c(min(emm[["x"]], na.rm = TRUE), max(emm[["x"]], na.rm = TRUE)))) + } else { + emm[["x"]] <- as.character(emm[[factorName]]) + + uniqueX <- unique(emm[["x"]]) + numericX <- suppressWarnings(as.numeric(uniqueX)) + if (!anyNA(numericX)) { + sortedLevels <- as.character(sort(numericX)) + emm[["x"]] <- factor(emm[["x"]], levels = sortedLevels) + } else if (is.factor(emm[[factorName]])) { + emm[["x"]] <- factor(emm[["x"]], levels = levels(emm[[factorName]])) + } } factorPlot <- createJaspPlot(title = gettextf("Main Effect: %s", factorName), width = 500, height = 500) + + # Filter points: continuous factors show outer limits only, discrete show all levels + emmForPoints <- if (factorType == "continuous") { + emm[emm[["x"]] %in% xBreaks, ] + } else { + emm + } + p <- ggplot2::ggplot(emm, ggplot2::aes(x = x, y = emmean, group = 1)) + ggplot2::geom_line(color = "black", linewidth = 0.9) + - ggplot2::geom_point(color = "black", fill = "black", shape = 21, size = 3.2, stroke = 0.2) + - ggplot2::scale_x_discrete(name = factorName, expand = ggplot2::expansion(add = c(0.5, 0.5))) + - ggplot2::scale_y_continuous(name = dep, expand = ggplot2::expansion(mult = c(0.1, 0.1))) + + ggplot2::geom_point(data = emmForPoints, color = "black", fill = "black", shape = 21, size = 3.2, stroke = 0.2) + + ggplot2::scale_y_continuous(name = dep, expand = ggplot2::expansion(mult = c(0.15, 0.15))) + jaspGraphs::geom_rangeframe() + jaspGraphs::themeJaspRaw() + if (factorType == "continuous") { + p <- p + ggplot2::scale_x_continuous(name = factorName, breaks = xBreaks, expand = ggplot2::expansion(mult = c(0.15, 0.15))) + } else { + p <- p + ggplot2::scale_x_discrete(name = factorName, expand = ggplot2::expansion(add = c(0.5, 0.5))) + } + if (includeCi && all(c("lower.CL", "upper.CL") %in% names(emm))) { - p <- p + ggplot2::geom_errorbar(ggplot2::aes(ymin = lower.CL, ymax = upper.CL), width = 0.12, linewidth = 0.6) + p <- p + ggplot2::geom_errorbar(ggplot2::aes(ymin = lower.CL, ymax = upper.CL), width = 0.25, linewidth = 0.6) } factorPlot$plotObject <- p @@ -2109,8 +2312,9 @@ get_levels <- function(var, num_levels, dataset) { plotCount <- 0 emmErrors <- character(0) for (pair in factorPairs) { - factorA <- pair[[1]] - factorB <- pair[[2]] + orderedPair <- .doeAnalysisInteractionPlotOrder(pair[[1]], pair[[2]], options) + factorA <- orderedPair[[1]] + factorB <- orderedPair[[2]] if (!all(c(factorA, factorB) %in% names(model$model))) { next @@ -2124,7 +2328,7 @@ get_levels <- function(var, num_levels, dataset) { next } - emm <- try(.doeAnalysisEmmeansByTerms(model, c(factorA, factorB), ciLevel, includeCi = includeCi)) + emm <- try(.doeAnalysisEmmeansByTerms(model, c(factorA, factorB), ciLevel, includeCi = includeCi, options = options)) if (isTryError(emm)) { emmErrors <- c(emmErrors, .extractErrorMessage(emm)) next @@ -2135,34 +2339,67 @@ get_levels <- function(var, num_levels, dataset) { next } - # Sort numeric factors by size; character factors remain in original order - emm[["x"]] <- as.character(emm[[factorA]]) - - # Try to sort numerically - if all values are numeric, sort numerically - uniqueX <- unique(emm[["x"]]) - numericX <- suppressWarnings(as.numeric(uniqueX)) - if (!anyNA(numericX)) { - # All values are numeric, sort numerically - sortedLevels <- as.character(sort(numericX)) - emm[["x"]] <- factor(emm[["x"]], levels = sortedLevels) + xFactorType <- .doeAnalysisPlotFactorType(factorA, options) + traceFactorType <- .doeAnalysisPlotFactorType(factorB, options) + + if (xFactorType == "continuous") { + emm[["x"]] <- as.numeric(emm[[factorA]]) + xBreaks <- sort(unique(c(min(emm[["x"]], na.rm = TRUE), max(emm[["x"]], na.rm = TRUE)))) + } else { + emm[["x"]] <- as.character(emm[[factorA]]) + + uniqueX <- unique(emm[["x"]]) + numericX <- suppressWarnings(as.numeric(uniqueX)) + if (!anyNA(numericX)) { + sortedLevels <- as.character(sort(numericX)) + emm[["x"]] <- factor(emm[["x"]], levels = sortedLevels) + } else if (is.factor(emm[[factorA]])) { + emm[["x"]] <- factor(emm[["x"]], levels = levels(emm[[factorA]])) + } } - emm[["trace"]] <- as.character(emm[[factorB]]) + if (traceFactorType == "continuous") { + traceValues <- as.character(emm[[factorB]]) + traceNumeric <- suppressWarnings(as.numeric(traceValues)) + if (!anyNA(traceNumeric)) { + emm[["trace"]] <- factor(traceValues, levels = as.character(sort(unique(traceNumeric)))) + } else { + emm[["trace"]] <- factor(traceValues) + } + } else { + emm[["trace"]] <- as.character(emm[[factorB]]) + if (is.factor(emm[[factorB]])) { + emm[["trace"]] <- factor(emm[["trace"]], levels = levels(emm[[factorB]])) + } + } pairTitle <- gettextf("Interaction: %1$s x %2$s", factorA, factorB) pairPlot <- createJaspPlot(title = pairTitle, width = 600, height = 500) + + # Filter points: continuous x-axis shows outer limits only, discrete shows all + emmForPoints <- if (xFactorType == "continuous") { + emm[emm[["x"]] %in% xBreaks, ] + } else { + emm + } + p <- ggplot2::ggplot(emm, ggplot2::aes(x = x, y = emmean, color = trace, group = trace)) + ggplot2::geom_line(linewidth = 0.95) + - ggplot2::geom_point(shape = 21, ggplot2::aes(fill = trace), size = 3.2, stroke = 0.2) + - ggplot2::scale_x_discrete(name = factorA, expand = ggplot2::expansion(add = c(0.5, 0.5))) + - ggplot2::scale_y_continuous(name = dep, expand = ggplot2::expansion(mult = c(0.1, 0.1))) + + ggplot2::geom_point(data = emmForPoints, shape = 21, ggplot2::aes(fill = trace), size = 3.2, stroke = 0.2) + + ggplot2::scale_y_continuous(name = dep, expand = ggplot2::expansion(mult = c(0.15, 0.15))) + ggplot2::labs(color = factorB, fill = factorB) + jaspGraphs::geom_rangeframe() + jaspGraphs::themeJaspRaw() + ggplot2::theme(legend.position = "right") + if (xFactorType == "continuous") { + p <- p + ggplot2::scale_x_continuous(name = factorA, breaks = xBreaks, expand = ggplot2::expansion(mult = c(0.15, 0.15))) + } else { + p <- p + ggplot2::scale_x_discrete(name = factorA, expand = ggplot2::expansion(add = c(0.5, 0.5))) + } + if (includeCi && all(c("lower.CL", "upper.CL") %in% names(emm))) { - p <- p + ggplot2::geom_errorbar(ggplot2::aes(ymin = lower.CL, ymax = upper.CL), width = 0.12, linewidth = 0.6) + p <- p + ggplot2::geom_errorbar(ggplot2::aes(ymin = lower.CL, ymax = upper.CL), width = 0.25, linewidth = 0.6) } pairPlot$plotObject <- p diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-ball-55-06.svg b/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-ball-55-06.svg new file mode 100644 index 00000000..5e851f7a --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-ball-55-06.svg @@ -0,0 +1,380 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +220 +240 +260 +280 +300 + + + + + + + + +2 +3 +Angle +Distance + + +Ball + + + + + + + + +Plastic +Tennis +interaction-angle-x-ball-55-06 + + diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-vertical-55-05.svg b/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-vertical-55-05.svg index d7c8052d..0c211020 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-vertical-55-05.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-vertical-55-05.svg @@ -27,41 +27,335 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -200 -250 -300 - - - +200 +250 +300 + + + - - -2 -3 + + +2 +3 Angle Distance diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-05.svg b/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-05.svg index a7c5a3a1..8c256a10 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-05.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-05.svg @@ -27,41 +27,337 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -0.75 -1.00 -1.25 - - - +0.75 +1.00 +1.25 +1.50 + + + + - - -75 -150 + + +75 +150 InjPress Density @@ -75,8 +371,8 @@ -100 -85 +85 +100 interaction-injpress-x-injtemp-54-05 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-15.svg b/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-15.svg index 8558e0ee..91ecae01 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-15.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-15.svg @@ -27,43 +27,339 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -20 -25 -30 -35 - - - - +20 +25 +30 +35 +40 + + + + + - - -75 -150 + + +75 +150 InjPress Strength @@ -77,8 +373,8 @@ -100 -85 +85 +100 interaction-injpress-x-injtemp-54-15 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-06.svg b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-06.svg index ba8eb12a..82bb09c7 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-06.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-06.svg @@ -21,64 +21,358 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -0.4 -0.8 -1.2 -1.6 - - - - - - - -Formula1 -Formula2 -Material +0.6 +0.9 +1.2 +1.5 + + + + + + + +75 +150 +InjPress Density - - -InjPress - - - - - - - - -150 -75 -interaction-material-x-injpress-54-06 + + +Material + + + + + + + + +Formula1 +Formula2 +interaction-material-x-injpress-54-06 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-16.svg b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-16.svg index 4209beaf..03678ae7 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-16.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-16.svg @@ -21,66 +21,360 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -20 -25 -30 -35 -40 - - - - - - - - -Formula1 -Formula2 -Material +20 +25 +30 +35 +40 + + + + + + + + +75 +150 +InjPress Strength - - -InjPress - - - - - - - - -150 -75 -interaction-material-x-injpress-54-16 + + +Material + + + + + + + + +Formula1 +Formula2 +interaction-material-x-injpress-54-16 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-07.svg b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-07.svg index 654181f3..a6300d9f 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-07.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-07.svg @@ -21,64 +21,360 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -0.8 -1.0 -1.2 -1.4 - - - - - - - -Formula1 -Formula2 -Material +0.6 +0.8 +1.0 +1.2 +1.4 + + + + + + + + +85 +100 +InjTemp Density - - -InjTemp - - - - - - - - -100 -85 -interaction-material-x-injtemp-54-07 + + +Material + + + + + + + + +Formula1 +Formula2 +interaction-material-x-injtemp-54-07 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-17.svg b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-17.svg index 99f98c29..d959a6c1 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-17.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-17.svg @@ -21,66 +21,360 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -20 -25 -30 -35 -40 - - - - - - - - -Formula1 -Formula2 -Material +20 +25 +30 +35 +40 + + + + + + + + +85 +100 +InjTemp Strength - - -InjTemp - - - - - - - - -100 -85 -interaction-material-x-injtemp-54-17 + + +Material + + + + + + + + +Formula1 +Formula2 +interaction-material-x-injtemp-54-17 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-vertical-x-ball-55-07.svg b/tests/testthat/_snaps/doeAnalysis/interaction-vertical-x-ball-55-07.svg new file mode 100644 index 00000000..8913faf6 --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/interaction-vertical-x-ball-55-07.svg @@ -0,0 +1,382 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +200 +225 +250 +275 +300 +325 + + + + + + + + + +1 +2 +Vertical +Distance + + +Ball + + + + + + + + +Plastic +Tennis +interaction-vertical-x-ball-55-07 + + diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-angle-55-08.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-angle-55-08.svg index 481686ba..2f75fd74 100644 --- a/tests/testthat/_snaps/doeAnalysis/main-effect-angle-55-08.svg +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-angle-55-08.svg @@ -27,38 +27,187 @@ - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -240 -250 -260 -270 -280 -290 - - - - - - +230 +240 +250 +260 +270 +280 +290 + + + + + + + - - -2 -3 + + +2 +3 Angle Distance main-effect-angle-55-08 diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-ball-55-09.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-ball-55-09.svg index cfdf8359..606d0cdc 100644 --- a/tests/testthat/_snaps/doeAnalysis/main-effect-ball-55-09.svg +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-ball-55-09.svg @@ -27,27 +27,31 @@ - - - + + + - - - - - - - + + + + + + + -250 -260 -270 - - - +240 +250 +260 +270 +280 + + + + + diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-injpress-54-08.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-injpress-54-08.svg index 628693ef..00eb06cf 100644 --- a/tests/testthat/_snaps/doeAnalysis/main-effect-injpress-54-08.svg +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-injpress-54-08.svg @@ -27,34 +27,181 @@ - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -0.8 -1.0 -1.2 -1.4 - - - - +0.8 +1.0 +1.2 +1.4 + + + + - - -75 -150 + + +75 +150 InjPress Density main-effect-injpress-54-08 diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-injpress-54-18.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-injpress-54-18.svg index 1e8acc8e..56283592 100644 --- a/tests/testthat/_snaps/doeAnalysis/main-effect-injpress-54-18.svg +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-injpress-54-18.svg @@ -27,34 +27,181 @@ - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -24 -27 -30 -33 - - - - +24 +28 +32 +36 + + + + - - -75 -150 + + +75 +150 InjPress Strength main-effect-injpress-54-18 diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-injtemp-54-09.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-injtemp-54-09.svg index d6cfe7e6..c734d9e2 100644 --- a/tests/testthat/_snaps/doeAnalysis/main-effect-injtemp-54-09.svg +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-injtemp-54-09.svg @@ -27,32 +27,179 @@ - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -0.9 -1.0 -1.1 - - - +0.9 +1.0 +1.1 + + + - - -85 -100 + + +85 +100 InjTemp Density main-effect-injtemp-54-09 diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-injtemp-54-19.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-injtemp-54-19.svg index 95c1a95e..aabe3756 100644 --- a/tests/testthat/_snaps/doeAnalysis/main-effect-injtemp-54-19.svg +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-injtemp-54-19.svg @@ -27,34 +27,181 @@ - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -24 -27 -30 -33 - - - - +24 +27 +30 +33 + + + + - - -85 -100 + + +85 +100 InjTemp Strength main-effect-injtemp-54-19 diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-material-54-10.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-material-54-10.svg index be5597fa..3e57fd02 100644 --- a/tests/testthat/_snaps/doeAnalysis/main-effect-material-54-10.svg +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-material-54-10.svg @@ -27,27 +27,29 @@ - - - + + + - - - - - - - + + + + + + + -0.8 -1.0 -1.2 - - - +0.8 +1.0 +1.2 +1.4 + + + + diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-material-54-20.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-material-54-20.svg index 4103e5de..b48390e6 100644 --- a/tests/testthat/_snaps/doeAnalysis/main-effect-material-54-20.svg +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-material-54-20.svg @@ -27,29 +27,29 @@ - - - + + + - - - - - - - + + + + + + + -24 -28 -32 -36 - - - - +22 +26 +30 +34 + + + + diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-vertical-55-10.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-vertical-55-10.svg index 7c6245bd..671d78bd 100644 --- a/tests/testthat/_snaps/doeAnalysis/main-effect-vertical-55-10.svg +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-vertical-55-10.svg @@ -27,36 +27,185 @@ - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -220 -240 -260 -280 -300 - - - - - +210 +230 +250 +270 +290 +310 + + + + + + - - -1 -2 + + +1 +2 Vertical Distance main-effect-vertical-55-10 diff --git a/tests/testthat/test-doeAnalysis.R b/tests/testthat/test-doeAnalysis.R index 340d8105..9db01ef8 100644 --- a/tests/testthat/test-doeAnalysis.R +++ b/tests/testthat/test-doeAnalysis.R @@ -5328,13 +5328,13 @@ test_that("54.5 Data example 1 (factorial plots, two outcomes) - Density Interac }) test_that("54.6 Data example 1 (factorial plots, two outcomes) - Density Interaction: Material x InjPress plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Density"]][["collection"]][["factorialPlots_Density_interactionEffect"]][["collection"]][["factorialPlots_Density_interactionEffect_interaction_Material_x_InjPress"]][["data"]] + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Density"]][["collection"]][["factorialPlots_Density_interactionEffect"]][["collection"]][["factorialPlots_Density_interactionEffect_interaction_InjPress_x_Material"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "interaction-material-x-injpress-54-06") }) test_that("54.7 Data example 1 (factorial plots, two outcomes) - Density Interaction: Material x InjTemp plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Density"]][["collection"]][["factorialPlots_Density_interactionEffect"]][["collection"]][["factorialPlots_Density_interactionEffect_interaction_Material_x_InjTemp"]][["data"]] + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Density"]][["collection"]][["factorialPlots_Density_interactionEffect"]][["collection"]][["factorialPlots_Density_interactionEffect_interaction_InjTemp_x_Material"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "interaction-material-x-injtemp-54-07") }) @@ -5364,13 +5364,13 @@ test_that("54.15 Data example 1 (factorial plots, two outcomes) - Strength Inter }) test_that("54.16 Data example 1 (factorial plots, two outcomes) - Strength Interaction: Material x InjPress plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Strength"]][["collection"]][["factorialPlots_Strength_interactionEffect"]][["collection"]][["factorialPlots_Strength_interactionEffect_interaction_Material_x_InjPress"]][["data"]] + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Strength"]][["collection"]][["factorialPlots_Strength_interactionEffect"]][["collection"]][["factorialPlots_Strength_interactionEffect_interaction_InjPress_x_Material"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "interaction-material-x-injpress-54-16") }) test_that("54.17 Data example 1 (factorial plots, two outcomes) - Strength Interaction: Material x InjTemp plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Strength"]][["collection"]][["factorialPlots_Strength_interactionEffect"]][["collection"]][["factorialPlots_Strength_interactionEffect_interaction_Material_x_InjTemp"]][["data"]] + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Strength"]][["collection"]][["factorialPlots_Strength_interactionEffect"]][["collection"]][["factorialPlots_Strength_interactionEffect_interaction_InjTemp_x_Material"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "interaction-material-x-injtemp-54-17") }) @@ -5475,15 +5475,15 @@ test_that("55.5 Data example 2 (factorial plots, one outcome) - Interaction: Ang }) test_that("55.6 Data example 2 (factorial plots, one outcome) - Interaction: Ball x Angle plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Distance"]][["collection"]][["factorialPlots_Distance_interactionEffect"]][["collection"]][["factorialPlots_Distance_interactionEffect_interaction_Ball_x_Angle"]][["data"]] + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Distance"]][["collection"]][["factorialPlots_Distance_interactionEffect"]][["collection"]][["factorialPlots_Distance_interactionEffect_interaction_Angle_x_Ball"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] - jaspTools::expect_equal_plots(testPlot, "interaction-ball-x-angle-55-06") + jaspTools::expect_equal_plots(testPlot, "interaction-angle-x-ball-55-06") }) test_that("55.7 Data example 2 (factorial plots, one outcome) - Interaction: Ball x Vertical plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Distance"]][["collection"]][["factorialPlots_Distance_interactionEffect"]][["collection"]][["factorialPlots_Distance_interactionEffect_interaction_Ball_x_Vertical"]][["data"]] + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Distance"]][["collection"]][["factorialPlots_Distance_interactionEffect"]][["collection"]][["factorialPlots_Distance_interactionEffect_interaction_Vertical_x_Ball"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] - jaspTools::expect_equal_plots(testPlot, "interaction-ball-x-vertical-55-07") + jaspTools::expect_equal_plots(testPlot, "interaction-vertical-x-ball-55-07") }) test_that("55.8 Data example 2 (factorial plots, one outcome) - Main Effect: Angle plot matches", { From da357e8d619d877d7d30085e740b0d18c110d989 Mon Sep 17 00:00:00 2001 From: JTPetter Date: Tue, 5 May 2026 15:21:35 +0200 Subject: [PATCH 4/6] Extend axes, adjust tests, new tests --- R/doeAnalysis.R | 5 +- ...{contour-plot56.svg => contour-plot57.svg} | 0 .../interaction-angle-x-ball-55-06.svg | 702 ++++++++--------- .../interaction-angle-x-vertical-55-05.svg | 694 ++++++++--------- .../interaction-injpress-x-injtemp-54-05.svg | 700 ++++++++--------- .../interaction-injpress-x-injtemp-54-15.svg | 702 ++++++++--------- .../interaction-material-x-injpress-54-06.svg | 698 ++++++++--------- .../interaction-material-x-injpress-54-16.svg | 702 ++++++++--------- .../interaction-material-x-injtemp-54-07.svg | 702 ++++++++--------- .../interaction-material-x-injtemp-54-17.svg | 702 ++++++++--------- .../interaction-pressure-x-nozzle-56-11.svg | 535 +++++++++++++ .../interaction-pressure-x-nozzle-56-17.svg | 539 +++++++++++++ .../interaction-speed-x-nozzle-56-12.svg | 539 +++++++++++++ .../interaction-speed-x-nozzle-56-18.svg | 537 +++++++++++++ .../interaction-speed-x-pressure-56-13.svg | 378 ++++++++++ .../interaction-speed-x-pressure-56-19.svg | 378 ++++++++++ .../interaction-vertical-x-ball-55-07.svg | 706 +++++++++--------- .../doeAnalysis/main-effect-angle-55-08.svg | 372 ++++----- .../doeAnalysis/main-effect-ball-55-09.svg | 70 +- .../main-effect-injpress-54-08.svg | 360 ++++----- .../main-effect-injpress-54-18.svg | 360 ++++----- .../doeAnalysis/main-effect-injtemp-54-09.svg | 356 ++++----- .../doeAnalysis/main-effect-injtemp-54-19.svg | 360 ++++----- .../main-effect-material-54-10.svg | 66 +- .../main-effect-material-54-20.svg | 66 +- .../doeAnalysis/main-effect-nozzle-56-14.svg | 70 ++ .../doeAnalysis/main-effect-nozzle-56-20.svg | 68 ++ .../main-effect-pressure-56-15.svg | 205 +++++ .../main-effect-pressure-56-21.svg | 209 ++++++ .../doeAnalysis/main-effect-speed-56-16.svg | 209 ++++++ .../doeAnalysis/main-effect-speed-56-22.svg | 209 ++++++ .../main-effect-vertical-55-10.svg | 368 ++++----- tests/testthat/test-doeAnalysis.R | 241 +++++- 33 files changed, 8460 insertions(+), 4348 deletions(-) rename tests/testthat/_snaps/doeAnalysis/{contour-plot56.svg => contour-plot57.svg} (100%) create mode 100644 tests/testthat/_snaps/doeAnalysis/interaction-pressure-x-nozzle-56-11.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/interaction-pressure-x-nozzle-56-17.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/interaction-speed-x-nozzle-56-12.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/interaction-speed-x-nozzle-56-18.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/interaction-speed-x-pressure-56-13.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/interaction-speed-x-pressure-56-19.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/main-effect-nozzle-56-14.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/main-effect-nozzle-56-20.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/main-effect-pressure-56-15.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/main-effect-pressure-56-21.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/main-effect-speed-56-16.svg create mode 100644 tests/testthat/_snaps/doeAnalysis/main-effect-speed-56-22.svg diff --git a/R/doeAnalysis.R b/R/doeAnalysis.R index 18f577c1..6882bd7b 100644 --- a/R/doeAnalysis.R +++ b/R/doeAnalysis.R @@ -2258,7 +2258,8 @@ get_levels <- function(var, num_levels, dataset) { ggplot2::geom_point(data = emmForPoints, color = "black", fill = "black", shape = 21, size = 3.2, stroke = 0.2) + ggplot2::scale_y_continuous(name = dep, expand = ggplot2::expansion(mult = c(0.15, 0.15))) + jaspGraphs::geom_rangeframe() + - jaspGraphs::themeJaspRaw() + jaspGraphs::themeJaspRaw() + + ggplot2::theme(plot.margin = ggplot2::margin(10, 10, 10, 10, unit = "pt")) if (factorType == "continuous") { p <- p + ggplot2::scale_x_continuous(name = factorName, breaks = xBreaks, expand = ggplot2::expansion(mult = c(0.15, 0.15))) @@ -2390,7 +2391,7 @@ get_levels <- function(var, num_levels, dataset) { ggplot2::labs(color = factorB, fill = factorB) + jaspGraphs::geom_rangeframe() + jaspGraphs::themeJaspRaw() + - ggplot2::theme(legend.position = "right") + ggplot2::theme(legend.position = "right", plot.margin = ggplot2::margin(10, 10, 10, 10, unit = "pt")) if (xFactorType == "continuous") { p <- p + ggplot2::scale_x_continuous(name = factorA, breaks = xBreaks, expand = ggplot2::expansion(mult = c(0.15, 0.15))) diff --git a/tests/testthat/_snaps/doeAnalysis/contour-plot56.svg b/tests/testthat/_snaps/doeAnalysis/contour-plot57.svg similarity index 100% rename from tests/testthat/_snaps/doeAnalysis/contour-plot56.svg rename to tests/testthat/_snaps/doeAnalysis/contour-plot57.svg diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-ball-55-06.svg b/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-ball-55-06.svg index 5e851f7a..e923d118 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-ball-55-06.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-ball-55-06.svg @@ -21,360 +21,360 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -220 -240 -260 -280 -300 - - - - - - - - -2 -3 -Angle -Distance - - -Ball - - - - - - - - -Plastic -Tennis -interaction-angle-x-ball-55-06 + +220 +240 +260 +280 +300 + + + + + + + + +2 +3 +Angle +Distance + + +Ball + + + + + + + + +Plastic +Tennis +interaction-angle-x-ball-55-06 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-vertical-55-05.svg b/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-vertical-55-05.svg index 0c211020..3f8d2467 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-vertical-55-05.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-vertical-55-05.svg @@ -21,356 +21,356 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -200 -250 -300 - - - - - - -2 -3 -Angle -Distance - - -Vertical - - - - - - - - -1 -2 -interaction-angle-x-vertical-55-05 + +200 +250 +300 + + + + + + +2 +3 +Angle +Distance + + +Vertical + + + + + + + + +1 +2 +interaction-angle-x-vertical-55-05 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-05.svg b/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-05.svg index 8c256a10..5ba8ceb2 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-05.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-05.svg @@ -18,361 +18,361 @@ - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -0.75 -1.00 -1.25 -1.50 - - - - - - - -75 -150 -InjPress -Density - - -InjTemp - - - - - - - - -85 -100 -interaction-injpress-x-injtemp-54-05 + +0.75 +1.00 +1.25 +1.50 + + + + + + + +75 +150 +InjPress +Density + + +InjTemp + + + + + + + + +85 +100 +interaction-injpress-x-injtemp-54-05 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-15.svg b/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-15.svg index 91ecae01..69f47548 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-15.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-15.svg @@ -21,360 +21,360 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -20 -25 -30 -35 -40 - - - - - - - - -75 -150 -InjPress -Strength - - -InjTemp - - - - - - - - -85 -100 -interaction-injpress-x-injtemp-54-15 + +20 +25 +30 +35 +40 + + + + + + + + +75 +150 +InjPress +Strength + + +InjTemp + + + + + + + + +85 +100 +interaction-injpress-x-injtemp-54-15 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-06.svg b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-06.svg index 82bb09c7..674e11d8 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-06.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-06.svg @@ -21,358 +21,358 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -0.6 -0.9 -1.2 -1.5 - - - - - - - -75 -150 -InjPress -Density - - -Material - - - - - - - - -Formula1 -Formula2 -interaction-material-x-injpress-54-06 + +0.6 +0.9 +1.2 +1.5 + + + + + + + +75 +150 +InjPress +Density + + +Material + + + + + + + + +Formula1 +Formula2 +interaction-material-x-injpress-54-06 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-16.svg b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-16.svg index 03678ae7..234171ce 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-16.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-16.svg @@ -21,360 +21,360 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -20 -25 -30 -35 -40 - - - - - - - - -75 -150 -InjPress -Strength - - -Material - - - - - - - - -Formula1 -Formula2 -interaction-material-x-injpress-54-16 + +20 +25 +30 +35 +40 + + + + + + + + +75 +150 +InjPress +Strength + + +Material + + + + + + + + +Formula1 +Formula2 +interaction-material-x-injpress-54-16 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-07.svg b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-07.svg index a6300d9f..74180d81 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-07.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-07.svg @@ -21,360 +21,360 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -0.6 -0.8 -1.0 -1.2 -1.4 - - - - - - - - -85 -100 -InjTemp -Density - - -Material - - - - - - - - -Formula1 -Formula2 -interaction-material-x-injtemp-54-07 + +0.6 +0.8 +1.0 +1.2 +1.4 + + + + + + + + +85 +100 +InjTemp +Density + + +Material + + + + + + + + +Formula1 +Formula2 +interaction-material-x-injtemp-54-07 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-17.svg b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-17.svg index d959a6c1..09c86aa0 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-17.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-17.svg @@ -21,360 +21,360 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -20 -25 -30 -35 -40 - - - - - - - - -85 -100 -InjTemp -Strength - - -Material - - - - - - - - -Formula1 -Formula2 -interaction-material-x-injtemp-54-17 + +20 +25 +30 +35 +40 + + + + + + + + +85 +100 +InjTemp +Strength + + +Material + + + + + + + + +Formula1 +Formula2 +interaction-material-x-injtemp-54-17 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-pressure-x-nozzle-56-11.svg b/tests/testthat/_snaps/doeAnalysis/interaction-pressure-x-nozzle-56-11.svg new file mode 100644 index 00000000..26ce0a06 --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/interaction-pressure-x-nozzle-56-11.svg @@ -0,0 +1,535 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +50 +100 + + + + + +10 +20 +Pressure +Cost + + +Nozzle + + + + + + + + + + + + +1 +2 +3 +interaction-pressure-x-nozzle-56-11 + + diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-pressure-x-nozzle-56-17.svg b/tests/testthat/_snaps/doeAnalysis/interaction-pressure-x-nozzle-56-17.svg new file mode 100644 index 00000000..e782e646 --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/interaction-pressure-x-nozzle-56-17.svg @@ -0,0 +1,539 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +-100 +-50 +0 +50 + + + + + + + +10 +20 +Pressure +Syruploss + + +Nozzle + + + + + + + + + + + + +1 +2 +3 +interaction-pressure-x-nozzle-56-17 + + diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-nozzle-56-12.svg b/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-nozzle-56-12.svg new file mode 100644 index 00000000..47eeb9a0 --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-nozzle-56-12.svg @@ -0,0 +1,539 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +100 +125 +150 +175 + + + + + + + +100 +140 +Speed +Cost + + +Nozzle + + + + + + + + + + + + +1 +2 +3 +interaction-speed-x-nozzle-56-12 + + diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-nozzle-56-18.svg b/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-nozzle-56-18.svg new file mode 100644 index 00000000..ec80f58c --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-nozzle-56-18.svg @@ -0,0 +1,537 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0 +50 +100 + + + + + + +100 +140 +Speed +Syruploss + + +Nozzle + + + + + + + + + + + + +1 +2 +3 +interaction-speed-x-nozzle-56-18 + + diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-pressure-56-13.svg b/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-pressure-56-13.svg new file mode 100644 index 00000000..a488cc5f --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-pressure-56-13.svg @@ -0,0 +1,378 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +40 +80 +120 +160 + + + + + + + +100 +140 +Speed +Cost + + +Pressure + + + + + + + + +10 +20 +interaction-speed-x-pressure-56-13 + + diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-pressure-56-19.svg b/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-pressure-56-19.svg new file mode 100644 index 00000000..5b631086 --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-pressure-56-19.svg @@ -0,0 +1,378 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +-100 +-50 +0 +50 + + + + + + + +100 +140 +Speed +Syruploss + + +Pressure + + + + + + + + +10 +20 +interaction-speed-x-pressure-56-19 + + diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-vertical-x-ball-55-07.svg b/tests/testthat/_snaps/doeAnalysis/interaction-vertical-x-ball-55-07.svg index 8913faf6..0996fdcb 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-vertical-x-ball-55-07.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-vertical-x-ball-55-07.svg @@ -21,362 +21,362 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -200 -225 -250 -275 -300 -325 - - - - - - - - - -1 -2 -Vertical -Distance - - -Ball - - - - - - - - -Plastic -Tennis -interaction-vertical-x-ball-55-07 + +200 +225 +250 +275 +300 +325 + + + + + + + + + +1 +2 +Vertical +Distance + + +Ball + + + + + + + + +Plastic +Tennis +interaction-vertical-x-ball-55-07 diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-angle-55-08.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-angle-55-08.svg index 2f75fd74..46d65244 100644 --- a/tests/testthat/_snaps/doeAnalysis/main-effect-angle-55-08.svg +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-angle-55-08.svg @@ -21,195 +21,195 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -230 -240 -250 -260 -270 -280 -290 - - - - - - - - - - -2 -3 -Angle -Distance -main-effect-angle-55-08 + +230 +240 +250 +260 +270 +280 +290 + + + + + + + + + + +2 +3 +Angle +Distance +main-effect-angle-55-08 diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-ball-55-09.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-ball-55-09.svg index 606d0cdc..8a0fba43 100644 --- a/tests/testthat/_snaps/doeAnalysis/main-effect-ball-55-09.svg +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-ball-55-09.svg @@ -21,44 +21,44 @@ - - + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - -240 -250 -260 -270 -280 - - - - - - - - -Plastic -Tennis -Ball -Distance -main-effect-ball-55-09 + +240 +250 +260 +270 +280 + + + + + + + + +Plastic +Tennis +Ball +Distance +main-effect-ball-55-09 diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-injpress-54-08.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-injpress-54-08.svg index 00eb06cf..31b3bd78 100644 --- a/tests/testthat/_snaps/doeAnalysis/main-effect-injpress-54-08.svg +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-injpress-54-08.svg @@ -21,189 +21,189 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -0.8 -1.0 -1.2 -1.4 - - - - - - - -75 -150 -InjPress -Density -main-effect-injpress-54-08 + +0.8 +1.0 +1.2 +1.4 + + + + + + + +75 +150 +InjPress +Density +main-effect-injpress-54-08 diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-injpress-54-18.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-injpress-54-18.svg index 56283592..ad99b113 100644 --- a/tests/testthat/_snaps/doeAnalysis/main-effect-injpress-54-18.svg +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-injpress-54-18.svg @@ -21,189 +21,189 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -24 -28 -32 -36 - - - - - - - -75 -150 -InjPress -Strength -main-effect-injpress-54-18 + +24 +28 +32 +36 + + + + + + + +75 +150 +InjPress +Strength +main-effect-injpress-54-18 diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-injtemp-54-09.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-injtemp-54-09.svg index c734d9e2..2b9e7cda 100644 --- a/tests/testthat/_snaps/doeAnalysis/main-effect-injtemp-54-09.svg +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-injtemp-54-09.svg @@ -21,187 +21,187 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -0.9 -1.0 -1.1 - - - - - - -85 -100 -InjTemp -Density -main-effect-injtemp-54-09 + +0.9 +1.0 +1.1 + + + + + + +85 +100 +InjTemp +Density +main-effect-injtemp-54-09 diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-injtemp-54-19.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-injtemp-54-19.svg index aabe3756..9eff5fba 100644 --- a/tests/testthat/_snaps/doeAnalysis/main-effect-injtemp-54-19.svg +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-injtemp-54-19.svg @@ -21,189 +21,189 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -24 -27 -30 -33 - - - - - - - -85 -100 -InjTemp -Strength -main-effect-injtemp-54-19 + +24 +27 +30 +33 + + + + + + + +85 +100 +InjTemp +Strength +main-effect-injtemp-54-19 diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-material-54-10.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-material-54-10.svg index 3e57fd02..acf32512 100644 --- a/tests/testthat/_snaps/doeAnalysis/main-effect-material-54-10.svg +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-material-54-10.svg @@ -21,42 +21,42 @@ - - + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - -0.8 -1.0 -1.2 -1.4 - - - - - - - -Formula1 -Formula2 -Material -Density -main-effect-material-54-10 + +0.8 +1.0 +1.2 +1.4 + + + + + + + +Formula1 +Formula2 +Material +Density +main-effect-material-54-10 diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-material-54-20.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-material-54-20.svg index b48390e6..810418d5 100644 --- a/tests/testthat/_snaps/doeAnalysis/main-effect-material-54-20.svg +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-material-54-20.svg @@ -21,42 +21,42 @@ - - + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - -22 -26 -30 -34 - - - - - - - -Formula1 -Formula2 -Material -Strength -main-effect-material-54-20 + +22 +26 +30 +34 + + + + + + + +Formula1 +Formula2 +Material +Strength +main-effect-material-54-20 diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-nozzle-56-14.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-nozzle-56-14.svg new file mode 100644 index 00000000..42979b6c --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-nozzle-56-14.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +90 +100 +110 +120 +130 + + + + + + + + + +1 +2 +3 +Nozzle +Cost +main-effect-nozzle-56-14 + + diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-nozzle-56-20.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-nozzle-56-20.svg new file mode 100644 index 00000000..13b8b9ff --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-nozzle-56-20.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +-20 +0 +20 +40 + + + + + + + + +1 +2 +3 +Nozzle +Syruploss +main-effect-nozzle-56-20 + + diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-pressure-56-15.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-pressure-56-15.svg new file mode 100644 index 00000000..c5b40a55 --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-pressure-56-15.svg @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +50 +100 + + + + + +10 +20 +Pressure +Cost +main-effect-pressure-56-15 + + diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-pressure-56-21.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-pressure-56-21.svg new file mode 100644 index 00000000..4c05d1db --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-pressure-56-21.svg @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +-100 +-50 +0 +50 + + + + + + + +10 +20 +Pressure +Syruploss +main-effect-pressure-56-21 + + diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-speed-56-16.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-speed-56-16.svg new file mode 100644 index 00000000..7af161bc --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-speed-56-16.svg @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +100 +125 +150 +175 + + + + + + + +100 +140 +Speed +Cost +main-effect-speed-56-16 + + diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-speed-56-22.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-speed-56-22.svg new file mode 100644 index 00000000..5f36d4db --- /dev/null +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-speed-56-22.svg @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0 +40 +80 +120 + + + + + + + +100 +140 +Speed +Syruploss +main-effect-speed-56-22 + + diff --git a/tests/testthat/_snaps/doeAnalysis/main-effect-vertical-55-10.svg b/tests/testthat/_snaps/doeAnalysis/main-effect-vertical-55-10.svg index 671d78bd..f6b45858 100644 --- a/tests/testthat/_snaps/doeAnalysis/main-effect-vertical-55-10.svg +++ b/tests/testthat/_snaps/doeAnalysis/main-effect-vertical-55-10.svg @@ -21,193 +21,193 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -210 -230 -250 -270 -290 -310 - - - - - - - - - -1 -2 -Vertical -Distance -main-effect-vertical-55-10 + +210 +230 +250 +270 +290 +310 + + + + + + + + + +1 +2 +Vertical +Distance +main-effect-vertical-55-10 diff --git a/tests/testthat/test-doeAnalysis.R b/tests/testthat/test-doeAnalysis.R index 9db01ef8..a6e9af3c 100644 --- a/tests/testthat/test-doeAnalysis.R +++ b/tests/testthat/test-doeAnalysis.R @@ -5504,6 +5504,242 @@ test_that("55.10 Data example 2 (factorial plots, one outcome) - Main Effect: Ve jaspTools::expect_equal_plots(testPlot, "main-effect-vertical-55-10") }) +#### Data example 3 (response surface, two outcomes, factorial plots) #### +options <- analysisOptions("doeAnalysis") +options$designType <- "responseSurfaceDesign" +options$dependentResponseSurface <- c("Syruploss", "Cost") +options$fixedFactorsResponseSurface <- c("Nozzle") +options$continuousFactorsResponseSurface <- c("Speed", "Pressure") +options$codeFactors <- FALSE +options$squaredTermsCoded <- TRUE +options$codeFactorsMethod <- "automatic" +options$tableEquation <- TRUE +options$tableAlias <- TRUE +options$rsmPredefinedModel <- TRUE +options$rsmPredefinedTerms <- "fullQuadratic" +options$mainEffectsPlot <- TRUE +options$mainEffectsPlotCi <- TRUE +options$interactionPlot <- TRUE +options$interactionPlotCi <- TRUE +set.seed(123) +results <- runAnalysis("doeAnalysis", "datasets/doeAnalysis/doe_realDataExample3.csv", options) + +test_that("56.1 Data example 3 (response surface, two outcomes) - Cost ANOVA table results match", { + table <- results[["results"]][["Cost"]][["collection"]][["Cost_tableAnova"]][["data"]] + jaspTools::expect_equal_tables(table, + list(4213.26273148148, 33706.1018518519, 8, 8.55776924337149, 5.37520340999456e-07, + "Model", "", 9118.77777777778, 3, "", "", " Linear terms", + 6833.77777777778, 6833.77777777778, 1, 13.8804287816484, 0.000541387947404092, + " Speed", 2116, 2116, 1, 4.29791372459861, + 0.0439141309793144, " Pressure", 169, 169, + 1, 0.343264375924936, 0.560878208408529, " Nozzle", + "", 24043.7407407407, 2, "", "", " Squared terms", + 4306.7037037037, 4306.7037037037, 1, 8.74756188843468, 0.00492545805087858, + " Speed^2", 19737.037037037, 19737.037037037, + 1, 40.0888858054785, 1.00380594014704e-07, " Pressure^2", + "", 543.583333333336, 3, "", "", " Interaction terms", + 0.166666666667879, 0.166666666667879, 1, 0.000338525025569461, + 0.98540184886942, " SpeedPressure", + 198.375, 198.375, 1, 0.402929411681119, 0.528794574263472, " SpeedNozzle", + 345.041666666668, 345.041666666668, 1, 0.70083143418008, 0.406928561138628, + " PressureNozzle", + 492.331893004115, 22154.9351851852, 45, "", "", "Error", "", + 55861.0370370371, 53, "", "", "Total")) +}) + +test_that("56.2 Data example 3 (response surface, two outcomes) - Cost Uncoded Coefficients table results match", { + table <- results[["results"]][["Cost"]][["collection"]][["Cost_tableCoefficients"]][["data"]] + jaspTools::expect_equal_tables(table, + list("", 325.648148148162, "", 0.204046185282406, 252.405013309973, + "(Intercept)", 1.29018098284855, "", "A", -10.690277777778, + -427.611111111118, 0.0103445869391715, 3.98181749804874, "Speed", + -2.68477341892657, 446.500000000037, "B", 50.0999999999997, + 500.999999999997, 5.43884056833538e-06, 9.62330859388601, "Pressure", + 5.20610967747931, 163.000000000001, "C1", -45.0462962962947, + -135.138888888884, 0.217976561749922, 36.0176413208199, "Nozzle1", + -1.25067313250898, 4692.25000000024, "C2", 28.5092592592587, + 85.527777777776, 0.433078949880629, 36.0176413208199, "Nozzle2", + 0.791535986638275, 4692.25000000024, "A^2", 0.0473611111111117, + 1.89444444444447, 0.00587968269999673, 0.016319289653662, "Speed^2", + 2.90215518666795, "", "B^2", -1.62222222222222, -16.2222222222222, + 1.96212230408646e-07, 0.26110863445859, "Pressure^2", -6.2128248864152, + "", "AB", 0.000833333333334677, 0.108333333333508, 0.985681300491276, + 0.0461579215130072, "SpeedPressure", 0.0180539614007499, + 446.500000000037, "AC1", 0.19027777777777, 26.4486111111101, + 0.479172295252194, 0.266492884107683, "SpeedNozzle1", + 0.714006974013173, 446.500000000037, "AC2", -0.0930555555555526, + -12.9347222222218, 0.728694435426281, 0.266492884107683, "SpeedNozzle2", + -0.349185892400606, 446.500000000037, "BC1", 1.24999999999997, + 23.7499999999994, 0.247548766895022, 1.06597153643073, "PressureNozzle1", + 1.17263919089756, 163.000000000001, "BC2", -0.983333333333321, + -18.6833333333331, 0.361549407955619, 1.06597153643073, "PressureNozzle2", + -0.922476163506097, 163.000000000001)) +}) + +test_that("56.3 Data example 3 (response surface, two outcomes) - Cost Discrete Predictor Levels table results match", { + table <- results[["results"]][["Cost"]][["collection"]][["Cost_tableCoefficientsLegend"]][["data"]] + jaspTools::expect_equal_tables(table, + list(1, "C1", 2, "C2")) +}) + +test_that("56.4 Data example 3 (response surface, two outcomes) - Cost Regression equation in Uncoded Units table results match", { + table <- results[["results"]][["Cost"]][["collection"]][["Cost_tableEquation"]][["data"]] + jaspTools::expect_equal_tables(table, + list("Cost = 325.65 10.69 A + 50.1 B 45.05 C1 + 28.51 C2 + 0.047 A^2 1.62 B^2 + 0.00083 AB + 0.19 AC1 0.093 AC2 + 1.25 BC1 0.98 BC2" + )) +}) + +test_that("56.5 Data example 3 (response surface, two outcomes) - Cost Model Summary table results match", { + table <- results[["results"]][["Cost"]][["collection"]][["Cost_tableSummary"]][["data"]] + jaspTools::expect_equal_tables(table, + list(0.514856065416552, 0.376163467067314, 0.615546315990475, 22.6126710588604 + )) +}) + +test_that("56.6 Data example 3 (response surface, two outcomes) - Syruploss ANOVA table results match", { + table <- results[["results"]][["Syruploss"]][["collection"]][["Syruploss_tableAnova"]][["data"]] + jaspTools::expect_equal_tables(table, + list(16677.5451388889, 133420.361111111, 8, 18.4474907805641, 7.11868287266709e-12, + "Model", "", 2154.69444444445, 3, "", "", " Linear terms", + 1406.25, 1406.25, 1, 1.55549175218102, 0.218778715472802, " Speed", + 400, 400, 1, 0.442450987287045, 0.509336803585456, " Pressure", + 348.444444444445, 348.444444444445, 1, 0.385423971147827, 0.53784658349265, + " Nozzle", "", 128489.416666667, 2, "", "", + " Squared terms", 59784.0833333334, 59784.0833333334, + 1, 66.1288167372108, 2.21684744052923e-10, " Speed^2", + 68705.3333333334, 68705.3333333334, 1, 75.9968564130471, 3.18756375741766e-11, + " Pressure^2", "", 2776.25, 3, "", "", " Interaction terms", + 425.041666666664, 425.041666666664, 1, 0.470150262636992, 0.496435508498772, + " SpeedPressure", + 1700.16666666667, 1700.16666666667, 1, 1.88060105054798, 0.177065829112353, + " SpeedNozzle", + 651.041666666664, 651.041666666664, 1, 0.720135070454172, 0.400591317242241, + " PressureNozzle", + 904.054938271605, 40682.4722222222, 45, "", "", "Error", "", + 174102.833333333, 53, "", "", "Total")) +}) + +test_that("56.7 Data example 3 (response surface, two outcomes) - Syruploss Uncoded Coefficients table results match", { + table <- results[["results"]][["Syruploss"]][["collection"]][["Syruploss_tableCoefficients"]][["data"]] + jaspTools::expect_equal_tables(table, + list("", 1894.69444444448, "", 3.67539211300177e-07, 314.554222132801, + "(Intercept)", 6.02342715859196, "", "A", -42.6687500000005, + -1706.75000000002, 8.30873548420183e-11, 4.96225288613952, "Speed", + -8.59866495703636, 446.50000000001, "B", 86.4166666666658, 864.166666666658, + 7.39436893500888e-09, 11.9928376595922, "Pressure", 7.205689689091, + 163.000000000007, "C1", -16.9444444444391, -50.8333333333173, + 0.707704590783008, 44.8861969901336, "Nozzle1", -0.377497885333517, + 4692.25000000005, "C2", 109.861111111109, 329.583333333327, + 0.0186453946980925, 44.8861969901337, "Nozzle2", 2.44754776474508, + 4692.25000000005, "A^2", 0.176458333333335, 7.05833333333339, + 6.50260075782852e-11, 0.0203375574654827, "Speed^2", 8.67647620088218, + "", "B^2", -3.02666666666666, -30.2666666666666, 9.31517935208782e-12, + 0.325400919447723, "Pressure^2", -9.30134638772251, "", "AB", + 0.0420833333333381, 5.47083333333395, 0.468482798511116, 0.0575232991864556, + "SpeedPressure", 0.731587616296651, 446.50000000001, + "AC1", -0.137500000000027, -19.1125000000038, 0.680967457018566, + 0.332110922699755, "SpeedNozzle1", -0.414018301121443, + 446.50000000001, "AC2", -0.566666666666656, -78.7666666666651, + 0.0953454884663746, 0.332110922699755, "SpeedNozzle2", + -1.70625724098497, 446.50000000001, "BC1", 2.59999999999989, + 49.3999999999979, 0.0569946813000773, 1.32844369079902, "PressureNozzle1", + 1.95717742348271, 163.000000000007, "BC2", -3.11666666666663, + -59.2166666666659, 0.0237654640924297, 1.32844369079902, "PressureNozzle2", + -2.34610370635434, 163.000000000007)) +}) + +test_that("56.8 Data example 3 (response surface, two outcomes) - Syruploss Discrete Predictor Levels table results match", { + table <- results[["results"]][["Syruploss"]][["collection"]][["Syruploss_tableCoefficientsLegend"]][["data"]] + jaspTools::expect_equal_tables(table, + list(1, "C1", 2, "C2")) +}) + +test_that("56.9 Data example 3 (response surface, two outcomes) - Syruploss Regression equation in Uncoded Units table results match", { + table <- results[["results"]][["Syruploss"]][["collection"]][["Syruploss_tableEquation"]][["data"]] + jaspTools::expect_equal_tables(table, + list("Syruploss = 1894.69 42.67 A + 86.42 B 16.94 C1 + 109.86 C2 + 0.18 A^2 3.03 B^2 + 0.042 AB 0.14 AC1 0.57 AC2 + 2.6 BC1 3.12 BC2" + )) +}) + +test_that("56.10 Data example 3 (response surface, two outcomes) - Syruploss Model Summary table results match", { + table <- results[["results"]][["Syruploss"]][["collection"]][["Syruploss_tableSummary"]][["data"]] + jaspTools::expect_equal_tables(table, + list(0.75824868470439, 0.698777409935859, 0.808423485992158, 28.1805462656542 + )) +}) + +test_that("56.11 Data example 3 (response surface, two outcomes) - Cost Interaction: Pressure x Nozzle plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Cost"]][["collection"]][["factorialPlots_Cost_interactionEffect"]][["collection"]][["factorialPlots_Cost_interactionEffect_interaction_Pressure_x_Nozzle"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "interaction-pressure-x-nozzle-56-11") +}) + +test_that("56.12 Data example 3 (response surface, two outcomes) - Cost Interaction: Speed x Nozzle plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Cost"]][["collection"]][["factorialPlots_Cost_interactionEffect"]][["collection"]][["factorialPlots_Cost_interactionEffect_interaction_Speed_x_Nozzle"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "interaction-speed-x-nozzle-56-12") +}) + +test_that("56.13 Data example 3 (response surface, two outcomes) - Cost Interaction: Speed x Pressure plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Cost"]][["collection"]][["factorialPlots_Cost_interactionEffect"]][["collection"]][["factorialPlots_Cost_interactionEffect_interaction_Speed_x_Pressure"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "interaction-speed-x-pressure-56-13") +}) + +test_that("56.14 Data example 3 (response surface, two outcomes) - Cost Main Effect: Nozzle plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Cost"]][["collection"]][["factorialPlots_Cost_mainEffect"]][["collection"]][["factorialPlots_Cost_mainEffect_mainEffect_Nozzle"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "main-effect-nozzle-56-14") +}) + +test_that("56.15 Data example 3 (response surface, two outcomes) - Cost Main Effect: Pressure plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Cost"]][["collection"]][["factorialPlots_Cost_mainEffect"]][["collection"]][["factorialPlots_Cost_mainEffect_mainEffect_Pressure"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "main-effect-pressure-56-15") +}) + +test_that("56.16 Data example 3 (response surface, two outcomes) - Cost Main Effect: Speed plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Cost"]][["collection"]][["factorialPlots_Cost_mainEffect"]][["collection"]][["factorialPlots_Cost_mainEffect_mainEffect_Speed"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "main-effect-speed-56-16") +}) + +test_that("56.17 Data example 3 (response surface, two outcomes) - Syruploss Interaction: Pressure x Nozzle plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Syruploss"]][["collection"]][["factorialPlots_Syruploss_interactionEffect"]][["collection"]][["factorialPlots_Syruploss_interactionEffect_interaction_Pressure_x_Nozzle"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "interaction-pressure-x-nozzle-56-17") +}) + +test_that("56.18 Data example 3 (response surface, two outcomes) - Syruploss Interaction: Speed x Nozzle plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Syruploss"]][["collection"]][["factorialPlots_Syruploss_interactionEffect"]][["collection"]][["factorialPlots_Syruploss_interactionEffect_interaction_Speed_x_Nozzle"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "interaction-speed-x-nozzle-56-18") +}) + +test_that("56.19 Data example 3 (response surface, two outcomes) - Syruploss Interaction: Speed x Pressure plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Syruploss"]][["collection"]][["factorialPlots_Syruploss_interactionEffect"]][["collection"]][["factorialPlots_Syruploss_interactionEffect_interaction_Speed_x_Pressure"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "interaction-speed-x-pressure-56-19") +}) + +test_that("56.20 Data example 3 (response surface, two outcomes) - Syruploss Main Effect: Nozzle plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Syruploss"]][["collection"]][["factorialPlots_Syruploss_mainEffect"]][["collection"]][["factorialPlots_Syruploss_mainEffect_mainEffect_Nozzle"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "main-effect-nozzle-56-20") +}) + +test_that("56.21 Data example 3 (response surface, two outcomes) - Syruploss Main Effect: Pressure plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Syruploss"]][["collection"]][["factorialPlots_Syruploss_mainEffect"]][["collection"]][["factorialPlots_Syruploss_mainEffect_mainEffect_Pressure"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "main-effect-pressure-56-21") +}) + +test_that("56.22 Data example 3 (response surface, two outcomes) - Syruploss Main Effect: Speed plot matches", { + plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Syruploss"]][["collection"]][["factorialPlots_Syruploss_mainEffect"]][["collection"]][["factorialPlots_Syruploss_mainEffect_mainEffect_Speed"]][["data"]] + testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] + jaspTools::expect_equal_plots(testPlot, "main-effect-speed-56-22") +}) + ## Contour plot #### @@ -5529,9 +5765,8 @@ options$contourSurfacePlotResponseDivision <- 5 set.seed(123) results <- runAnalysis("doeAnalysis", "datasets/doeAnalysis/RSM3contCCD.csv", options) -test_that("56.1 Contour plot matches", { +test_that("57.1 Contour plot matches", { plotName <- results[["results"]][["Result"]][["collection"]][["Result_contourSurfacePlot"]][["collection"]][["Result_contourSurfacePlot_Contour plot of Result vs A and B"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] - jaspTools::expect_equal_plots(testPlot, "contour-plot56") + jaspTools::expect_equal_plots(testPlot, "contour-plot57") }) - From 35ffbcf1509f32ba5c7a98276af1f732111952d6 Mon Sep 17 00:00:00 2001 From: JTPetter Date: Fri, 10 Jul 2026 15:44:42 +0200 Subject: [PATCH 5/6] fallback snaps --- .../reference_plotobject/contour-plot57.rds | Bin 0 -> 1901 bytes .../interaction-angle-x-ball-55-06.rds | Bin 0 -> 3700 bytes .../interaction-angle-x-vertical-55-05.rds | Bin 0 -> 3757 bytes .../interaction-injpress-x-injtemp-54-05.rds | Bin 0 -> 4128 bytes .../interaction-injpress-x-injtemp-54-15.rds | Bin 0 -> 4102 bytes .../interaction-material-x-injpress-54-06.rds | Bin 0 -> 4143 bytes .../interaction-material-x-injpress-54-16.rds | Bin 0 -> 4115 bytes .../interaction-material-x-injtemp-54-07.rds | Bin 0 -> 4166 bytes .../interaction-material-x-injtemp-54-17.rds | Bin 0 -> 4148 bytes .../interaction-pressure-x-nozzle-56-11.rds | Bin 0 -> 5335 bytes .../interaction-pressure-x-nozzle-56-17.rds | Bin 0 -> 5456 bytes .../interaction-speed-x-nozzle-56-12.rds | Bin 0 -> 5355 bytes .../interaction-speed-x-nozzle-56-18.rds | Bin 0 -> 5448 bytes .../interaction-speed-x-pressure-56-13.rds | Bin 0 -> 4115 bytes .../interaction-speed-x-pressure-56-19.rds | Bin 0 -> 4157 bytes .../interaction-vertical-x-ball-55-07.rds | Bin 0 -> 3720 bytes .../main-effect-angle-55-08.rds | Bin 0 -> 2665 bytes .../main-effect-ball-55-09.rds | Bin 0 -> 1133 bytes .../main-effect-injpress-54-08.rds | Bin 0 -> 2826 bytes .../main-effect-injpress-54-18.rds | Bin 0 -> 2827 bytes .../main-effect-injtemp-54-09.rds | Bin 0 -> 2865 bytes .../main-effect-injtemp-54-19.rds | Bin 0 -> 2872 bytes .../main-effect-material-54-10.rds | Bin 0 -> 1153 bytes .../main-effect-material-54-20.rds | Bin 0 -> 1150 bytes .../main-effect-nozzle-56-14.rds | Bin 0 -> 1151 bytes .../main-effect-nozzle-56-20.rds | Bin 0 -> 1151 bytes .../main-effect-pressure-56-15.rds | Bin 0 -> 2817 bytes .../main-effect-pressure-56-21.rds | Bin 0 -> 2841 bytes .../main-effect-speed-56-16.rds | Bin 0 -> 2814 bytes .../main-effect-speed-56-22.rds | Bin 0 -> 2832 bytes .../main-effect-vertical-55-10.rds | Bin 0 -> 2718 bytes 31 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/contour-plot57.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-angle-x-ball-55-06.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-angle-x-vertical-55-05.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-injpress-x-injtemp-54-05.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-injpress-x-injtemp-54-15.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-material-x-injpress-54-06.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-material-x-injpress-54-16.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-material-x-injtemp-54-07.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-material-x-injtemp-54-17.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-pressure-x-nozzle-56-11.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-pressure-x-nozzle-56-17.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-speed-x-nozzle-56-12.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-speed-x-nozzle-56-18.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-speed-x-pressure-56-13.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-speed-x-pressure-56-19.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-vertical-x-ball-55-07.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-angle-55-08.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-ball-55-09.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-injpress-54-08.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-injpress-54-18.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-injtemp-54-09.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-injtemp-54-19.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-material-54-10.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-material-54-20.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-nozzle-56-14.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-nozzle-56-20.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-pressure-56-15.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-pressure-56-21.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-speed-56-16.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-speed-56-22.rds create mode 100644 tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-vertical-55-10.rds diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/contour-plot57.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/contour-plot57.rds new file mode 100644 index 0000000000000000000000000000000000000000..fa6705d7900bf0a71adfc85d0ce257b4c0e6851c GIT binary patch literal 1901 zcmaJ*XHXLc1GQ8Fnu1V-Kv@FCuv0`-2&jP|vYJT34n$@IkrCM|Whj``giU2b6WM!6 z7@^2URzX3Q9FRaE1Vl!PVbts0_v7nb`|kaC_ujjEPo5-r=5GKv80REun~RJWM?u${ zbdjen7rX2<7n&d1iS%9Llp~uv-NapAc;Q|Z&6wT29I_IRhDV|9!HX^w+rmv8OOdn- zD5_wzPYNUHB9Ukf$FMJ)+@5|hOm7&xYE|DhI66E73E0hxTpjILgW|S^NAe;cU(!rS zBEhXicc_{~rWnsuUQ*P^Va-F3gD|S=bW>CS$aWN2vBjMRS_FE7p?drrqdJiRVjkFS*UsS22R38tN56ne;K2v(mA|@;DUp^)d=B z9P2|98FIu`HR!8v6x1#$65rX~jA(-fQ5 zHsWpg!p{hFc<{2Au8VpG0v#5MXwlY)iqOrs_q%y4$2G}Il;@4$=mgvz330nKCyL-F zp|e?|8*FkcKfXcm%k=(pGU>g@SwWFYw|_eG72iLF0wzvm-{kkHPHsN*po`0^>J+#Y zb2{0^Xg+B_m<1O+=hVfV9?YO{F75Y^L$+S%U}Lnsjz8~NKso~tAF@J;J4#hsck3SNsAs)Gihaa!`f&KiVer)87{ngS!TxIg zeTO*~B8^#Ayk{J*n6>o9DW`lbglUb1-fAGf|ltt_P@-WI(Ov;Bsj)#|CGGL3x< zqmy%iL;D{w$ZGal9G<`jO6O^`6wX6l^Fw}bc>>HY2?T)*%vMYDs| ze!#k355PP3HvsDdp{2sD!^7zES-_#_UJP=JvKogkxDKL*-_TO|doQ>1izAm09O9nC zAQ_;gxKGEzp!DssmcppTK7LlDv6jjr0S`Nr%L3-Jp5W!b1?^1<1ay&xled7r$y;;2 z$m)WnxT{;P@pwZqP%e#4{_@xplN=M;0Hc4P04LhTrK$T=4DwIz!ebZ_B>hc9zQiu$ z7w+>b07C>ReDOeX&p>lEdQNEsTno$Ic8$k{7u`QN7nR>U9hM?B5gjWu5uGFS|6TX- z-Ns+Iz3u)9_mUD6;l87CL!O)I66drZxLd2I3wx)VS*`;4!|#`4DlTn-Ha7R+#m*4fgT7d zvqU_2*&I{vTj0M|4HOMM!CbNd%&?`SKF)DzNyMJKn_T^I;gK#<>r?%3nmu;%Qr1#o!x#6 z3Lr1vFjcTTw769cD&hKwqaZx;eErzl;eK#X_i&ExV%_kTo3j5Z=}vdxOzNUk@shpe z(^3;X2>NL=!+?|jcB0~$>YT@zUUSL>N%;!#Q^m_BYgKsvTM!Bo<(_RmvrpZN2=1xoyXn&ghqOz#rFHH=+0SvLki;L#dwom}MAe#SPb=?vT?<2ew~%}^sT1DK z7{^DL=_}}>ROEKFI{Luq*_3|p?$gWiffbv$sUA420J3TLdV)NUzM+fK%uP8r&yq`ykYndi979IYFlZ^L{rn~y j3!y-x%N$Uu>-0mNjpzitcz^%C#EC%8qz4bcIdkSOGX%C= literal 0 HcmV?d00001 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-angle-x-ball-55-06.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-angle-x-ball-55-06.rds new file mode 100644 index 0000000000000000000000000000000000000000..6d9ce0bc3c36ebaff076586753d84d4189509626 GIT binary patch literal 3700 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 literal 0 HcmV?d00001 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-angle-x-vertical-55-05.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-angle-x-vertical-55-05.rds new file mode 100644 index 0000000000000000000000000000000000000000..0cf2253659f7aaac8c844047d4675a0850a2840d GIT binary patch literal 3757 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 literal 0 HcmV?d00001 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-injpress-x-injtemp-54-05.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-injpress-x-injtemp-54-05.rds new file mode 100644 index 0000000000000000000000000000000000000000..5afb0c6129cacbe66fb4ac1565a68429a77929b7 GIT binary patch literal 4128 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 E03}#ACIA2c literal 0 HcmV?d00001 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-material-x-injpress-54-06.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-material-x-injpress-54-06.rds new file mode 100644 index 0000000000000000000000000000000000000000..7afac86ffbc081de93d006d266c3850ccf7107fb GIT binary patch literal 4143 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 RZ|2G){2z~$%_nzS006%%CY%5O literal 0 HcmV?d00001 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-material-x-injtemp-54-07.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-material-x-injtemp-54-07.rds new file mode 100644 index 0000000000000000000000000000000000000000..4aadf8e4004c6eb38901e390602b654fe4bb7261 GIT binary patch literal 4166 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 Q=Bgw79}UIC-Y; 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 literal 0 HcmV?d00001 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-speed-x-nozzle-56-12.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-speed-x-nozzle-56-12.rds new file mode 100644 index 0000000000000000000000000000000000000000..1f66acc6222ac93c6a6002a622f6297cd20229a7 GIT binary patch literal 5355 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 Dy-0sS literal 0 HcmV?d00001 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-speed-x-nozzle-56-18.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-speed-x-nozzle-56-18.rds new file mode 100644 index 0000000000000000000000000000000000000000..7d04297bca2b39f11d5509941aa7de5a4885132b GIT binary patch literal 5448 zcmY+_Rag|>qKDz38-^UDJ471kRvH0mq(MOGp&1w&8EWY64rxRNkRD1vLMcfBDT$#Q z&fmTF+2=XySr@-`_pPg!F%}o_uY-M%hht2>aM2S*Ri;h}qy)ZHfE-CMNAT%lp{vCK z*=b%7;Ma79%=;=)EWT-|A>uJMd}3#gHH9_GQq0uE5=KdCO?l7h9^TXLcHa%XmGxa6 zyCmAqm+B6%-^vX*T8fYoOY)%ppk_TSl$@CwClEan5#^sHVUt;!t*W4_i{K&f#nYro zp;XtkQdGuHI1OlI{1|+oYD|j9qQC~jOu8cBoa`YjZa5?=c5WAg?d`&tpK5<{iKz6L@}b;;m9WC$ z;*#q-uvld?k@aFyP(0!ta)5~s8!QNmRWKu5r-s=w!9&Hd{|**-v^d9l=HC%1PPJ|f zvt@=yBGh0xrOPRDc*iN|lVE+<=|E)BNeY}<%ekU4%9b_2`E5e{eq)l1Xw#7L1q=ZM zGq0a4fP0bmCOZQt)Y_>du#c9KKfse7^UqL~DOk~3G3%glIc2cN@1d#m&7lISl`HQK zG8lw12+WFBb_{JFQ3ix0yz40{t}!y3T@g>geZ5C^h}E5+(U!bwj@-g z?tf~zTU6L3JNOgRd9S(_WO?K52T2Icoe$A8ym#+2&40k3m6TZGYE!UkJGrYtXO|Js zHqkNo{+U8^q$FeY=@JQt=k>`Vlp(Cqz$@Z5D1e&wIF<33gKF>-4YuBlPrtF(qb+D` z!u@W6IL_g)uc{dore@yfy*wLb1u6f`#QOvAY}1t0_nA7zs7h=3-OKk_f0SZzMx+R_ z7P+1%X?WAj52=)Q7))Rcv3lOy%^hNa7PAN@7G^>gHDWA8WC@vmx2cb}O7*_z-5HV) z15|EzDv1$(YU$0$AbOHMk3H!a9@*u)6MAGq1^K^JRd_4gYycdc-y*z*rz zlQY0v;A>H*NmX2l4&4g_Q?v-8=HN-8T>M`ekabd;o%x142PND(Juc`E77_)|erUpY zk%Cp}uYrJ{!oA%#yW)d8KB(VI&#qU_@cf)cYHwz8iSrZUj399^v;;$V*Td+~Vs>Ar@+SO)fmZUHyiGARi+c6=U?yKzQQgGu6r~5Cn5*?pIXx47 zYjF47(!0a}zvj2Aw-B8LKmUsh6YJiF{qlPhnf2Ml^HYy> zD9NB(OuD5b56^h;ySnuA85BhV7iVdB-Pp&2ZyEQBFAdXJwIl&tTW)5Etjrz#IXGuJJw8y5&quwLrY1z_ZCY-qy zXq!)fPTe7CSMD(HDX_mcwiPuk|JY@HSF{JAmgpR*+!&yo46>}cP%k0-P_E&!HUUL< z^xdMrtYQkSMswLyTu3S;qw)FiTo|BVPCtg{riNkQnz;Ua=%7%x*L$;U8Zt?j@1>Sd zP0;_;BDwmcL?Oes+Hm2LDK2~F9mP)}kTRpbm?*Cv<_2mI{wtlxDt+vZ!%2bISPe1m zWA!wAyf}&GP;LSv;8NZD{hqmdQ(k6zO8_Bakf9jvJde3~vdE1d?<>#kXkpgmEvDle zrE0h<3;3BtKcp^Ji*dBq@kgwRB7Ak2B+9=0TWAQ@34OX4ybn`TQOEvkSm8&0{R3?* z1(;gqkD9%EVEZ?(nR%1Gi=xz^RPF*2a!+%zGG!g6X_4LJEwqFDsx~slhI|ra)4Mf} z{w?;w=A`Lh$GSTT1~I`T@*x{fUF6x1&4?c_O9{8Y*K`UH7M$HC7ATdN7LdO@oGbJb z;22l%Rjw+dfQGTCgmrqGUwK2Zd&Wx{_m!SqWTUiCjGttqxE>#z*D6O_jVgVpy@J$N zn=$=`l-k=pJ*g%|MZ<@sT*PXQ!Er``g6NqNU3@E@?YP78=x#50&SM1iALRDahesGlZg8k->q`1Cug@#?BYjsYio>MJ& ze5_MT zEPa)nd3cMZ@h{}~-?qy#-;QbrvU5IQXYOp{s;MeIu(EL+PS8N?p}^$C2)4~t0~@3h z(aSJZARfyxh!cr1gkKZD`VWI@!`&Z|u(?kV1piqJISb!QGZ-Q;$gE-I!C4?Cfgpy2 zalk<;X5tkEBXWvVMTL$Y?1fZf<)Z;l{To6XASfI`{ci{fk%GV>c{&X6KZA7WB^^0f z^Y2ikBLF``HUftfm)PEKUXl(U5f2|J>|BXZ6b!%?!w@V;1E#ts*Ypej&p;JqB#eMG zV*;+>7EHAex-LvS5EZ?C`aEWWMCNx1@INVkoBogEf5QIDvCV%|{*M2o{B8Po%Di%9>mSP}WVc_WOpev15m@1w0n z2`G5QdH#(^=@Kr>lY~9HA0K*<=}NADB#41seG~RMgF?6%SbF8V=D6&&5Qw8qb_29F z-$U?}0W;0~$_^4FtZ58I!dssc4>G>%z7V$uUCAxfvFyY+#MD>@xfs{uzh$cGDlq-FN)63gA?heUuKzx)_cZs`Ms z)r;$$fJ<+Hg>O#T{I?A~zwGnc6vULW-4E(v7Y>!z|d9GA<6Te#w^Cyk7hC;PN2 z8HB+hqWx;HLPTC?XrC=`KnwRZVQ6kV4$}|AZz@xtDf|5D`@OpB!%-=ka*`GFoln83w%1t$muu3_Kex-y+y>wo?2WD#D#NB#?jNetn-xfocUmTeS-S26nEf zW{<6qtTdAo`wpCh`gFPs(C@LJ&N@51IvpwfmL}qYcf1+6+RkW4Ulm|zc0fQ*Wns7P zmkxhP(!1A!yL*hQS@#*yU7ibZhJ2^=Ye=KQg!{*Kr>$lKh!=fIYpw0V@1eeRVv%SU zN!jyoH?!WLhOvf>`nu5N(^eG&qpQ%)lfn~0pWVJ~q}Z)A+;gkeuDRxe<*l`Pq?)8Miu|`Rl$B`CbyP8Mun! zQZ~B2XZ5r$w+m{?-_O4$U)oP1XI>EBv9}}bNgGEUUf^g48OTM7_`xocQ#S@o{fP9r z2^Gr+mev+F>MEm!VRTEPt}ZljM`Q{ocim|eEe+ZC&BvlpYFppkAjRZKh*PbG2~uo%~+eMhRkGs~z082?Nl>C%B&Z%P^ojTfTIq?qaxGI-5DK zR}CR)-MIi?*rOzC%e|EMo=%RXbJUK{U^%J`XB~r_DTt&B{etfRjxZ)O- zf)EyjWs>UjMIAtF+hH`OYZQ>dQQJOO7QJTHW)+2WmvVQ!)a**`rq1mXi(5Wgz=Tf( zO^=Lu0)|dW`#YOXdK>Rj^_)&U-F3fhbm!EdYw_UUZ$99 zi~sIjOp#sl!F8fRRsn#jwkjyTV|${Xc1W668~z z#(uP8lNYY8=%iFUC$dSmNpShyiuU~|u2E*WxK-|yB|@s^{&?Ve{y?Sx0XGgK{@4Nh5oW*Rk6*d z7s#1MCEi_3kRk5zo*+*zh9{EiDB89C!^iCLAI%EY)ogFk&%z~^_q-0 z`JBgv?Ev3=%*Syfq5$+P#9dWU2Znw+BK!}YU?PFK9_tp*JFLCBS zH>L^Xh0XW6`UWRB0!#_j=2>9;xaTJ`rk5(AN~rMp;#*Ry<;FJW%P`3XZ4J-Pe4I6D z`ybigC|&xF6Bm(iI{-!2cU`sv9{HIviYct^P|={pw{0xXQ5M2QvT-!HUGdMiy&1L@ zq4~OoNljFgf;o&f!Z(R{A+#BWZDD6nKI*ipCnA zQ6tAZL}ef?2qvqjQszf-t*18w4_bM5uJY;a|zaSu#cfNt!xwFYa{{gJdW*YoGy&6wLpQ5JMF+F$@+KE>O=3A z+U;C+=#R(|@yK)9#Z{;ESzpiyrRc)?tfl!A3mQ5R;XdrQ+m?c1us_JwfwSP+jh z2w{UT`J`J>Zo=S7_7$4c=_=`}Z!2gU1SOZPcBy%CU@R?*?z43;e+w|;;f8>kis&)| zo9tIqzC{{Y*rGx|rp4FWna@NCMnp%@lbm`eMk`KHl zB{DT#K#I{AGkm_=r%m6$-pDU_C-o*OA<#xz1f@(!~STQjZ!Zc`kMbfY+kVO({D zbTrR|-6;&MSW8ZF=J+xMLELUB>?rt>j{Dz<~E-Z{XS7WsadM)}MftTSGg} zFsS$N#8>u}HJ0WRt;IfFCha%D51n5n3P0KLOqY1}3Zu&XuW}(M$=1L}f*dYX8S!^L zZalza_O~mRa3Ub$EaEG{_%$%K;O9!&Bbs9Bphs>wJwt;Cj4XTj*wS=Mwfrb)h25z1 zyM4oLXVtTzxN^Ft6;^lE!uu(bqR<0>~-ze5h^#18k_ zNSS461^$t0t`_M^*a$I_C$SlMxFXSd91*}$t z@5})!@$g2#`aVq|DSdXQICN>}HbWkmp;g5XO8EC*F1PvG&q=Q^I#+8)nO^Ar!0VhC z>>^RGO2i|z;g8bgMiVi78~l84;#uGMZkK@JCQGA`(k3aGT=ng#gfvw`UVh@!9@z() zw#_4PQ(=+x@eLjFh*x0+*@@XKuI#uepn~uWfml`sheUh#jdj0HCwLkD5Z(HV&VIm% z*XYV1@>eXs0iU_?EAf%W+?NVRQwif*TB-K0ew{3QNl*z;q4p>ik(9Io_8hoOcW=}l z&QQtC1}aFa^u!;~v*JZ~x431Ty4_Uz#<6A11{}SI9?H0^b*4<;Kw6H5)%jcsIkC&m zJt3<_8D>9KhG0aO$W4CF@0^P`(L?!Tzs_lZh6-9j8v1#++ofzCHgf4Zb>-{Zh~e>N QhbuYyoFvYvU;yBM04R!=y8r+H literal 0 HcmV?d00001 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-speed-x-pressure-56-13.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-speed-x-pressure-56-13.rds new file mode 100644 index 0000000000000000000000000000000000000000..594121737dd9da7b2eb3d129a39974fb2c395269 GIT binary patch literal 4115 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 G&Hn&L9tDU1 literal 0 HcmV?d00001 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-speed-x-pressure-56-19.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-speed-x-pressure-56-19.rds new file mode 100644 index 0000000000000000000000000000000000000000..f4f27bdc362f3da420875f470d9da14df1d01181 GIT binary patch literal 4157 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 literal 0 HcmV?d00001 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-vertical-x-ball-55-07.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-vertical-x-ball-55-07.rds new file mode 100644 index 0000000000000000000000000000000000000000..c9655aedc85bcfbd657882d124c24ebafb7aac56 GIT binary patch literal 3720 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 literal 0 HcmV?d00001 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-angle-55-08.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-angle-55-08.rds new file mode 100644 index 0000000000000000000000000000000000000000..f1d00788ab5b04d6ef60cc49b4f7b6069dda85dc GIT binary patch literal 2665 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 literal 0 HcmV?d00001 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-injpress-54-18.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-injpress-54-18.rds new file mode 100644 index 0000000000000000000000000000000000000000..aecfc1236327024d5358edbf18fed4c87211caa5 GIT binary patch literal 2827 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 PcHiMYj5#l&urvSwBJ-ve literal 0 HcmV?d00001 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-injtemp-54-19.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-injtemp-54-19.rds new file mode 100644 index 0000000000000000000000000000000000000000..22877076ab2b772b047e63e62be64ef716bf282a GIT binary patch literal 2872 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 TaAR{o%N70uDO$R0z!LxfrF1V) literal 0 HcmV?d00001 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-material-54-20.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-material-54-20.rds new file mode 100644 index 0000000000000000000000000000000000000000..9cafedf95442c85ce2fee0cd5e6c279980439e3f GIT binary patch literal 1150 zcmV-^1cCb>iwFP!000002Gv+kZ`?!_AOCIFX_rb>g@nX~3nwC=DpaUyHrghrQk1S5 z5aq&Z;+;*bcx~67RctQwD{zFbz?~~MR0Kg$KLHZg3L!o~!i;C$c)&e$x%9D7cHGaAq#3MM8jI zfvfHGAAr+GOGxf#owrUDyOaL!H_HcFwD4H29ZO5cU}*WrOj`U)S~Qks@wwdl$@wjI zr2;9x^X%CN!<+74{l}x?jW=&A`G?;>J-B}Vi^1K;U%zdSo;FC^|F7>fN1suN#Lj0} z>jzPlV5G3n6bi2JKPDbi7EmT6AYJ?N$0VL@F$fy+D?1d^`x6q;fEJCpYoj;|Xb?x* zJgj4)_M|3rk*b|)VKrMLsYRx;&k^!uiyCIMDsnZQRS><9^Xxt5v`SsfQ2-;6jsc@N z(Sv9YkY$t_Czv4%%v#|ugQ(hM6XYHTc@(n(XGthKT_|@$-zXD|MtNXVWkC%xXYu{K z=oY@(Q_ODa`~Mi95Un#K4S zc;1?0Ud;CwEydK)jSBpI8G-+ zoKlhnIBLxHHnC6W_MGJfQO!B%r7P4*VZpdHHCe+4>blnNZtLNL&j96};riCb_)&fM z`FSeV+Ey%B-{%m)V9F7JBaq;TgyRqw@tmUS!-m-b_Uk)74#_ZPMWD=?Zea^}tm{OIAS-h(b6NzA}UcqQWQlBJL%~r?Gog&1gt&7j0s#VX$wo_3Aw_LyC{0DB z?Zi8~vEsF@@mR4dBsg$D9Jq0SQ@L>G4=9`~5vd1GJs}Xc9uNmkC}qZ;H@2tV>{go~ z#gcbE-t(Jzzxlm4PrL6Rge+vYOk}lq7qxDEwEfz<2$^eQAY1;}CjT*zjXGjJz+)2g z&T1hd%Up+xV*(=4hK}6Y9AV(0rNhCm(QX(MjzQ z4UzZ?EnxdbTZB34h@gjfgsDmYkBxqp=iRM;R9!Y z8D1Y!{z>6^P9X=K3x!@x-JHUnnxjS_9W>;7Ium{5xxOuFqqR!j`BpsN=`F}N9u;G~ zosFLA3@(n5&U8lFL(lh{s90lKD?Y@Ely>ahhkiR|G&~}c2x&c=i+^p&Kcm7sqlqrY z&oz43uxynTxn3m+RgEc57#qJ;4Jjns(~&$gkZWib0M-GLJADCgR?tP|_gNxvBE-}4 z{vU7VkKUr$19#)GG_AE48F&LbNO_+wuVr_>?B2V7 z^26!_+`ZTP@vU3*RVBau-oK+iH^1)g|Mb;^lW&sl{_ckl-!Z?}LS*ItzW!QOiAp_o zI>wd07nCVUPG%K_OeoBms!UmRnUJ!o+KbmnINsrIX!BS07-k;~NWeUnX|mPbF!q=i z1{FE1W1{9XD6^NUp=w8CHl9WW-O|3`wIf@knW>bX>vUXv)R-mh5qDZ8JMJie5lP2@ zt%Af}Fal&bE&37W$O1c-#K$mIZc+!iBS78_y?~t)%B@K#PljGA9t^EmFv{Yf23c$R ztvv1Sz2t|tA`b5+4n|~K#?*P7pzc1p>@ZysFl|v9(gRHA1WCvtCp4r(m1qj$miKcp zehfTs%rVdB?8}y7YU|nHmRPSZd;?4QM3g5Tc_rsFR4}=?9g6AYe43Oe2RK-IAoRkJ z4tkg}5_>q%q@8W-5_Ub|d7-HPT4?5)wp5rhZcI&9?}oZ^tM{*U^TusJd9Sy*v(?|P z5AV!VRDGn1cRYK1VSLf0rC4j&ccMD^4}110@$zYx!5PYkcUK&gh>ohBGr~) z4L>|4kd@nGZ!qvxNuTgi21Kg5FtgWHFp&VZ>SUZIgt{bRN?L}UBl`WJ7hu1Xs=~z) zeJRyy3r~gg1hn%1Jxb=YL&7{)m0pZ>Jygar&2Cvp~jW(K7BlJ@Zd@s$BiHbVP?xb>MhB5wIbPDr@1 R1)%u~{{hvIjLh{D002^!G+qDz literal 0 HcmV?d00001 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-nozzle-56-20.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-nozzle-56-20.rds new file mode 100644 index 0000000000000000000000000000000000000000..6bed206b867c837d8cdc06ca0428c9d204ba227d GIT binary patch literal 1151 zcmV-_1c3V=iwFP!000002Gv;2iyTE1ul}0d=}p#vNJK?*^peFW5fx!3jJrWtk|k>} zo`%|lg+LI@LCr-k8>_nORaciiI}>I% zunj%+@m{~G_p9G~^_W{eLdZd`XCuesUF6+-XXD~)2-#1Hfo%EX+Wf~tE^3SU2#-j{ zJLgIvI^?fVbh$Cn3Z=sGhx`X#sqcW1oe&4Nj~GZ3sQ#>qxz3;Ez-;H1-~UlOKbftu zMe9;S2RXGRy3%fU8CIx66@)kgsBAg;#0Vz|8T1D<3sS;}oL-8?Ba+fU0$ME7eNlSw z&)tt-x1avEd;Yoizq`tEmp<+=%n^;8jlk> zSPp4K*d&47w8eOz4%i-OZ(X^zz6n6&(3uz>x6^ok4G3~pcr6d#DHUzlGko9=FvDxZ zlz&osUQozK$3me;Q@3ZZr{<^?Ne3B_Z9I;)K=tO*f>FY|TdU$Uv^4SprxGNbd9zz*$8nmEY%yz^M?=&ii*? zDIT*$^9OF{jx=qwCmDFs^54>;CENC~S-vlQIh2-{7PmYrSx9;J&3n&&^TU_jSC_qK z{(A6p_l@rFUu|}t2l>H;2cJdv(5DA4|MAK8FIT@lxJddR-Tc)vLS*%EUw@u1QK`qx zM_B9As7gt4a-u0rgu;TU%9d4^4Jk|4UcO4=(I$7pm_M`4FnfDIB1YN7ke%C#GswS{M$KtZW-nDk)sDt)JPi%q%D&*WFI!}o(Mr#?bX0!Sm?hm^?zBpF+))4{k&Xdd z1&L|23&?U>^b^dH1$L~6k726XqzQ6cfV>sch#eEk-ZYe_LvIuhmQgHNRdG;*%$t2H z&$@e0`QfdK!@Gf_U9ur#>Nrl&bRV5|n9c~8*3&djcW}BONJ0)dp&=crL{k#Cx}VGO z9pHImj`@GiK5Z$cww?=aiS_!zH?UMpBt_DZS8_3v3MQAgLpgo6m?qW90S=BC2)#H? z2R)oJl2IHP()I=p2)j1sd7-TTJT!MrTPe&KH>M`1cU@h%`u*$Nxc)AnyxqI9x!%83 zAHKIpja%D_s%HZM5e$X`5eR_zM+sM3pZuIeer#OSF4qqk&*IRznAc-gt~Jl8zWP0w4o zj;UU*`MHV1QeJ~xujl-{f&~nhCvp^h<_4tsk`D0>36%j(Hj?%QaqBZ#LW1gxf{<`y R3qXq%{sW+zM052M003vKGOqvt literal 0 HcmV?d00001 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-pressure-56-15.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-pressure-56-15.rds new file mode 100644 index 0000000000000000000000000000000000000000..c9c0364534e359a13fda702de4cf260cf348b60f GIT binary patch literal 2817 zcmbW%`6Ck!1IKZeJ6CjIY*CK6bFJl$XpZGJLXINBn0w5M5(;z9H@AqAB=;F#*D&{e zUlYpA5yJ3%pXd4Y`RV!m1Mi<+AMhI%y8n!clELA_YYA$BZZKCWh5gLCT+XTFK62A5 zsoF=z;k?jXtNESEBjaHe&k--y0{H!5_qO|`Y?JdA+N}ncdI%Smf7e#{Ojn>Kz)dey zb*Z0nm!r|^8+p%dy*V$=dLMj0%12UvyRs!`O*J3ls5Pj=Q_cBitei}oIEzSZbo>&p z=`H`X=pheRLpN>)9N>nd0eC3vm@6S#Y&jjRYGYWpK|)q1)gp4(`HZ2R1?=sWpFQ)> zXCdMT*4>c2VLjWldoQEqjTqQr%l&usMv4@uJW{&DOQ}4UPS}5?EN=QO$&q|Tk~qs! zShCEv$%!PdoK}3KyCxSMM_^k z60D?@IUGw>f&6W7w#O}ht>mhX(`bbq7jh@UzUwu82L3KeHlzQbC#;g%+4`&?zxP`|a8}abDeaUd{q0zl9naE1tUsQD5lp)RzkF#|C zYEZ5U5pqlt!Z)g|Je1$C5?Vj03+6~ zyw|T1HM?!e^l8l6O(IWAWe;X+GKs_S8z|Fvf5ut9uXDFupW&_!6QAaJzB0s|qZ3gr zDm5qaUEihnYGN_^ez6n#$maDt@6Z)MackZH2elvr$bETO9{`ePlR2 z*xTwqE7QtJ&r!ISbg_Q?-T>m%8SwOkv8-wG-Y?_cpW1sFl#NmB*k+L!m5DRXcUF*4 z2_xVo+HD0@^s_D&nvSWIjKD4bf*)sG-Vh+X?~nQWe#RIgq!GckdRy;Hja5jRPo*Tz zbO|6E0jzxs-7JCjuND)0A2kDx$dE`i!w}MyPU}RFnH43!Ogs!sYUWxE zR>K-Q`H?JX;LJ5H_%{EwwFNaGONddn&`E3C9tJrAP4EaK{{6ImkxBl`>jhir9F7$f%Kaa?P(z`}ehH=U){& z@)dU?1Y@A-Zrhwu!MeZWv;|wc7}X7YT*7gSt63c0L{!ma9_4qWuz<7FxElRFv-$=u zFLOxuFZ?JhN^+~ye6Xh3Sf=qW3DCyfaQ+KA{(7T6`U2-ys8s4aV?&Vp=~$a_Ov zPnM%j=^uE>*TuCFv6+`)5VQjMF|qIlA>Qr|njiiYtUT?;F}=ox#L-hC|ChY~qJt!w zixB?0?2+>km5Y7Jr&%fur97-mc+sT65BopKi{)Zn-(wq}<{%F0-&Q;Y{{y}|G5LnL z{(rzTqS?roiT}cRh=-B8EF{{tytw{2SKbi_Ijf$BZPTT$o>}r>p9e8h-y* z=%Q8{l4%;-ReY^lgZ|FUGq0a=8jRTC51q^YOa{uOGY7BMgwRAQz$V^UJ$x-+Ly37|)7a z$fcf(XwHEW59?BS>wZJv)x!cO06mHA2DBC+}eM9HFiMGZq=_x8O-+MsAE1+=hpHC?}IT(3a4 zSL)WYaIDWH-B{$*-Y+imbv-Dc{O<~&RzTUGA?mle+&dr5O4T26bVxOK&#ASsh$io^ z98k@*yPI#IGQ+lQOx83NY*aOYqxzvIY+Z1z3q?UJMt!*(^pv4+ z_ha(tU(;m7tn`eO@AQ50lKF%126 zF4b#7CxcH0w=`}K3)}#BX&-$@6sR-5(?D6cO{nJH0-XfAR?&@8Maj~=81U#T=&mfG ziB43`a)IwV1Za@Y(9l&vjabgV5qBCVYf@U`F(teem7gY)aixK$?P`ZUSChoqp7)au zhKWBl3i&{f?%c*P(ByK z7pbWIJt4KugZ2EZ&-g@SNZG&WbOz|J4|{UE+(jaxSTqY!(iAl!O}XkS4u6)m7jH`H zurpm0Zc7#HlCW9*I<2mmoaW+Pxcaa}!?PEEt=f`!(eqMNv9znn$ji-Ljw(V>1`ws> z(#SLHpwrixehic5o5wB(TAKsjf4EENUHWv>UegqAqz)BhR}egA78v)vAoch&O=WE@ zGX54cVX9_^n-~54>6eG3Q8=f7Ni}XZ zK~8H+`i)%^Zz*@KlDG_GTZw`EI~Y61pfHzcaMK$hx+pxe(7SxLSX$Za;vvcco|rxI zt^PVrJFia3LW!1QPr>WQEN`KlEZSMe-s;tI`y>VSxK<}R=x4oVq4hGIU+u{*uEwi; zYSDiEvZ>#6?MFUCx#_IBXFMhrnCkMZ)Y4MrTr6BjJ$305t>R)cv<+;Ok`+1{EJqPb z>Aee6KbzK?>`)Bxs~SU01FFtq4AqjmroYy`8Uqj445m?E-=QBkl+IJLdV~A9nuk>m zCLVzU$T^rDAPtLR`5CGcyx;f9qFy=>$KXe6j7g71IBfSx8J)i2%TNt<8 literal 0 HcmV?d00001 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-pressure-56-21.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-pressure-56-21.rds new file mode 100644 index 0000000000000000000000000000000000000000..31d55426de09a297a09e8ac4dab42e3728188932 GIT binary patch literal 2841 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 literal 0 HcmV?d00001 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-speed-56-16.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-speed-56-16.rds new file mode 100644 index 0000000000000000000000000000000000000000..1e15cb27170aa8d055655fbc518e7d42bc1e45f0 GIT binary patch literal 2814 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 literal 0 HcmV?d00001 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-vertical-55-10.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/main-effect-vertical-55-10.rds new file mode 100644 index 0000000000000000000000000000000000000000..e1bf159a20381e979f8883d3f263cf5cc8248547 GIT binary patch literal 2718 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 literal 0 HcmV?d00001 From 47e7d723a18d1d18a6b96a27a9fe2d71634feb6a Mon Sep 17 00:00:00 2001 From: JTPetter Date: Fri, 10 Jul 2026 17:28:00 +0200 Subject: [PATCH 6/6] adress feedback --- R/doeAnalysis.R | 66 +- inst/qml/doeAnalysis.qml | 5 +- .../_snaps/doeAnalysis/contour-plot57.svg | 108 ++-- .../interaction-angle-x-ball-55-06.svg | 420 ++----------- .../interaction-angle-x-vertical-55-05.svg | 412 ++---------- .../interaction-injpress-x-injtemp-54-05.svg | 416 ++----------- .../interaction-injpress-x-injtemp-54-15.svg | 420 ++----------- .../interaction-material-x-injpress-54-06.svg | 416 ++----------- .../interaction-material-x-injpress-54-16.svg | 420 ++----------- .../interaction-material-x-injtemp-54-07.svg | 420 ++----------- .../interaction-material-x-injtemp-54-17.svg | 420 ++----------- .../interaction-pressure-x-nozzle-56-11.svg | 579 ++--------------- .../interaction-pressure-x-nozzle-56-17.svg | 587 +++--------------- .../interaction-speed-x-nozzle-56-12.svg | 587 +++--------------- .../interaction-speed-x-nozzle-56-18.svg | 583 ++--------------- .../interaction-speed-x-pressure-56-13.svg | 416 ++----------- .../interaction-speed-x-pressure-56-19.svg | 416 ++----------- .../interaction-vertical-x-ball-55-07.svg | 424 ++----------- .../interaction-angle-x-ball-55-06.rds | Bin 3700 -> 3384 bytes .../interaction-angle-x-vertical-55-05.rds | Bin 3757 -> 3428 bytes .../interaction-injpress-x-injtemp-54-05.rds | Bin 4128 -> 3821 bytes .../interaction-injpress-x-injtemp-54-15.rds | Bin 4102 -> 3779 bytes .../interaction-material-x-injpress-54-06.rds | Bin 4143 -> 3837 bytes .../interaction-material-x-injpress-54-16.rds | Bin 4115 -> 3801 bytes .../interaction-material-x-injtemp-54-07.rds | Bin 4166 -> 3839 bytes .../interaction-material-x-injtemp-54-17.rds | Bin 4148 -> 3814 bytes .../interaction-pressure-x-nozzle-56-11.rds | Bin 5335 -> 5003 bytes .../interaction-pressure-x-nozzle-56-17.rds | Bin 5456 -> 5132 bytes .../interaction-speed-x-nozzle-56-12.rds | Bin 5355 -> 5034 bytes .../interaction-speed-x-nozzle-56-18.rds | Bin 5448 -> 5115 bytes .../interaction-speed-x-pressure-56-13.rds | Bin 4115 -> 3800 bytes .../interaction-speed-x-pressure-56-19.rds | Bin 4157 -> 3843 bytes .../interaction-vertical-x-ball-55-07.rds | Bin 3720 -> 3386 bytes ...st-weibull-distribution5-subplot-1.new.svg | 133 ---- ...gainst-weibull-distribution5-subplot-1.svg | 211 ++++--- ...ess-capability-report23-subplot-10.new.svg | 135 ---- ...process-capability-report23-subplot-10.svg | 215 ++++--- ...cess-capability-report23-subplot-5.new.svg | 157 ----- .../process-capability-report23-subplot-5.svg | 259 ++++---- ...ss-capability-reportw18-subplot-10.new.svg | 145 ----- ...rocess-capability-reportw18-subplot-10.svg | 235 +++---- tests/testthat/test-doeAnalysis.R | 60 +- 42 files changed, 1575 insertions(+), 7090 deletions(-) delete mode 100644 tests/testthat/_snaps/processCapabilityStudies/probability-plot-against-weibull-distribution5-subplot-1.new.svg delete mode 100644 tests/testthat/_snaps/processCapabilityStudies/process-capability-report23-subplot-10.new.svg delete mode 100644 tests/testthat/_snaps/processCapabilityStudies/process-capability-report23-subplot-5.new.svg delete mode 100644 tests/testthat/_snaps/processCapabilityStudies/process-capability-reportw18-subplot-10.new.svg diff --git a/R/doeAnalysis.R b/R/doeAnalysis.R index 6882bd7b..8cb6733b 100644 --- a/R/doeAnalysis.R +++ b/R/doeAnalysis.R @@ -102,9 +102,17 @@ doeAnalysis <- function(jaspResults, dataset, options, ...) { .doeAnalysisCheckErrors(dataset, options, continuousPredictors, discretePredictors, blocks, covariates, dependent, ready) - # Create containers for response variable(s) - for (dep in dependent) { - jaspResults[[dep]] <- createJaspContainer(title = dep) + # Create containers for response variable(s). Persist across invocations so + # display-only option changes (e.g. plot CI width) do not wipe the cached + # model fit. Low position keeps model output above the factorial plots (12). + for (depIdx in seq_along(dependent)) { + dep <- dependent[[depIdx]] + if (is.null(jaspResults[[dep]])) { + modelContainer <- createJaspContainer(title = dep) + modelContainer$dependOn(options = .doeAnalysisBaseDependencies()) + modelContainer$position <- depIdx + jaspResults[[dep]] <- modelContainer + } } p <- try(.doeAnalysisMakeState(jaspResults, dataset, options, continuousPredictors, discretePredictors, blocks, covariates, dependent, stepwiseMethod, ready)) @@ -187,6 +195,10 @@ doeAnalysis <- function(jaspResults, dataset, options, ...) { } for (dep in dependent) { + # Skip refit when the cached fit survived (base deps unchanged) + if (!is.null(jaspResults[[dep]][["doeResult"]])) + next + currentDependent <- dep result <- list() @@ -1524,7 +1536,7 @@ get_levels <- function(var, num_levels, dataset) { .doeAnalysisAnovaTable <- function(jaspResults, dependent, options, ready, coded) { for (dep in dependent) { - if (!is.null(jaspResults[["tableAnova"]])) { + if (!is.null(jaspResults[[dep]][["tableAnova"]])) { return() } @@ -2157,35 +2169,34 @@ get_levels <- function(var, num_levels, dataset) { } .doeAnalysisPlotFactorialPlots <- function(jaspResults, dependent, options, ready) { - if ((!options[["mainEffectsPlot"]] && !options[["interactionPlot"]]) || !is.null(jaspResults[["factorialPlots"]])) { + if (!options[["mainEffectsPlot"]] && !options[["interactionPlot"]]) { return() } - container <- createJaspContainer(title = gettext("Factorial Plots")) - container$dependOn(options = c("mainEffectsPlot", "mainEffectsPlotCi", "mainEffectsPlotCiLevel", - "interactionPlot", "interactionPlotCi", "interactionPlotCiLevel", - .doeAnalysisBaseDependencies())) - container$position <- 12 - jaspResults[["factorialPlots"]] <- container - - # Create one child container per dependent outcome. - for (depIdx in seq_along(dependent)) { - dep <- dependent[[depIdx]] + # Nest a Factorial Plots container inside each response container. + for (dep in dependent) { + if (!is.null(jaspResults[[dep]][["factorialPlots"]])) { + next + } - depContainer <- createJaspContainer(title = dep) - depContainer$position <- depIdx - container[[dep]] <- depContainer + container <- createJaspContainer(title = gettext("Factorial Plots")) + # Parent response container already carries the base (model) dependencies; + # only the plot-specific options need to invalidate this sub-container. + container$dependOn(options = c("mainEffectsPlot", "mainEffectsPlotCi", "mainEffectsPlotCiLevel", + "interactionPlot", "interactionPlotCi", "interactionPlotCiLevel")) + container$position <- 13 + jaspResults[[dep]][["factorialPlots"]] <- container if (!ready || is.null(jaspResults[[dep]][["doeResult"]]) || jaspResults[[dep]]$getError()) { next } if (options[["mainEffectsPlot"]]) { - .doeAnalysisPlotMainEffectsSubplots(depContainer, dep, options, jaspResults, ready) + .doeAnalysisPlotMainEffectsSubplots(container, dep, options, jaspResults, ready) } if (options[["interactionPlot"]]) { - .doeAnalysisPlotInteractionEffectsSubplots(depContainer, dep, options, jaspResults, ready) + .doeAnalysisPlotInteractionEffectsSubplots(container, dep, options, jaspResults, ready) } } } @@ -2384,7 +2395,17 @@ get_levels <- function(var, num_levels, dataset) { emm } - p <- ggplot2::ggplot(emm, ggplot2::aes(x = x, y = emmean, color = trace, group = trace)) + + hasCi <- includeCi && all(c("lower.CL", "upper.CL") %in% names(emm)) + + p <- ggplot2::ggplot(emm, ggplot2::aes(x = x, y = emmean, color = trace, group = trace)) + + # Continuous x: faded confidence bands drawn underneath the traces + if (hasCi && xFactorType == "continuous") { + p <- p + ggplot2::geom_ribbon(ggplot2::aes(ymin = lower.CL, ymax = upper.CL, fill = trace), + alpha = 0.3, color = NA, show.legend = FALSE) + } + + p <- p + ggplot2::geom_line(linewidth = 0.95) + ggplot2::geom_point(data = emmForPoints, shape = 21, ggplot2::aes(fill = trace), size = 3.2, stroke = 0.2) + ggplot2::scale_y_continuous(name = dep, expand = ggplot2::expansion(mult = c(0.15, 0.15))) + @@ -2399,7 +2420,8 @@ get_levels <- function(var, num_levels, dataset) { p <- p + ggplot2::scale_x_discrete(name = factorA, expand = ggplot2::expansion(add = c(0.5, 0.5))) } - if (includeCi && all(c("lower.CL", "upper.CL") %in% names(emm))) { + # Discrete x: error bars at each level + if (hasCi && xFactorType != "continuous") { p <- p + ggplot2::geom_errorbar(ggplot2::aes(ymin = lower.CL, ymax = upper.CL), width = 0.25, linewidth = 0.6) } diff --git a/inst/qml/doeAnalysis.qml b/inst/qml/doeAnalysis.qml index 3aedbd11..7bdde355 100644 --- a/inst/qml/doeAnalysis.qml +++ b/inst/qml/doeAnalysis.qml @@ -341,11 +341,12 @@ Form Section { title: qsTr("Plots") - columns: 1 + columns: 2 Group { title: qsTr("Residuals Plots") + columns: 2 CheckBox { @@ -381,6 +382,7 @@ Form Group { title: qsTr("Factorial Plots") + columns: 2 CheckBox { @@ -426,6 +428,7 @@ Form Group { title: qsTr("Other Plots") + columns: 2 CheckBox { diff --git a/tests/testthat/_snaps/doeAnalysis/contour-plot57.svg b/tests/testthat/_snaps/doeAnalysis/contour-plot57.svg index 41b90d9a..4c273767 100644 --- a/tests/testthat/_snaps/doeAnalysis/contour-plot57.svg +++ b/tests/testthat/_snaps/doeAnalysis/contour-plot57.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - + + + + + + + + + +-1 +0 +1 + + + + + + + +-1 +0 +1 +A +Slice at C = 0 +B + + +Result + + + + + + + + + + +88.9 – 92.8 +92.8 – 96.8 +96.8 – 101 +101 – 105 +105 – 109 - - --1 -0 -1 - - - - - - - --1 -0 -1 -A -Slice at C = 0 -B - - -Result - - - - - - - - - - -88.9 – 92.8 -92.8 – 96.8 -96.8 – 101 -101 – 105 -105 – 109 -contour-plot54 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-ball-55-06.svg b/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-ball-55-06.svg index e923d118..08112224 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-ball-55-06.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-ball-55-06.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +220 +240 +260 +280 +300 + + + + + + + + +2 +3 +Angle +Distance + + +Ball + + + + + + +Plastic +Tennis - - -220 -240 -260 -280 -300 - - - - - - - - -2 -3 -Angle -Distance - - -Ball - - - - - - - - -Plastic -Tennis -interaction-angle-x-ball-55-06 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-vertical-55-05.svg b/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-vertical-55-05.svg index 3f8d2467..3b93b22a 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-vertical-55-05.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-angle-x-vertical-55-05.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +200 +250 +300 + + + + + + +2 +3 +Angle +Distance + + +Vertical + + + + + + +1 +2 - - -200 -250 -300 - - - - - - -2 -3 -Angle -Distance - - -Vertical - - - - - - - - -1 -2 -interaction-angle-x-vertical-55-05 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-05.svg b/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-05.svg index 5ba8ceb2..252a086d 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-05.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-05.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +0.75 +1.00 +1.25 +1.50 + + + + + + + +75 +150 +InjPress +Density + + +InjTemp + + + + + + +85 +100 - - -0.75 -1.00 -1.25 -1.50 - - - - - - - -75 -150 -InjPress -Density - - -InjTemp - - - - - - - - -85 -100 -interaction-injpress-x-injtemp-54-05 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-15.svg b/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-15.svg index 69f47548..38df79c4 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-15.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-injpress-x-injtemp-54-15.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +20 +25 +30 +35 +40 + + + + + + + + +75 +150 +InjPress +Strength + + +InjTemp + + + + + + +85 +100 - - -20 -25 -30 -35 -40 - - - - - - - - -75 -150 -InjPress -Strength - - -InjTemp - - - - - - - - -85 -100 -interaction-injpress-x-injtemp-54-15 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-06.svg b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-06.svg index 674e11d8..eee4611a 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-06.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-06.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +0.6 +0.9 +1.2 +1.5 + + + + + + + +75 +150 +InjPress +Density + + +Material + + + + + + +Formula1 +Formula2 - - -0.6 -0.9 -1.2 -1.5 - - - - - - - -75 -150 -InjPress -Density - - -Material - - - - - - - - -Formula1 -Formula2 -interaction-material-x-injpress-54-06 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-16.svg b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-16.svg index 234171ce..fad00dc7 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-16.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injpress-54-16.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +20 +25 +30 +35 +40 + + + + + + + + +75 +150 +InjPress +Strength + + +Material + + + + + + +Formula1 +Formula2 - - -20 -25 -30 -35 -40 - - - - - - - - -75 -150 -InjPress -Strength - - -Material - - - - - - - - -Formula1 -Formula2 -interaction-material-x-injpress-54-16 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-07.svg b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-07.svg index 74180d81..a33f837e 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-07.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-07.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +0.6 +0.8 +1.0 +1.2 +1.4 + + + + + + + + +85 +100 +InjTemp +Density + + +Material + + + + + + +Formula1 +Formula2 - - -0.6 -0.8 -1.0 -1.2 -1.4 - - - - - - - - -85 -100 -InjTemp -Density - - -Material - - - - - - - - -Formula1 -Formula2 -interaction-material-x-injtemp-54-07 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-17.svg b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-17.svg index 09c86aa0..2221fcda 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-17.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-material-x-injtemp-54-17.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +20 +25 +30 +35 +40 + + + + + + + + +85 +100 +InjTemp +Strength + + +Material + + + + + + +Formula1 +Formula2 - - -20 -25 -30 -35 -40 - - - - - - - - -85 -100 -InjTemp -Strength - - -Material - - - - - - - - -Formula1 -Formula2 -interaction-material-x-injtemp-54-17 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-pressure-x-nozzle-56-11.svg b/tests/testthat/_snaps/doeAnalysis/interaction-pressure-x-nozzle-56-11.svg index 26ce0a06..b37a1c49 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-pressure-x-nozzle-56-11.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-pressure-x-nozzle-56-11.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + +50 +100 + + + + + +10 +20 +Pressure +Cost + + +Nozzle + + + + + + + + + +1 +2 +3 - - -50 -100 - - - - - -10 -20 -Pressure -Cost - - -Nozzle - - - - - - - - - - - - -1 -2 -3 -interaction-pressure-x-nozzle-56-11 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-pressure-x-nozzle-56-17.svg b/tests/testthat/_snaps/doeAnalysis/interaction-pressure-x-nozzle-56-17.svg index e782e646..f127e231 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-pressure-x-nozzle-56-17.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-pressure-x-nozzle-56-17.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + +-100 +-50 +0 +50 + + + + + + + +10 +20 +Pressure +Syruploss + + +Nozzle + + + + + + + + + +1 +2 +3 - - --100 --50 -0 -50 - - - - - - - -10 -20 -Pressure -Syruploss - - -Nozzle - - - - - - - - - - - - -1 -2 -3 -interaction-pressure-x-nozzle-56-17 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-nozzle-56-12.svg b/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-nozzle-56-12.svg index 47eeb9a0..06f2ef44 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-nozzle-56-12.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-nozzle-56-12.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + +100 +125 +150 +175 + + + + + + + +100 +140 +Speed +Cost + + +Nozzle + + + + + + + + + +1 +2 +3 - - -100 -125 -150 -175 - - - - - - - -100 -140 -Speed -Cost - - -Nozzle - - - - - - - - - - - - -1 -2 -3 -interaction-speed-x-nozzle-56-12 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-nozzle-56-18.svg b/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-nozzle-56-18.svg index ec80f58c..ef143eb2 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-nozzle-56-18.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-nozzle-56-18.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + +0 +50 +100 + + + + + + +100 +140 +Speed +Syruploss + + +Nozzle + + + + + + + + + +1 +2 +3 - - -0 -50 -100 - - - - - - -100 -140 -Speed -Syruploss - - -Nozzle - - - - - - - - - - - - -1 -2 -3 -interaction-speed-x-nozzle-56-18 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-pressure-56-13.svg b/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-pressure-56-13.svg index a488cc5f..c934ef74 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-pressure-56-13.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-pressure-56-13.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +40 +80 +120 +160 + + + + + + + +100 +140 +Speed +Cost + + +Pressure + + + + + + +10 +20 - - -40 -80 -120 -160 - - - - - - - -100 -140 -Speed -Cost - - -Pressure - - - - - - - - -10 -20 -interaction-speed-x-pressure-56-13 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-pressure-56-19.svg b/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-pressure-56-19.svg index 5b631086..85d6d283 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-pressure-56-19.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-speed-x-pressure-56-19.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +-100 +-50 +0 +50 + + + + + + + +100 +140 +Speed +Syruploss + + +Pressure + + + + + + +10 +20 - - --100 --50 -0 -50 - - - - - - - -100 -140 -Speed -Syruploss - - -Pressure - - - - - - - - -10 -20 -interaction-speed-x-pressure-56-19 diff --git a/tests/testthat/_snaps/doeAnalysis/interaction-vertical-x-ball-55-07.svg b/tests/testthat/_snaps/doeAnalysis/interaction-vertical-x-ball-55-07.svg index 0996fdcb..c67f731d 100644 --- a/tests/testthat/_snaps/doeAnalysis/interaction-vertical-x-ball-55-07.svg +++ b/tests/testthat/_snaps/doeAnalysis/interaction-vertical-x-ball-55-07.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +200 +225 +250 +275 +300 +325 + + + + + + + + + +1 +2 +Vertical +Distance + + +Ball + + + + + + +Plastic +Tennis - - -200 -225 -250 -275 -300 -325 - - - - - - - - - -1 -2 -Vertical -Distance - - -Ball - - - - - - - - -Plastic -Tennis -interaction-vertical-x-ball-55-07 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-angle-x-ball-55-06.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-angle-x-ball-55-06.rds index 6d9ce0bc3c36ebaff076586753d84d4189509626..2f6219d97d985a0125271f0fadc11310e892c1bd 100644 GIT binary patch literal 3384 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 OxA1?}cLsjXQvd+Pr<#ZW literal 3700 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 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-angle-x-vertical-55-05.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-angle-x-vertical-55-05.rds index 0cf2253659f7aaac8c844047d4675a0850a2840d..173ce5438cf55a63ab297eb0199ddfe0f6150ee0 100644 GIT binary patch literal 3428 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 GQvd*_-I}@p literal 3757 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 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-injpress-x-injtemp-54-05.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-injpress-x-injtemp-54-05.rds index 5afb0c6129cacbe66fb4ac1565a68429a77929b7..019439f33456c70af6d0a28b139be5a59c521bd9 100644 GIT binary patch literal 3821 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 literal 4128 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 literal 4102 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 E03}#ACIA2c diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-material-x-injpress-54-06.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-material-x-injpress-54-06.rds index 7afac86ffbc081de93d006d266c3850ccf7107fb..113538988946920df6d8ccf69338a2661115a1ec 100644 GIT binary patch literal 3837 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 RZ|2G){2z~$%_nzS006%%CY%5O diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-material-x-injtemp-54-07.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-material-x-injtemp-54-07.rds index 4aadf8e4004c6eb38901e390602b654fe4bb7261..2189b422f9eb20bc299fa908754bf0d5eaac1d72 100644 GIT binary patch literal 3839 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 BX2Jjf literal 4166 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 Q=Bgw79}UIq{*CY8Xwge{K4D^W5FsMlvd+{vWEt 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 literal 4148 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 VZmJ$e+GuWX;UD3_y#4`p006-w>{b8( literal 5335 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 u73Y;;HpgYozI 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 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-speed-x-nozzle-56-12.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-speed-x-nozzle-56-12.rds index 1f66acc6222ac93c6a6002a622f6297cd20229a7..234659850873816f83524fc2e391a714664c5186 100644 GIT binary patch literal 5034 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 Dy-0sS diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-speed-x-nozzle-56-18.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-speed-x-nozzle-56-18.rds index 7d04297bca2b39f11d5509941aa7de5a4885132b..0ae282be77c86c5a024897d7aff17707ab58b151 100644 GIT binary patch literal 5115 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 literal 5448 zcmY+_Rag|>qKDz38-^UDJ471kRvH0mq(MOGp&1w&8EWY64rxRNkRD1vLMcfBDT$#Q z&fmTF+2=XySr@-`_pPg!F%}o_uY-M%hht2>aM2S*Ri;h}qy)ZHfE-CMNAT%lp{vCK z*=b%7;Ma79%=;=)EWT-|A>uJMd}3#gHH9_GQq0uE5=KdCO?l7h9^TXLcHa%XmGxa6 zyCmAqm+B6%-^vX*T8fYoOY)%ppk_TSl$@CwClEan5#^sHVUt;!t*W4_i{K&f#nYro zp;XtkQdGuHI1OlI{1|+oYD|j9qQC~jOu8cBoa`YjZa5?=c5WAg?d`&tpK5<{iKz6L@}b;;m9WC$ z;*#q-uvld?k@aFyP(0!ta)5~s8!QNmRWKu5r-s=w!9&Hd{|**-v^d9l=HC%1PPJ|f zvt@=yBGh0xrOPRDc*iN|lVE+<=|E)BNeY}<%ekU4%9b_2`E5e{eq)l1Xw#7L1q=ZM zGq0a4fP0bmCOZQt)Y_>du#c9KKfse7^UqL~DOk~3G3%glIc2cN@1d#m&7lISl`HQK zG8lw12+WFBb_{JFQ3ix0yz40{t}!y3T@g>geZ5C^h}E5+(U!bwj@-g z?tf~zTU6L3JNOgRd9S(_WO?K52T2Icoe$A8ym#+2&40k3m6TZGYE!UkJGrYtXO|Js zHqkNo{+U8^q$FeY=@JQt=k>`Vlp(Cqz$@Z5D1e&wIF<33gKF>-4YuBlPrtF(qb+D` z!u@W6IL_g)uc{dore@yfy*wLb1u6f`#QOvAY}1t0_nA7zs7h=3-OKk_f0SZzMx+R_ z7P+1%X?WAj52=)Q7))Rcv3lOy%^hNa7PAN@7G^>gHDWA8WC@vmx2cb}O7*_z-5HV) z15|EzDv1$(YU$0$AbOHMk3H!a9@*u)6MAGq1^K^JRd_4gYycdc-y*z*rz zlQY0v;A>H*NmX2l4&4g_Q?v-8=HN-8T>M`ekabd;o%x142PND(Juc`E77_)|erUpY zk%Cp}uYrJ{!oA%#yW)d8KB(VI&#qU_@cf)cYHwz8iSrZUj399^v;;$V*Td+~Vs>Ar@+SO)fmZUHyiGARi+c6=U?yKzQQgGu6r~5Cn5*?pIXx47 zYjF47(!0a}zvj2Aw-B8LKmUsh6YJiF{qlPhnf2Ml^HYy> zD9NB(OuD5b56^h;ySnuA85BhV7iVdB-Pp&2ZyEQBFAdXJwIl&tTW)5Etjrz#IXGuJJw8y5&quwLrY1z_ZCY-qy zXq!)fPTe7CSMD(HDX_mcwiPuk|JY@HSF{JAmgpR*+!&yo46>}cP%k0-P_E&!HUUL< z^xdMrtYQkSMswLyTu3S;qw)FiTo|BVPCtg{riNkQnz;Ua=%7%x*L$;U8Zt?j@1>Sd zP0;_;BDwmcL?Oes+Hm2LDK2~F9mP)}kTRpbm?*Cv<_2mI{wtlxDt+vZ!%2bISPe1m zWA!wAyf}&GP;LSv;8NZD{hqmdQ(k6zO8_Bakf9jvJde3~vdE1d?<>#kXkpgmEvDle zrE0h<3;3BtKcp^Ji*dBq@kgwRB7Ak2B+9=0TWAQ@34OX4ybn`TQOEvkSm8&0{R3?* z1(;gqkD9%EVEZ?(nR%1Gi=xz^RPF*2a!+%zGG!g6X_4LJEwqFDsx~slhI|ra)4Mf} z{w?;w=A`Lh$GSTT1~I`T@*x{fUF6x1&4?c_O9{8Y*K`UH7M$HC7ATdN7LdO@oGbJb z;22l%Rjw+dfQGTCgmrqGUwK2Zd&Wx{_m!SqWTUiCjGttqxE>#z*D6O_jVgVpy@J$N zn=$=`l-k=pJ*g%|MZ<@sT*PXQ!Er``g6NqNU3@E@?YP78=x#50&SM1iALRDahesGlZg8k->q`1Cug@#?BYjsYio>MJ& ze5_MT zEPa)nd3cMZ@h{}~-?qy#-;QbrvU5IQXYOp{s;MeIu(EL+PS8N?p}^$C2)4~t0~@3h z(aSJZARfyxh!cr1gkKZD`VWI@!`&Z|u(?kV1piqJISb!QGZ-Q;$gE-I!C4?Cfgpy2 zalk<;X5tkEBXWvVMTL$Y?1fZf<)Z;l{To6XASfI`{ci{fk%GV>c{&X6KZA7WB^^0f z^Y2ikBLF``HUftfm)PEKUXl(U5f2|J>|BXZ6b!%?!w@V;1E#ts*Ypej&p;JqB#eMG zV*;+>7EHAex-LvS5EZ?C`aEWWMCNx1@INVkoBogEf5QIDvCV%|{*M2o{B8Po%Di%9>mSP}WVc_WOpev15m@1w0n z2`G5QdH#(^=@Kr>lY~9HA0K*<=}NADB#41seG~RMgF?6%SbF8V=D6&&5Qw8qb_29F z-$U?}0W;0~$_^4FtZ58I!dssc4>G>%z7V$uUCAxfvFyY+#MD>@xfs{uzh$cGDlq-FN)63gA?heUuKzx)_cZs`Ms z)r;$$fJ<+Hg>O#T{I?A~zwGnc6vULW-4E(v7Y>!z|d9GA<6Te#w^Cyk7hC;PN2 z8HB+hqWx;HLPTC?XrC=`KnwRZVQ6kV4$}|AZz@xtDf|5D`@OpB!%-=ka*`GFoln83w%1t$muu3_Kex-y+y>wo?2WD#D#NB#?jNetn-xfocUmTeS-S26nEf zW{<6qtTdAo`wpCh`gFPs(C@LJ&N@51IvpwfmL}qYcf1+6+RkW4Ulm|zc0fQ*Wns7P zmkxhP(!1A!yL*hQS@#*yU7ibZhJ2^=Ye=KQg!{*Kr>$lKh!=fIYpw0V@1eeRVv%SU zN!jyoH?!WLhOvf>`nu5N(^eG&qpQ%)lfn~0pWVJ~q}Z)A+;gkeuDRxe<*l`Pq?)8Miu|`Rl$B`CbyP8Mun! zQZ~B2XZ5r$w+m{?-_O4$U)oP1XI>EBv9}}bNgGEUUf^g48OTM7_`xocQ#S@o{fP9r z2^Gr+mev+F>MEm!VRTEPt}ZljM`Q{ocim|eEe+ZC&BvlpYFppkAjRZKh*PbG2~uo%~+eMhRkGs~z082?Nl>C%B&Z%P^ojTfTIq?qaxGI-5DK zR}CR)-MIi?*rOzC%e|EMo=%RXbJUK{U^%J`XB~r_DTt&B{etfRjxZ)O- zf)EyjWs>UjMIAtF+hH`OYZQ>dQQJOO7QJTHW)+2WmvVQ!)a**`rq1mXi(5Wgz=Tf( zO^=Lu0)|dW`#YOXdK>Rj^_)&U-F3fhbm!EdYw_UUZ$99 zi~sIjOp#sl!F8fRRsn#jwkjyTV|${Xc1W668~z z#(uP8lNYY8=%iFUC$dSmNpShyiuU~|u2E*WxK-|yB|@s^{&?Ve{y?Sx0XGgK{@4Nh5oW*Rk6*d z7s#1MCEi_3kRk5zo*+*zh9{EiDB89C!^iCLAI%EY)ogFk&%z~^_q-0 z`JBgv?Ev3=%*Syfq5$+P#9dWU2Znw+BK!}YU?PFK9_tp*JFLCBS zH>L^Xh0XW6`UWRB0!#_j=2>9;xaTJ`rk5(AN~rMp;#*Ry<;FJW%P`3XZ4J-Pe4I6D z`ybigC|&xF6Bm(iI{-!2cU`sv9{HIviYct^P|={pw{0xXQ5M2QvT-!HUGdMiy&1L@ zq4~OoNljFgf;o&f!Z(R{A+#BWZDD6nKI*ipCnA zQ6tAZL}ef?2qvqjQszf-t*18w4_bM5uJY;a|zaSu#cfNt!xwFYa{{gJdW*YoGy&6wLpQ5JMF+F$@+KE>O=3A z+U;C+=#R(|@yK)9#Z{;ESzpiyrRc)?tfl!A3mQ5R;XdrQ+m?c1us_JwfwSP+jh z2w{UT`J`J>Zo=S7_7$4c=_=`}Z!2gU1SOZPcBy%CU@R?*?z43;e+w|;;f8>kis&)| zo9tIqzC{{Y*rGx|rp4FWna@NCMnp%@lbm`eMk`KHl zB{DT#K#I{AGkm_=r%m6$-pDU_C-o*OA<#xz1f@(!~STQjZ!Zc`kMbfY+kVO({D zbTrR|-6;&MSW8ZF=J+xMLELUB>?rt>j{Dz<~E-Z{XS7WsadM)}MftTSGg} zFsS$N#8>u}HJ0WRt;IfFCha%D51n5n3P0KLOqY1}3Zu&XuW}(M$=1L}f*dYX8S!^L zZalza_O~mRa3Ub$EaEG{_%$%K;O9!&Bbs9Bphs>wJwt;Cj4XTj*wS=Mwfrb)h25z1 zyM4oLXVtTzxN^Ft6;^lE!uu(bqR<0>~-ze5h^#18k_ zNSS461^$t0t`_M^*a$I_C$SlMxFXSd91*}$t z@5})!@$g2#`aVq|DSdXQICN>}HbWkmp;g5XO8EC*F1PvG&q=Q^I#+8)nO^Ar!0VhC z>>^RGO2i|z;g8bgMiVi78~l84;#uGMZkK@JCQGA`(k3aGT=ng#gfvw`UVh@!9@z() zw#_4PQ(=+x@eLjFh*x0+*@@XKuI#uepn~uWfml`sheUh#jdj0HCwLkD5Z(HV&VIm% z*XYV1@>eXs0iU_?EAf%W+?NVRQwif*TB-K0ew{3QNl*z;q4p>ik(9Io_8hoOcW=}l z&QQtC1}aFa^u!;~v*JZ~x431Ty4_Uz#<6A11{}SI9?H0^b*4<;Kw6H5)%jcsIkC&m zJt3<_8D>9KhG0aO$W4CF@0^P`(L?!Tzs_lZh6-9j8v1#++ofzCHgf4Zb>-{Zh~e>N QhbuYyoFvYvU;yBM04R!=y8r+H diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-speed-x-pressure-56-13.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-speed-x-pressure-56-13.rds index 594121737dd9da7b2eb3d129a39974fb2c395269..3cfcb8077fa8d860dc3a031fc89bfff0d65c924b 100644 GIT binary patch literal 3800 zcmV;}4kz&+iwFP!000002JKu2SW{OUPC}3&f`|)O9aO4T5ga(l2M8D-WQPnOTp&Os zCP;#Ule)ET|B6@?se|8DQA8;U4g{)*dr|9F5I1hE;(tTV4Uh+G+rR(w(C5GRc@E$C z&VA3g@A=O6-EoN6nnIzNQRwD0ikUf{rI-r^zWs+$C^QGXf+P)3t?@*q&?#29wB#fx zwA#c3#iz^Zv0~Cw-T6d{}yEgC|=&MKjI~ zsyj$YN>YAa;%i2~wxd(@Lv`RlFJJG$q)Mv) zM=FZY6!K`UhvCWNsX-xS^O8UzWpk7ia@~-Ulz&=Mh;?%Vm6MW`r2MR;G=7spbtN-o zhRigV42o(XF)US(7~W5VB)aYZNt*sx1CkT^qa36NCq+0Z!buTMif}T7lOdc8;baIW zL%0xx3qiOLgbP8q5QGawxKM-(MYvFe3q`mvgbPEsFoX+3xG;p1Bb*%JTFUYg~+7}pJ0 zg>c`!m$Jh3p|+)Y3vD?!E@cSnx(y7g6DhR6Eiop1TV~b z|C+L~;8pIb+rDW8c*Dku=|ky+6tdeK8b`eZqW%qp2|9BzZ&eWoe z4;ZlKdOF{mDgu@^KP=qsdtgP5nA2m$Bwz_U&AZrhAF!BtmwS0R0n2mJyYk9fV2wKP z-hXrzutq+*GC6-Puo#*T{AqZ7zs#fJf9@6U9AK?0 z@^hYh8CXTR_ntb^fc3<;#~YRef_iL^TYVu2f@B@5zRrk;pzm|~EM85ApxbLY6dkq( zw%hGf&)1d$d%@atx6Pe_T~+pA#H-i9>7DC5=+!jfgbpb>a*ieI5v7 zNBB|?zXsv)$1tWa6GQ_x?cTnuJ&0DiFX{JTFo@nv-<8Sog5WS|P;PMs1RLhXxNZba z<&NT2Yk+?ub(HI#S-_vNE$wE(E8x36dilPj5_nHW&m4Lt33xe)T_a;%fHyrZZ(-R) z;IUs^&7&>_p7Tw?u;nV?nSZR9VRIU|_q$e2K1MbywZOKGG;68u8 zB=CAL@N6X(6>WsT`}%%+hZQ^V{!@LE0Q?+7d;Hfit-|eYfPmrpe&lZhK=5sRYU*B`=U=^h zZh6}Zgsz712^YE79Ft84;e+k@+Ws#=#F6|IwX7$I^3``++pUJ+zJ}`!&PdaC+&m7% zo!icfJDLIF^ut?cpOk^b>FgI>oZf*1=a2PxJxIr1>U_ny0;G3)^zqUD8)Wm7qJLa? z1VY?C{7__T0U>wF9hdmd0GZvSq8iy7knY>r{l1J3(wKpHYwT`!83MeyzRAkJROuKvLn z#D&50UGKSo`1DHE6VFr-SM@%e(qDmLop15P%vb(GV>9#oY^w-Zp`Xr!m z=egA&bDvf9uoWF-vt16$1h zZ~jWW(QkF5exw-QLfD`OA9G9Xu4`n*zYvNO*rK{IIpu{*C7o@nUq zGum_uU!)4t5?lC)LhC3@hYg5M!0S`$w(iw!*{eH4A-5hi+e9I^9+4`kBDHz#2_aQd zCAS`t2f2l!IZL3BvN=i$xo${F%0DeB#JYKG_y|QxQj+rXl0t4hA~R&Bxn{_%N6mVR z3pp>%b6$+=Ca}*GFH!3X2srvC?As|B5D@GBtjyLG0vv{aZ2R+4@Gq{N6}$B(@K2dD zqhwDu_M3d)uA@=FAP=Qz_el zshu)Eu&oG~s`fs;*=4xYPPWdm0j6%Hv+ceuz?_{J*yWBrFw-5YhYa%t=Khr0;5~l8 zytVb)v@;vP-+tAy%Jya8Ki0=~)U1QxKXBo&6On&LUtfH?$Yj?rLE<{UQWqRz($d z+5zk#IWte5xdH4mULC8muK{NSbLBkQdEhKPCtCNsJ8-H!ge5XZ;QB6H_Uz&t;AZ7n zIz<-%&!%L*%sLi$iF>!MI{X%Rx8_~AYbu=5l1{Xo#)Zc(=LmmsjsOnDoX4g42vca3^01O8QI*JWY5 zfq#5m@x4n=fxka@tFNLh@UwRu&pA>F{4MjGJ5Ra@{LP*RSA5Xo^6J0rR=o!PHtEK6 z>Q}(e$*bvkBnkKj-z5JeNCf_AM-Ra}G4Stn_ISCcC-8r(owC^@4FnyIyx?{p00Q^e zEiKPZ0D<<G{F~Aeb3k^1TbL@5ppfbd3hVuVv>wezgLj-KE^FKdu0w@6of=@2DXB zW@X=(fn9MP4E%^_=a$_Z4j^LstiAKK9f(%0u6*_6TM*qWSJAC|L-3&6{ky+ZL-2xM z`g*-chv3`0Bga|n0W|QY|8o+Ti6#!^VsjK&}4=ltxUp z_&k%pyT}`{X&|sML1?6Zj2s&JH6s=EA8)CzOcd1*(sTwa^)nEN z8^C|be?t-syc%CoG)Y8*Nb(P7&`QrBN265h{st4KHZoyDhh_w&CZ3&Y;=!r)p1Kh+ z#IpFTWBi9tgl(NO!PGGdU*vxN4udwme9AwFrbhh{Hy17S{mByyP8XSQU6Fo85{=gt z#Mc?Mp~TKmOV6&Ub2l@c2XBogA<7#|&?&S^%+#@4`C^d@T~MOlyv@*${Qc2*R}c7% z-sr;3QA1|lY~wvb!w_f2V+Ru)^SwO-edOZCs^q_ke@!pNNIgY_60K*1Fw=NUtx(BT zSh6NjN2&ikLfR+D?!b@4R0?kmZno+~O`?{tWCUwT^r6yBQV`L<#du{@l*$gXpVN*Pm6Y(OHuiq%#(^rQw%B$+Z{ zk<^HE99&OKQav$5!-hHepV8Fh`e>oTA`~iP1Got)66AVwZd{^`S47s=s54U{jOb~u O>)}66=tkw&Qvd*HIBk;v literal 4115 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 G&Hn&L9tDU1 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-speed-x-pressure-56-19.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-speed-x-pressure-56-19.rds index f4f27bdc362f3da420875f470d9da14df1d01181..f616889df068ec82d554e465ad5a8d36dba2b97b 100644 GIT binary patch literal 3843 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 F004Yhe%1g0 literal 4157 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 diff --git a/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-vertical-x-ball-55-07.rds b/tests/testthat/_snaps/doeAnalysis/reference_plotobject/interaction-vertical-x-ball-55-07.rds index c9655aedc85bcfbd657882d124c24ebafb7aac56..3cbc24cb307372a510feb303de9b9bf7d2bdcd01 100644 GIT binary patch literal 3386 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 diff --git a/tests/testthat/_snaps/processCapabilityStudies/probability-plot-against-weibull-distribution5-subplot-1.new.svg b/tests/testthat/_snaps/processCapabilityStudies/probability-plot-against-weibull-distribution5-subplot-1.new.svg deleted file mode 100644 index 2a714f74..00000000 --- a/tests/testthat/_snaps/processCapabilityStudies/probability-plot-against-weibull-distribution5-subplot-1.new.svg +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0.1 -1 -5 -10 -20 -30 -40 -50 -60 -70 -80 -90 -95 -99 -99.9 - - - - - - - - - - - - - - - - - - - - - -3.1 -5.6 -7 -8.4 -10.9 -Measurement -Percent -1 - - - diff --git a/tests/testthat/_snaps/processCapabilityStudies/probability-plot-against-weibull-distribution5-subplot-1.svg b/tests/testthat/_snaps/processCapabilityStudies/probability-plot-against-weibull-distribution5-subplot-1.svg index fbddac62..2a714f74 100644 --- a/tests/testthat/_snaps/processCapabilityStudies/probability-plot-against-weibull-distribution5-subplot-1.svg +++ b/tests/testthat/_snaps/processCapabilityStudies/probability-plot-against-weibull-distribution5-subplot-1.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0.1 +1 +5 +10 +20 +30 +40 +50 +60 +70 +80 +90 +95 +99 +99.9 + + + + + + + + + + + + + + + + + + + + + +3.1 +5.6 +7 +8.4 +10.9 +Measurement +Percent +1 - - -0.1 -1 -5 -10 -20 -30 -40 -50 -60 -70 -80 -90 -95 -99 -99.9 - - - - - - - - - - - - - - - - - - - - - -3.1 -5.6 -7 -8.4 -10.9 -Measurement -Percent -1 diff --git a/tests/testthat/_snaps/processCapabilityStudies/process-capability-report23-subplot-10.new.svg b/tests/testthat/_snaps/processCapabilityStudies/process-capability-report23-subplot-10.new.svg deleted file mode 100644 index b73b7ccd..00000000 --- a/tests/testthat/_snaps/processCapabilityStudies/process-capability-report23-subplot-10.new.svg +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0.1 -1 -5 -10 -20 -30 -40 -50 -60 -70 -80 -90 -95 -99 -99.9 - - - - - - - - - - - - - - - - - - - - - - -2 -4 -6 -8 -10 -12 -Measurement -Percent -1 - - - diff --git a/tests/testthat/_snaps/processCapabilityStudies/process-capability-report23-subplot-10.svg b/tests/testthat/_snaps/processCapabilityStudies/process-capability-report23-subplot-10.svg index fb4aad22..b73b7ccd 100644 --- a/tests/testthat/_snaps/processCapabilityStudies/process-capability-report23-subplot-10.svg +++ b/tests/testthat/_snaps/processCapabilityStudies/process-capability-report23-subplot-10.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0.1 +1 +5 +10 +20 +30 +40 +50 +60 +70 +80 +90 +95 +99 +99.9 + + + + + + + + + + + + + + + + + + + + + + +2 +4 +6 +8 +10 +12 +Measurement +Percent +1 - - -0.1 -1 -5 -10 -20 -30 -40 -50 -60 -70 -80 -90 -95 -99 -99.9 - - - - - - - - - - - - - - - - - - - - - - -2 -4 -6 -8 -10 -12 -Measurement -Percent -1 diff --git a/tests/testthat/_snaps/processCapabilityStudies/process-capability-report23-subplot-5.new.svg b/tests/testthat/_snaps/processCapabilityStudies/process-capability-report23-subplot-5.new.svg deleted file mode 100644 index 2b86da69..00000000 --- a/tests/testthat/_snaps/processCapabilityStudies/process-capability-report23-subplot-5.new.svg +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0.1 -1 -5 -10 -20 -30 -40 -50 -60 -70 -80 -90 -95 -99 -99.9 - - - - - - - - - - - - - - - - - - - - - - - -2 -4 -6 -8 -10 -12 -14 -Measurement -Percent -2 - - - diff --git a/tests/testthat/_snaps/processCapabilityStudies/process-capability-report23-subplot-5.svg b/tests/testthat/_snaps/processCapabilityStudies/process-capability-report23-subplot-5.svg index c696acda..2b86da69 100644 --- a/tests/testthat/_snaps/processCapabilityStudies/process-capability-report23-subplot-5.svg +++ b/tests/testthat/_snaps/processCapabilityStudies/process-capability-report23-subplot-5.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0.1 +1 +5 +10 +20 +30 +40 +50 +60 +70 +80 +90 +95 +99 +99.9 + + + + + + + + + + + + + + + + + + + + + + + +2 +4 +6 +8 +10 +12 +14 +Measurement +Percent +2 - - -0.1 -1 -5 -10 -20 -30 -40 -50 -60 -70 -80 -90 -95 -99 -99.9 - - - - - - - - - - - - - - - - - - - - - - - -2 -4 -6 -8 -10 -12 -14 -Measurement -Percent -2 diff --git a/tests/testthat/_snaps/processCapabilityStudies/process-capability-reportw18-subplot-10.new.svg b/tests/testthat/_snaps/processCapabilityStudies/process-capability-reportw18-subplot-10.new.svg deleted file mode 100644 index 6de1fa48..00000000 --- a/tests/testthat/_snaps/processCapabilityStudies/process-capability-reportw18-subplot-10.new.svg +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0.1 -1 -5 -10 -20 -30 -40 -50 -60 -70 -80 -90 -95 -99 -99.9 - - - - - - - - - - - - - - - - - - - - - - -2 -4 -6 -8 -10 -12 -Measurement -Percent -1 - - - diff --git a/tests/testthat/_snaps/processCapabilityStudies/process-capability-reportw18-subplot-10.svg b/tests/testthat/_snaps/processCapabilityStudies/process-capability-reportw18-subplot-10.svg index 275a0cef..6de1fa48 100644 --- a/tests/testthat/_snaps/processCapabilityStudies/process-capability-reportw18-subplot-10.svg +++ b/tests/testthat/_snaps/processCapabilityStudies/process-capability-reportw18-subplot-10.svg @@ -1,5 +1,6 @@ - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0.1 +1 +5 +10 +20 +30 +40 +50 +60 +70 +80 +90 +95 +99 +99.9 + + + + + + + + + + + + + + + + + + + + + + +2 +4 +6 +8 +10 +12 +Measurement +Percent +1 - - -0.1 -1 -5 -10 -20 -30 -40 -50 -60 -70 -80 -90 -95 -99 -99.9 - - - - - - - - - - - - - - - - - - - - - - -2 -4 -6 -8 -10 -12 -Measurement -Percent -1 diff --git a/tests/testthat/test-doeAnalysis.R b/tests/testthat/test-doeAnalysis.R index a6e9af3c..0d0be424 100644 --- a/tests/testthat/test-doeAnalysis.R +++ b/tests/testthat/test-doeAnalysis.R @@ -5322,73 +5322,73 @@ test_that("54.14 Data example 1 (factorial plots, two outcomes) - Strength Model }) test_that("54.5 Data example 1 (factorial plots, two outcomes) - Density Interaction: InjPress x InjTemp plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Density"]][["collection"]][["factorialPlots_Density_interactionEffect"]][["collection"]][["factorialPlots_Density_interactionEffect_interaction_InjPress_x_InjTemp"]][["data"]] + plotName <- results[["results"]][["Density"]][["collection"]][["Density_factorialPlots"]][["collection"]][["Density_factorialPlots_interactionEffect"]][["collection"]][["Density_factorialPlots_interactionEffect_interaction_InjPress_x_InjTemp"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "interaction-injpress-x-injtemp-54-05") }) test_that("54.6 Data example 1 (factorial plots, two outcomes) - Density Interaction: Material x InjPress plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Density"]][["collection"]][["factorialPlots_Density_interactionEffect"]][["collection"]][["factorialPlots_Density_interactionEffect_interaction_InjPress_x_Material"]][["data"]] + plotName <- results[["results"]][["Density"]][["collection"]][["Density_factorialPlots"]][["collection"]][["Density_factorialPlots_interactionEffect"]][["collection"]][["Density_factorialPlots_interactionEffect_interaction_InjPress_x_Material"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "interaction-material-x-injpress-54-06") }) test_that("54.7 Data example 1 (factorial plots, two outcomes) - Density Interaction: Material x InjTemp plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Density"]][["collection"]][["factorialPlots_Density_interactionEffect"]][["collection"]][["factorialPlots_Density_interactionEffect_interaction_InjTemp_x_Material"]][["data"]] + plotName <- results[["results"]][["Density"]][["collection"]][["Density_factorialPlots"]][["collection"]][["Density_factorialPlots_interactionEffect"]][["collection"]][["Density_factorialPlots_interactionEffect_interaction_InjTemp_x_Material"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "interaction-material-x-injtemp-54-07") }) test_that("54.8 Data example 1 (factorial plots, two outcomes) - Density Main Effect: InjPress plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Density"]][["collection"]][["factorialPlots_Density_mainEffect"]][["collection"]][["factorialPlots_Density_mainEffect_mainEffect_InjPress"]][["data"]] + plotName <- results[["results"]][["Density"]][["collection"]][["Density_factorialPlots"]][["collection"]][["Density_factorialPlots_mainEffect"]][["collection"]][["Density_factorialPlots_mainEffect_mainEffect_InjPress"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "main-effect-injpress-54-08") }) test_that("54.9 Data example 1 (factorial plots, two outcomes) - Density Main Effect: InjTemp plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Density"]][["collection"]][["factorialPlots_Density_mainEffect"]][["collection"]][["factorialPlots_Density_mainEffect_mainEffect_InjTemp"]][["data"]] + plotName <- results[["results"]][["Density"]][["collection"]][["Density_factorialPlots"]][["collection"]][["Density_factorialPlots_mainEffect"]][["collection"]][["Density_factorialPlots_mainEffect_mainEffect_InjTemp"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "main-effect-injtemp-54-09") }) test_that("54.10 Data example 1 (factorial plots, two outcomes) - Density Main Effect: Material plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Density"]][["collection"]][["factorialPlots_Density_mainEffect"]][["collection"]][["factorialPlots_Density_mainEffect_mainEffect_Material"]][["data"]] + plotName <- results[["results"]][["Density"]][["collection"]][["Density_factorialPlots"]][["collection"]][["Density_factorialPlots_mainEffect"]][["collection"]][["Density_factorialPlots_mainEffect_mainEffect_Material"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "main-effect-material-54-10") }) test_that("54.15 Data example 1 (factorial plots, two outcomes) - Strength Interaction: InjPress x InjTemp plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Strength"]][["collection"]][["factorialPlots_Strength_interactionEffect"]][["collection"]][["factorialPlots_Strength_interactionEffect_interaction_InjPress_x_InjTemp"]][["data"]] + plotName <- results[["results"]][["Strength"]][["collection"]][["Strength_factorialPlots"]][["collection"]][["Strength_factorialPlots_interactionEffect"]][["collection"]][["Strength_factorialPlots_interactionEffect_interaction_InjPress_x_InjTemp"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "interaction-injpress-x-injtemp-54-15") }) test_that("54.16 Data example 1 (factorial plots, two outcomes) - Strength Interaction: Material x InjPress plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Strength"]][["collection"]][["factorialPlots_Strength_interactionEffect"]][["collection"]][["factorialPlots_Strength_interactionEffect_interaction_InjPress_x_Material"]][["data"]] + plotName <- results[["results"]][["Strength"]][["collection"]][["Strength_factorialPlots"]][["collection"]][["Strength_factorialPlots_interactionEffect"]][["collection"]][["Strength_factorialPlots_interactionEffect_interaction_InjPress_x_Material"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "interaction-material-x-injpress-54-16") }) test_that("54.17 Data example 1 (factorial plots, two outcomes) - Strength Interaction: Material x InjTemp plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Strength"]][["collection"]][["factorialPlots_Strength_interactionEffect"]][["collection"]][["factorialPlots_Strength_interactionEffect_interaction_InjTemp_x_Material"]][["data"]] + plotName <- results[["results"]][["Strength"]][["collection"]][["Strength_factorialPlots"]][["collection"]][["Strength_factorialPlots_interactionEffect"]][["collection"]][["Strength_factorialPlots_interactionEffect_interaction_InjTemp_x_Material"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "interaction-material-x-injtemp-54-17") }) test_that("54.18 Data example 1 (factorial plots, two outcomes) - Strength Main Effect: InjPress plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Strength"]][["collection"]][["factorialPlots_Strength_mainEffect"]][["collection"]][["factorialPlots_Strength_mainEffect_mainEffect_InjPress"]][["data"]] + plotName <- results[["results"]][["Strength"]][["collection"]][["Strength_factorialPlots"]][["collection"]][["Strength_factorialPlots_mainEffect"]][["collection"]][["Strength_factorialPlots_mainEffect_mainEffect_InjPress"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "main-effect-injpress-54-18") }) test_that("54.19 Data example 1 (factorial plots, two outcomes) - Strength Main Effect: InjTemp plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Strength"]][["collection"]][["factorialPlots_Strength_mainEffect"]][["collection"]][["factorialPlots_Strength_mainEffect_mainEffect_InjTemp"]][["data"]] + plotName <- results[["results"]][["Strength"]][["collection"]][["Strength_factorialPlots"]][["collection"]][["Strength_factorialPlots_mainEffect"]][["collection"]][["Strength_factorialPlots_mainEffect_mainEffect_InjTemp"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "main-effect-injtemp-54-19") }) test_that("54.20 Data example 1 (factorial plots, two outcomes) - Strength Main Effect: Material plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Strength"]][["collection"]][["factorialPlots_Strength_mainEffect"]][["collection"]][["factorialPlots_Strength_mainEffect_mainEffect_Material"]][["data"]] + plotName <- results[["results"]][["Strength"]][["collection"]][["Strength_factorialPlots"]][["collection"]][["Strength_factorialPlots_mainEffect"]][["collection"]][["Strength_factorialPlots_mainEffect_mainEffect_Material"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "main-effect-material-54-20") }) @@ -5469,37 +5469,37 @@ test_that("55.4 Data example 2 (factorial plots, one outcome) - Model Summary ta }) test_that("55.5 Data example 2 (factorial plots, one outcome) - Interaction: Angle x Vertical plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Distance"]][["collection"]][["factorialPlots_Distance_interactionEffect"]][["collection"]][["factorialPlots_Distance_interactionEffect_interaction_Angle_x_Vertical"]][["data"]] + plotName <- results[["results"]][["Distance"]][["collection"]][["Distance_factorialPlots"]][["collection"]][["Distance_factorialPlots_interactionEffect"]][["collection"]][["Distance_factorialPlots_interactionEffect_interaction_Angle_x_Vertical"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "interaction-angle-x-vertical-55-05") }) test_that("55.6 Data example 2 (factorial plots, one outcome) - Interaction: Ball x Angle plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Distance"]][["collection"]][["factorialPlots_Distance_interactionEffect"]][["collection"]][["factorialPlots_Distance_interactionEffect_interaction_Angle_x_Ball"]][["data"]] + plotName <- results[["results"]][["Distance"]][["collection"]][["Distance_factorialPlots"]][["collection"]][["Distance_factorialPlots_interactionEffect"]][["collection"]][["Distance_factorialPlots_interactionEffect_interaction_Angle_x_Ball"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "interaction-angle-x-ball-55-06") }) test_that("55.7 Data example 2 (factorial plots, one outcome) - Interaction: Ball x Vertical plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Distance"]][["collection"]][["factorialPlots_Distance_interactionEffect"]][["collection"]][["factorialPlots_Distance_interactionEffect_interaction_Vertical_x_Ball"]][["data"]] + plotName <- results[["results"]][["Distance"]][["collection"]][["Distance_factorialPlots"]][["collection"]][["Distance_factorialPlots_interactionEffect"]][["collection"]][["Distance_factorialPlots_interactionEffect_interaction_Vertical_x_Ball"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "interaction-vertical-x-ball-55-07") }) test_that("55.8 Data example 2 (factorial plots, one outcome) - Main Effect: Angle plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Distance"]][["collection"]][["factorialPlots_Distance_mainEffect"]][["collection"]][["factorialPlots_Distance_mainEffect_mainEffect_Angle"]][["data"]] + plotName <- results[["results"]][["Distance"]][["collection"]][["Distance_factorialPlots"]][["collection"]][["Distance_factorialPlots_mainEffect"]][["collection"]][["Distance_factorialPlots_mainEffect_mainEffect_Angle"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "main-effect-angle-55-08") }) test_that("55.9 Data example 2 (factorial plots, one outcome) - Main Effect: Ball plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Distance"]][["collection"]][["factorialPlots_Distance_mainEffect"]][["collection"]][["factorialPlots_Distance_mainEffect_mainEffect_Ball"]][["data"]] + plotName <- results[["results"]][["Distance"]][["collection"]][["Distance_factorialPlots"]][["collection"]][["Distance_factorialPlots_mainEffect"]][["collection"]][["Distance_factorialPlots_mainEffect_mainEffect_Ball"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "main-effect-ball-55-09") }) test_that("55.10 Data example 2 (factorial plots, one outcome) - Main Effect: Vertical plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Distance"]][["collection"]][["factorialPlots_Distance_mainEffect"]][["collection"]][["factorialPlots_Distance_mainEffect_mainEffect_Vertical"]][["data"]] + plotName <- results[["results"]][["Distance"]][["collection"]][["Distance_factorialPlots"]][["collection"]][["Distance_factorialPlots_mainEffect"]][["collection"]][["Distance_factorialPlots_mainEffect_mainEffect_Vertical"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "main-effect-vertical-55-10") }) @@ -5669,73 +5669,73 @@ test_that("56.10 Data example 3 (response surface, two outcomes) - Syruploss Mod }) test_that("56.11 Data example 3 (response surface, two outcomes) - Cost Interaction: Pressure x Nozzle plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Cost"]][["collection"]][["factorialPlots_Cost_interactionEffect"]][["collection"]][["factorialPlots_Cost_interactionEffect_interaction_Pressure_x_Nozzle"]][["data"]] + plotName <- results[["results"]][["Cost"]][["collection"]][["Cost_factorialPlots"]][["collection"]][["Cost_factorialPlots_interactionEffect"]][["collection"]][["Cost_factorialPlots_interactionEffect_interaction_Pressure_x_Nozzle"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "interaction-pressure-x-nozzle-56-11") }) test_that("56.12 Data example 3 (response surface, two outcomes) - Cost Interaction: Speed x Nozzle plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Cost"]][["collection"]][["factorialPlots_Cost_interactionEffect"]][["collection"]][["factorialPlots_Cost_interactionEffect_interaction_Speed_x_Nozzle"]][["data"]] + plotName <- results[["results"]][["Cost"]][["collection"]][["Cost_factorialPlots"]][["collection"]][["Cost_factorialPlots_interactionEffect"]][["collection"]][["Cost_factorialPlots_interactionEffect_interaction_Speed_x_Nozzle"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "interaction-speed-x-nozzle-56-12") }) test_that("56.13 Data example 3 (response surface, two outcomes) - Cost Interaction: Speed x Pressure plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Cost"]][["collection"]][["factorialPlots_Cost_interactionEffect"]][["collection"]][["factorialPlots_Cost_interactionEffect_interaction_Speed_x_Pressure"]][["data"]] + plotName <- results[["results"]][["Cost"]][["collection"]][["Cost_factorialPlots"]][["collection"]][["Cost_factorialPlots_interactionEffect"]][["collection"]][["Cost_factorialPlots_interactionEffect_interaction_Speed_x_Pressure"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "interaction-speed-x-pressure-56-13") }) test_that("56.14 Data example 3 (response surface, two outcomes) - Cost Main Effect: Nozzle plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Cost"]][["collection"]][["factorialPlots_Cost_mainEffect"]][["collection"]][["factorialPlots_Cost_mainEffect_mainEffect_Nozzle"]][["data"]] + plotName <- results[["results"]][["Cost"]][["collection"]][["Cost_factorialPlots"]][["collection"]][["Cost_factorialPlots_mainEffect"]][["collection"]][["Cost_factorialPlots_mainEffect_mainEffect_Nozzle"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "main-effect-nozzle-56-14") }) test_that("56.15 Data example 3 (response surface, two outcomes) - Cost Main Effect: Pressure plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Cost"]][["collection"]][["factorialPlots_Cost_mainEffect"]][["collection"]][["factorialPlots_Cost_mainEffect_mainEffect_Pressure"]][["data"]] + plotName <- results[["results"]][["Cost"]][["collection"]][["Cost_factorialPlots"]][["collection"]][["Cost_factorialPlots_mainEffect"]][["collection"]][["Cost_factorialPlots_mainEffect_mainEffect_Pressure"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "main-effect-pressure-56-15") }) test_that("56.16 Data example 3 (response surface, two outcomes) - Cost Main Effect: Speed plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Cost"]][["collection"]][["factorialPlots_Cost_mainEffect"]][["collection"]][["factorialPlots_Cost_mainEffect_mainEffect_Speed"]][["data"]] + plotName <- results[["results"]][["Cost"]][["collection"]][["Cost_factorialPlots"]][["collection"]][["Cost_factorialPlots_mainEffect"]][["collection"]][["Cost_factorialPlots_mainEffect_mainEffect_Speed"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "main-effect-speed-56-16") }) test_that("56.17 Data example 3 (response surface, two outcomes) - Syruploss Interaction: Pressure x Nozzle plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Syruploss"]][["collection"]][["factorialPlots_Syruploss_interactionEffect"]][["collection"]][["factorialPlots_Syruploss_interactionEffect_interaction_Pressure_x_Nozzle"]][["data"]] + plotName <- results[["results"]][["Syruploss"]][["collection"]][["Syruploss_factorialPlots"]][["collection"]][["Syruploss_factorialPlots_interactionEffect"]][["collection"]][["Syruploss_factorialPlots_interactionEffect_interaction_Pressure_x_Nozzle"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "interaction-pressure-x-nozzle-56-17") }) test_that("56.18 Data example 3 (response surface, two outcomes) - Syruploss Interaction: Speed x Nozzle plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Syruploss"]][["collection"]][["factorialPlots_Syruploss_interactionEffect"]][["collection"]][["factorialPlots_Syruploss_interactionEffect_interaction_Speed_x_Nozzle"]][["data"]] + plotName <- results[["results"]][["Syruploss"]][["collection"]][["Syruploss_factorialPlots"]][["collection"]][["Syruploss_factorialPlots_interactionEffect"]][["collection"]][["Syruploss_factorialPlots_interactionEffect_interaction_Speed_x_Nozzle"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "interaction-speed-x-nozzle-56-18") }) test_that("56.19 Data example 3 (response surface, two outcomes) - Syruploss Interaction: Speed x Pressure plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Syruploss"]][["collection"]][["factorialPlots_Syruploss_interactionEffect"]][["collection"]][["factorialPlots_Syruploss_interactionEffect_interaction_Speed_x_Pressure"]][["data"]] + plotName <- results[["results"]][["Syruploss"]][["collection"]][["Syruploss_factorialPlots"]][["collection"]][["Syruploss_factorialPlots_interactionEffect"]][["collection"]][["Syruploss_factorialPlots_interactionEffect_interaction_Speed_x_Pressure"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "interaction-speed-x-pressure-56-19") }) test_that("56.20 Data example 3 (response surface, two outcomes) - Syruploss Main Effect: Nozzle plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Syruploss"]][["collection"]][["factorialPlots_Syruploss_mainEffect"]][["collection"]][["factorialPlots_Syruploss_mainEffect_mainEffect_Nozzle"]][["data"]] + plotName <- results[["results"]][["Syruploss"]][["collection"]][["Syruploss_factorialPlots"]][["collection"]][["Syruploss_factorialPlots_mainEffect"]][["collection"]][["Syruploss_factorialPlots_mainEffect_mainEffect_Nozzle"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "main-effect-nozzle-56-20") }) test_that("56.21 Data example 3 (response surface, two outcomes) - Syruploss Main Effect: Pressure plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Syruploss"]][["collection"]][["factorialPlots_Syruploss_mainEffect"]][["collection"]][["factorialPlots_Syruploss_mainEffect_mainEffect_Pressure"]][["data"]] + plotName <- results[["results"]][["Syruploss"]][["collection"]][["Syruploss_factorialPlots"]][["collection"]][["Syruploss_factorialPlots_mainEffect"]][["collection"]][["Syruploss_factorialPlots_mainEffect_mainEffect_Pressure"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "main-effect-pressure-56-21") }) test_that("56.22 Data example 3 (response surface, two outcomes) - Syruploss Main Effect: Speed plot matches", { - plotName <- results[["results"]][["factorialPlots"]][["collection"]][["factorialPlots_Syruploss"]][["collection"]][["factorialPlots_Syruploss_mainEffect"]][["collection"]][["factorialPlots_Syruploss_mainEffect_mainEffect_Speed"]][["data"]] + plotName <- results[["results"]][["Syruploss"]][["collection"]][["Syruploss_factorialPlots"]][["collection"]][["Syruploss_factorialPlots_mainEffect"]][["collection"]][["Syruploss_factorialPlots_mainEffect_mainEffect_Speed"]][["data"]] testPlot <- results[["state"]][["figures"]][[plotName]][["obj"]] jaspTools::expect_equal_plots(testPlot, "main-effect-speed-56-22") })