From 59c359998de0f3e2e24c441639037f3594826955 Mon Sep 17 00:00:00 2001 From: nfrerebeau Date: Fri, 18 Aug 2023 18:37:54 +0200 Subject: [PATCH] Fix graphical parameters --- R/AllGenerics.R | 47 +++++++------ R/biplot.R | 2 +- R/dimensio-internal.R | 12 ++++ R/viz_coordinates.R | 106 ++++++++++++------------------ R/viz_ellipse.R | 28 ++++++++ R/viz_hull.R | 13 ++++ R/wrap_ellipses.R | 4 ++ R/wrap_hull.R | 4 ++ README.Rmd | 8 +-- README.md | 8 +-- inst/examples/ex-plot.R | 3 +- inst/examples/ex-wrap.R | 2 +- man/biplot.Rd | 2 +- man/figures/README-biplot-1.png | Bin 23831 -> 23187 bytes man/figures/README-plot-var-1.png | Bin 17432 -> 17461 bytes man/viz_individuals.Rd | 36 +++++----- man/viz_variables.Rd | 42 +++++------- man/viz_wrap.Rd | 11 +++- man/wrap.Rd | 2 +- vignettes/pca.Rmd | 14 ++-- 20 files changed, 194 insertions(+), 150 deletions(-) diff --git a/R/AllGenerics.R b/R/AllGenerics.R index 35c675a..a1f8531 100644 --- a/R/AllGenerics.R +++ b/R/AllGenerics.R @@ -559,21 +559,15 @@ NULL #' plotted? #' @param labels A [`logical`] scalar: should labels be drawn? #' @param map_alpha,map_color,map_shape,map_size A vector specifying the -#' information to be highlighted. -#' It will be mapped to the corresponding aesthetic, according to the -#' corresponding `scale` argument (see examples and vignettes). +#' information to be highlighted. It will be mapped to the corresponding +#' aesthetic (see examples and vignettes). #' If a single `character` string is passed, it must be one of "`observation`", #' "`mass`", "`sum`", "`contribution`" or "`cos2`" (see details). #' Any unambiguous substring can be given. #' If `NULL` (the default), no highlighting is applied. -#' @param scale_color The colors for points. Multiple colors can be -#' specified so that each point can be given its own color. -#' @param scale_shape A vector of plotting characters or symbols. -#' @param scale_size A `numeric` vector giving the amount by which plotting -#' characters and symbols should be scaled relative to the default. #' @param main A [`character`] string giving a main title for the plot. #' @param sub A [`character`] string giving a subtitle for the plot. -#' @param ... Currently not used. +#' @param ... Further [graphical parameters][graphics::par] (see details). #' @details #' Available statistics: #' \describe{ @@ -583,6 +577,16 @@ NULL #' \item{`contribution`}{Joint contributions to the definition of `axes`.} #' \item{`cos2`}{Joint \eqn{cos^2}{cos2} along `axes`.} #' } +#' +#' Commonly used [graphical parameters][graphics::par] are: +#' \describe{ +#' \item{`col`}{The colors for lines and points. Multiple colors can be +#' specified so that each point can be given its own color.} +#' \item{`pch`}{A vector of plotting characters or symbols.} +#' \item{`cex`}{A numerical vector giving the amount by which plotting +#' characters and symbols should be scaled relative to the +#' default.} +#' } #' @return #' `viz_*()` is called for its side-effects: it results in a graphic #' being displayed. Invisibly returns `x`. @@ -615,22 +619,15 @@ setGeneric( #' plotted? #' @param labels A [`logical`] scalar: should labels be drawn? #' @param map_alpha,map_color,map_linetype,map_shape,map_size A vector -#' specifying the information to be highlighted. -#' It will be mapped to the corresponding aesthetic, according to the -#' corresponding `scale` argument (see examples and vignettes). +#' specifying the information to be highlighted. It will be mapped to the +#' corresponding aesthetic (see examples and vignettes). #' If a single `character` string is passed, it must be one of "`observation`", #' "`mass`", "`sum`", "`contribution`" or "`cos2`" (see details). #' Any unambiguous substring can be given. #' If `NULL` (the default), no highlighting is applied. -#' @param scale_color The colors for points. Multiple colors can be -#' specified so that each point can be given its own color. -#' @param scale_linetype A vector of line type specification. -#' @param scale_shape A vector of plotting characters or symbols. -#' @param scale_size A `numeric` vector giving the amount by which plotting -#' characters and symbols should be scaled relative to the default. #' @param main A [`character`] string giving a main title for the plot. #' @param sub A [`character`] string giving a subtitle for the plot. -#' @param ... Currently not used. +#' @param ... Further [graphical parameters][graphics::par] (see details). #' @details #' Available statistics: #' \describe{ @@ -640,6 +637,18 @@ setGeneric( #' \item{`contribution`}{Joint contributions to the definition of `axes`.} #' \item{`cos2`}{Joint \eqn{cos^2}{cos2} along `axes`.} #' } +#' +#' Commonly used [graphical parameters][graphics::par] are: +#' \describe{ +#' \item{`col`}{The colors for lines and points. Multiple colors can be +#' specified so that each point can be given its own color.} +#' \item{`pch`}{A vector of plotting characters or symbols.} +#' \item{`cex`}{A numerical vector giving the amount by which plotting +#' characters and symbols should be scaled relative to the +#' default.} +#' \item{`lty`}{A vector of line types.} +#' \item{`lwd`}{A vector of line widths.} +#' } #' @return #' `viz_*()` is called for its side-effects: it results in a graphic #' being displayed. Invisibly returns `x`. diff --git a/R/biplot.R b/R/biplot.R index c7c4ffd..31ec0f3 100644 --- a/R/biplot.R +++ b/R/biplot.R @@ -12,7 +12,7 @@ setMethod( definition = function(x, axes = c(1, 2), type = c("rows", "columns", "contributions"), active = TRUE, sup = TRUE, - labels = c("rows", "columns"), + labels = "columns", col.rows = "#004488", col.columns = "#BB5566", pch.rows = 16, pch.columns = 17, main = NULL, sub = NULL, ...) { diff --git a/R/dimensio-internal.R b/R/dimensio-internal.R index 7039740..5a8137b 100644 --- a/R/dimensio-internal.R +++ b/R/dimensio-internal.R @@ -6,6 +6,18 @@ `%notin%` <- Negate(`%in%`) +recycle <- function(x, n, verbose = getOption("dimensio.verbose")) { + if (length(x) == n) return(x) + + if (verbose) { + arg <- deparse(substitute(x)) + msg <- sprintf("Note that %s was recycled to length %d.", sQuote(arg), n) + message(msg) + } + x <- rep_len(x, length.out = n) + x +} + #' Weighted Column Means and Standard Deviations #' #' @param x A [`numeric`] matrix. diff --git a/R/viz_coordinates.R b/R/viz_coordinates.R index 0c4288d..4371a64 100644 --- a/R/viz_coordinates.R +++ b/R/viz_coordinates.R @@ -13,16 +13,11 @@ setMethod( labels = FALSE, map_alpha = NULL, map_color = NULL, map_shape = NULL, map_size = NULL, - scale_color = NULL, scale_shape = NULL, - scale_size = NULL, main = NULL, sub = NULL, ...) { viz_points(x, margin = 1, axes = axes, active = active, sup = sup, labels = labels, map_alpha = map_alpha, map_color = map_color, map_shape = map_shape, map_size = map_size, - scale_color = scale_color, - scale_shape = scale_shape, - scale_size = scale_size, main = main, sub = sub, ...) invisible(x) } @@ -34,13 +29,11 @@ setMethod( setMethod( f = "viz_rows", signature = c(x = "BootstrapCA"), - definition = function(x, axes = c(1, 2), scale_color = NULL, - scale_shape = NULL, ...) { + definition = function(x, axes = c(1, 2), ...) { group <- get_groups(x, margin = 1) viz_points(x, margin = 1, axes = axes, active = TRUE, sup = TRUE, labels = FALSE, - map_color = group, scale_color = scale_color, - map_shape = group, scale_shape = scale_shape, ...) + map_color = group, map_shape = group, ...) invisible(x) } ) @@ -55,13 +48,11 @@ setMethod( definition = function(x, axes = c(1, 2), active = TRUE, sup = TRUE, labels = FALSE, map_alpha = NULL, map_color = NULL, map_shape = NULL, map_size = NULL, - scale_color = NULL, scale_shape = NULL, - scale_size = NULL, main = NULL, sub = NULL, ...) { + main = NULL, sub = NULL, ...) { viz_rows(x, axes = axes, active = active, sup = sup, labels = labels, map_alpha = map_alpha, map_color = map_color, map_shape = map_shape, map_size = map_size, - scale_color = scale_color, scale_shape = scale_shape, - scale_size = scale_size, main = main, sub = sub, ...) + main = main, sub = sub, ...) invisible(x) } ) @@ -77,15 +68,11 @@ setMethod( definition = function(x, axes = c(1, 2), active = TRUE, sup = TRUE, labels = FALSE, map_alpha = NULL, map_color = NULL, map_shape = NULL, map_size = NULL, - scale_color = NULL, scale_shape = NULL, - scale_size = NULL, main = NULL, sub = NULL, ...) { + main = NULL, sub = NULL, ...) { viz_points(x, margin = 2, axes = axes, active = active, sup = sup, labels = labels, map_alpha = map_alpha, map_color = map_color, map_shape = map_shape, map_size = map_size, - scale_color = scale_color, - scale_shape = scale_shape, - scale_size = scale_size, main = main, sub = sub, ...) invisible(x) } @@ -97,12 +84,10 @@ setMethod( setMethod( f = "viz_columns", signature = c(x = "BootstrapCA"), - definition = function(x, axes = c(1, 2), scale_color = NULL, - scale_shape = NULL, ...) { + definition = function(x, axes = c(1, 2), ...) { group <- get_groups(x, margin = 2) viz_points(x, margin = 2, axes = axes, active = TRUE, sup = TRUE, - labels = FALSE, map_color = group, scale_color = scale_color, - map_shape = group, scale_shape = scale_shape, ...) + labels = FALSE, map_color = group, map_shape = group, ...) invisible(x) } ) @@ -117,17 +102,16 @@ setMethod( definition = function(x, axes = c(1, 2), active = TRUE, sup = TRUE, labels = TRUE, map_alpha = NULL, map_color = NULL, map_linetype = NULL, map_size = NULL, - scale_color = NULL, scale_linetype = NULL, - scale_size = NULL, main = NULL, sub = NULL, ...) { + main = NULL, sub = NULL, ...) { ## Prepare data coord <- prepare_coord(x, margin = 2, axes = axes, active = active, sup = sup) ## Graphical parameters param <- prepare_param(coord, map_alpha = map_alpha, - map_color = map_color, scale_color = scale_color, - map_linetype = map_linetype, scale_linetype = scale_linetype, - map_size = map_size, scale_size = scale_size) + map_color = map_color, + map_linetype = map_linetype, + map_size = map_size, ...) ## Open new window grDevices::dev.hold() @@ -159,9 +143,8 @@ setMethod( ## Labels if (labels && nrow(coord) > 1) { - usr <- graphics::par("usr") viz_labels(x = coord$x, y = coord$y, labels = coord$label, - xlim = usr[c(1, 2)], ylim = usr[c(3, 4)], col = param$col) + col = param$col) } ## Evaluate post-plot and pre-axis expressions @@ -197,31 +180,25 @@ setMethod( setMethod( f = "viz_variables", signature = c(x = "BootstrapPCA"), - definition = function(x, axes = c(1, 2), scale_color = NULL, - scale_shape = NULL, ...) { + definition = function(x, axes = c(1, 2), ...) { group <- get_groups(x, margin = 2) viz_points(x, margin = 2, axes = axes, active = TRUE, sup = TRUE, - labels = FALSE, map_color = group, scale_color = scale_color, - map_shape = group, scale_shape = scale_shape, ...) + labels = FALSE, map_color = group, map_shape = group, ...) invisible(x) } ) # Helpers ====================================================================== viz_points <- function(x, margin, axes, active = TRUE, sup = TRUE, labels = FALSE, - map_alpha = NULL, map_color = NULL, scale_color = NULL, - map_shape = NULL, scale_shape = NULL, - map_size = NULL, scale_size = NULL, - main = NULL, sub = NULL, ...) { + map_alpha = NULL, map_color = NULL, map_shape = NULL, + map_size = NULL, main = NULL, sub = NULL, ...) { ## Prepare data coord <- prepare_coord(x, margin = margin, axes = axes, active = active, sup = sup) ## Graphical parameters - param <- prepare_param(coord, map_alpha = map_alpha, - map_color = map_color, scale_color = scale_color, - map_shape = map_shape, scale_shape = scale_shape, - map_size = map_size, scale_size = scale_size) + param <- prepare_param(coord, map_alpha = map_alpha, map_color = map_color, + map_shape = map_shape, map_size = map_size, ...) ## Open new window grDevices::dev.hold() @@ -229,8 +206,8 @@ viz_points <- function(x, margin, axes, active = TRUE, sup = TRUE, labels = FALS graphics::plot.new() ## Set plotting coordinates - xlim <- range(coord$x) - ylim <- range(coord$y) + xlim <- range(coord$x, na.rm = TRUE) + ylim <- range(coord$y, na.rm = TRUE) graphics::plot.window(xlim = xlim, ylim = ylim, asp = 1) ## Evaluate pre-plot expressions @@ -244,9 +221,8 @@ viz_points <- function(x, margin, axes, active = TRUE, sup = TRUE, labels = FALS ## Labels if (labels) { - usr <- graphics::par("usr") viz_labels(x = coord$x, y = coord$y, labels = coord$label, - xlim = usr[c(1, 2)], ylim = usr[c(3, 4)], col = param$col, ...) + col = param$col, ...) } ## Evaluate post-plot and pre-axis expressions @@ -339,19 +315,17 @@ prepare_coord <- function(object, margin, axes = c(1, 2), active = TRUE, data } -prepare_param <- function(x, map_alpha = NULL, - map_color = NULL, scale_color = NULL, - map_size = NULL, scale_size = NULL, - map_linetype = NULL, scale_linetype = NULL, - map_shape = NULL, scale_shape = NULL) { +prepare_param <- function(x, map_alpha = NULL, map_color = NULL, + map_size = NULL, map_linetype = NULL, + map_shape = NULL, ...) { n <- nrow(x) ## Graphical parameters - col <- scale_color - pch <- scale_shape - lty <- scale_linetype - cex <- scale_size %||% graphics::par("cex") - lwd <- scale_size %||% graphics::par("lwd") + col <- list(...)$col + pch <- list(...)$pch + lty <- list(...)$lty + cex <- list(...)$cex %||% graphics::par("cex") + lwd <- list(...)$lwd %||% graphics::par("lwd") choices <- c("observation", "mass", "sum", "contribution", "cos2") @@ -371,12 +345,13 @@ prepare_param <- function(x, map_alpha = NULL, } else { ## Discrete scale n_col <- length(unique(map_color)) - if (is.null(col)) col <- grDevices::hcl.colors(n_col, "viridis") - if (length(col) < n_col) assert_length(col, n_col) + if (is.null(col)) + col <- grDevices::hcl.colors(n_col, "viridis") + col <- recycle(col, n_col) col <- col[as.factor(map_color)] } } else { - col <- rep(col %||% graphics::par("col"), n) + col <- rep_len(col %||% graphics::par("col"), n) } if (!is.null(map_alpha)) { @@ -397,10 +372,11 @@ prepare_param <- function(x, map_alpha = NULL, } n_lty <- length(unique(map_linetype)) - if (is.null(lty)) lty <- seq_along(unique(map_linetype)) + if (is.null(lty)) lty <- seq_len(n_lty) + lty <- recycle(lty, n_lty) lty <- lty[as.factor(map_linetype)] } else { - lty <- rep(lty %||% graphics::par("lty"), n) + lty <- rep_len(lty %||% graphics::par("lty"), n) } if (!is.null(map_shape)) { @@ -409,10 +385,12 @@ prepare_param <- function(x, map_alpha = NULL, map_shape <- x[[map_shape]] } - if (is.null(pch)) pch <- seq_along(unique(map_shape)) + n_pch <- length(unique(map_shape)) + if (is.null(pch)) pch <- seq_len(n_pch) + pch <- recycle(pch, n_pch) pch <- pch[as.factor(map_shape)] } else { - pch <- rep(pch %||% graphics::par("pch"), n) + pch <- rep_len(pch %||% graphics::par("pch"), n) } if (!is.null(map_size)) { @@ -424,8 +402,8 @@ prepare_param <- function(x, map_alpha = NULL, cex <- cex + map_size / max(map_size) lwd <- lwd + map_size / max(map_size) } else { - cex <- rep(cex, n) - lwd <- rep(lwd, n) + cex <- rep_len(cex, n) + lwd <- rep_len(lwd, n) } data.frame(col = col, pch = pch, cex = cex, lty = lty, lwd = lwd) diff --git a/R/viz_ellipse.R b/R/viz_ellipse.R index ff97f2f..9be24c5 100644 --- a/R/viz_ellipse.R +++ b/R/viz_ellipse.R @@ -14,6 +14,20 @@ setMethod( } ) +#' @export +#' @rdname viz_wrap +#' @aliases viz_tolerance,BootstrapCA-method +setMethod( + f = "viz_tolerance", + signature = c(x = "BootstrapCA"), + definition = function(x, margin = 1, axes = c(1, 2), level = 0.95, ...) { + group <- get_groups(x, margin = margin) + methods::callNextMethod(x, margin = margin, axes = axes, group = group, + level = level, ...) + invisible(x) + } +) + #' @export #' @rdname viz_wrap #' @aliases viz_confidence,MultivariateAnalysis-method @@ -26,6 +40,20 @@ setMethod( } ) +#' @export +#' @rdname viz_wrap +#' @aliases viz_confidence,BootstrapCA-method +setMethod( + f = "viz_confidence", + signature = c(x = "BootstrapCA"), + definition = function(x, margin = 1, axes = c(1, 2), level = 0.95, ...) { + group <- get_groups(x, margin = margin) + methods::callNextMethod(x, margin = margin, axes = axes, group = group, + level = level, ...) + invisible(x) + } +) + .viz_ellipse <- function(x, type = c("tolerance", "confidence"), level = 0.95, margin = 1, axes = c(1, 2), group = NULL, ...) { fun <- switch( diff --git a/R/viz_hull.R b/R/viz_hull.R index e9574aa..716645f 100644 --- a/R/viz_hull.R +++ b/R/viz_hull.R @@ -30,3 +30,16 @@ setMethod( invisible(x) } ) + +#' @export +#' @rdname viz_wrap +#' @aliases viz_hull,BootstrapCA-method +setMethod( + f = "viz_hull", + signature = c(x = "BootstrapCA"), + definition = function(x, margin = 1, axes = c(1, 2), ...) { + group <- get_groups(x, margin = margin) + methods::callNextMethod(x, margin = margin, axes = axes, group = group, ...) + invisible(x) + } +) diff --git a/R/wrap_ellipses.R b/R/wrap_ellipses.R index 1f20d69..59eed44 100644 --- a/R/wrap_ellipses.R +++ b/R/wrap_ellipses.R @@ -72,6 +72,10 @@ setMethod( lapply( X = data, FUN = function(x, level) { + ## Drop NAs + x <- stats::na.omit(x) + if (nrow(x) < 3) return(NULL) + df <- ncol(x) - 1 radius <- sqrt(stats::qchisq(p = level, df = df)) wrap_ellipse(x[, 1], x[, 2], radius = radius) diff --git a/R/wrap_hull.R b/R/wrap_hull.R index 8203b71..2f462eb 100644 --- a/R/wrap_hull.R +++ b/R/wrap_hull.R @@ -29,6 +29,10 @@ setMethod( lapply( X = data, FUN = function(x) { + ## Drop NAs + x <- stats::na.omit(x) + if (nrow(x) == 0) return(NULL) + i <- grDevices::chull(x[, c(1, 2)]) x[c(i, i[1]), , drop = FALSE] } diff --git a/README.Rmd b/README.Rmd index a9bf0e2..e8c025e 100644 --- a/README.Rmd +++ b/README.Rmd @@ -113,8 +113,8 @@ biplot(X, type = "form") viz_individuals( x = X, map_color = iris$Species, - scale_color = khroma::color("high contrast")(3), - scale_shape = 16 + col = khroma::color("high contrast")(3), + pch = 16 ) ## Add ellipses viz_tolerance( @@ -129,8 +129,8 @@ viz_individuals( x = X, map_color = iris$Petal.Length, map_size = iris$Petal.Length, - scale_color = khroma::color("iridescent")(255), - scale_shape = 16 + col = khroma::color("iridescent")(255), + pch = 16 ) ``` diff --git a/README.md b/README.md index 0e1e31d..83ef10e 100644 --- a/README.md +++ b/README.md @@ -157,8 +157,8 @@ biplot(X, type = "form") viz_individuals( x = X, map_color = iris$Species, - scale_color = khroma::color("high contrast")(3), - scale_shape = 16 + col = khroma::color("high contrast")(3), + pch = 16 ) ## Add ellipses viz_tolerance( @@ -173,8 +173,8 @@ viz_individuals( x = X, map_color = iris$Petal.Length, map_size = iris$Petal.Length, - scale_color = khroma::color("iridescent")(255), - scale_shape = 16 + col = khroma::color("iridescent")(255), + pch = 16 ) ``` diff --git a/inst/examples/ex-plot.R b/inst/examples/ex-plot.R index b1a205f..f59d38e 100644 --- a/inst/examples/ex-plot.R +++ b/inst/examples/ex-plot.R @@ -9,8 +9,7 @@ viz_individuals(X, map_color = iris$Species, map_shape = iris$Species) viz_individuals(X, map_color = iris$Sepal.Width, map_size = "cos2") -viz_individuals(X, map_color = "contribution", map_size = "contribution", - scale_shape = 16) +viz_individuals(X, map_color = "contrib", map_size = "contrib", pch = 16) ## Plot variables viz_variables(X) diff --git a/inst/examples/ex-wrap.R b/inst/examples/ex-wrap.R index af0b735..1b0e1b2 100644 --- a/inst/examples/ex-wrap.R +++ b/inst/examples/ex-wrap.R @@ -16,5 +16,5 @@ conf <- wrap_confidence(X, margin = 1, group = iris$Species, level = 0.95) ## Plot with convex hulls col <- c(blue = "#004488", yellow = "#DDAA33", red = "#BB5566") -viz_rows(X, map_color = iris$Species, scale_color = col) +viz_rows(X, map_color = iris$Species, col = col) viz_hull(X, group = iris$Species, border = col) diff --git a/man/biplot.Rd b/man/biplot.Rd index 7356755..0437292 100644 --- a/man/biplot.Rd +++ b/man/biplot.Rd @@ -13,7 +13,7 @@ type = c("rows", "columns", "contributions"), active = TRUE, sup = TRUE, - labels = c("rows", "columns"), + labels = "columns", col.rows = "#004488", col.columns = "#BB5566", pch.rows = 16, diff --git a/man/figures/README-biplot-1.png b/man/figures/README-biplot-1.png index 08bccb9fad82f99262d9466224e89082d68e9997..7fa35eb81a3df08b9ef3826129133dc41c6458f8 100644 GIT binary patch literal 23187 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 RbDTjOCOh_QFEeyJ@i#bc_w4`x literal 23831 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 diff --git a/man/figures/README-plot-var-1.png b/man/figures/README-plot-var-1.png index b48df2c7bbdb2454aabf751b7fe4e92d8253adf9..ff3c19dbe1f0f8e4869dac0384d2a67baccb880f 100644 GIT binary patch delta 16176 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 z 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 U;-P#SDdL%;oSJO4v>EJw0cpG*9RL6T diff --git a/man/viz_individuals.Rd b/man/viz_individuals.Rd index 8dfe0ce..67e860a 100644 --- a/man/viz_individuals.Rd +++ b/man/viz_individuals.Rd @@ -25,15 +25,12 @@ viz_rows(x, ...) map_color = NULL, map_shape = NULL, map_size = NULL, - scale_color = NULL, - scale_shape = NULL, - scale_size = NULL, main = NULL, sub = NULL, ... ) -\S4method{viz_rows}{BootstrapCA}(x, axes = c(1, 2), scale_color = NULL, scale_shape = NULL, ...) +\S4method{viz_rows}{BootstrapCA}(x, axes = c(1, 2), ...) \S4method{viz_individuals}{PCA}( x, @@ -45,9 +42,6 @@ viz_rows(x, ...) map_color = NULL, map_shape = NULL, map_size = NULL, - scale_color = NULL, - scale_shape = NULL, - scale_size = NULL, main = NULL, sub = NULL, ... @@ -56,7 +50,7 @@ viz_rows(x, ...) \arguments{ \item{x}{A \code{\linkS4class{CA}} or \code{\linkS4class{PCA}} object.} -\item{...}{Currently not used.} +\item{...}{Further \link[graphics:par]{graphical parameters} (see details).} \item{axes}{A length-two \code{\link{numeric}} vector giving the dimensions to be plotted.} @@ -70,22 +64,13 @@ plotted?} \item{labels}{A \code{\link{logical}} scalar: should labels be drawn?} \item{map_alpha, map_color, map_shape, map_size}{A vector specifying the -information to be highlighted. -It will be mapped to the corresponding aesthetic, according to the -corresponding \code{scale} argument (see examples and vignettes). +information to be highlighted. It will be mapped to the corresponding +aesthetic (see examples and vignettes). If a single \code{character} string is passed, it must be one of "\code{observation}", "\code{mass}", "\code{sum}", "\code{contribution}" or "\code{cos2}" (see details). Any unambiguous substring can be given. If \code{NULL} (the default), no highlighting is applied.} -\item{scale_color}{The colors for points. Multiple colors can be -specified so that each point can be given its own color.} - -\item{scale_shape}{A vector of plotting characters or symbols.} - -\item{scale_size}{A \code{numeric} vector giving the amount by which plotting -characters and symbols should be scaled relative to the default.} - \item{main}{A \code{\link{character}} string giving a main title for the plot.} \item{sub}{A \code{\link{character}} string giving a subtitle for the plot.} @@ -106,6 +91,16 @@ Available statistics: \item{\code{contribution}}{Joint contributions to the definition of \code{axes}.} \item{\code{cos2}}{Joint \eqn{cos^2}{cos2} along \code{axes}.} } + +Commonly used \link[graphics:par]{graphical parameters} are: +\describe{ +\item{\code{col}}{The colors for lines and points. Multiple colors can be +specified so that each point can be given its own color.} +\item{\code{pch}}{A vector of plotting characters or symbols.} +\item{\code{cex}}{A numerical vector giving the amount by which plotting +characters and symbols should be scaled relative to the +default.} +} } \examples{ ## Load data @@ -119,8 +114,7 @@ viz_individuals(X, map_color = iris$Species, map_shape = iris$Species) viz_individuals(X, map_color = iris$Sepal.Width, map_size = "cos2") -viz_individuals(X, map_color = "contribution", map_size = "contribution", - scale_shape = 16) +viz_individuals(X, map_color = "contrib", map_size = "contrib", pch = 16) ## Plot variables viz_variables(X) diff --git a/man/viz_variables.Rd b/man/viz_variables.Rd index df59783..6d7581b 100644 --- a/man/viz_variables.Rd +++ b/man/viz_variables.Rd @@ -26,15 +26,12 @@ viz_columns(x, ...) map_color = NULL, map_shape = NULL, map_size = NULL, - scale_color = NULL, - scale_shape = NULL, - scale_size = NULL, main = NULL, sub = NULL, ... ) -\S4method{viz_columns}{BootstrapCA}(x, axes = c(1, 2), scale_color = NULL, scale_shape = NULL, ...) +\S4method{viz_columns}{BootstrapCA}(x, axes = c(1, 2), ...) \S4method{viz_variables}{PCA}( x, @@ -46,20 +43,17 @@ viz_columns(x, ...) map_color = NULL, map_linetype = NULL, map_size = NULL, - scale_color = NULL, - scale_linetype = NULL, - scale_size = NULL, main = NULL, sub = NULL, ... ) -\S4method{viz_variables}{BootstrapPCA}(x, axes = c(1, 2), scale_color = NULL, scale_shape = NULL, ...) +\S4method{viz_variables}{BootstrapPCA}(x, axes = c(1, 2), ...) } \arguments{ \item{x}{A \code{\linkS4class{CA}} or \code{\linkS4class{PCA}} object.} -\item{...}{Currently not used.} +\item{...}{Further \link[graphics:par]{graphical parameters} (see details).} \item{axes}{A length-two \code{\link{numeric}} vector giving the dimensions to be plotted.} @@ -73,27 +67,16 @@ plotted?} \item{labels}{A \code{\link{logical}} scalar: should labels be drawn?} \item{map_alpha, map_color, map_linetype, map_shape, map_size}{A vector -specifying the information to be highlighted. -It will be mapped to the corresponding aesthetic, according to the -corresponding \code{scale} argument (see examples and vignettes). +specifying the information to be highlighted. It will be mapped to the +corresponding aesthetic (see examples and vignettes). If a single \code{character} string is passed, it must be one of "\code{observation}", "\code{mass}", "\code{sum}", "\code{contribution}" or "\code{cos2}" (see details). Any unambiguous substring can be given. If \code{NULL} (the default), no highlighting is applied.} -\item{scale_color}{The colors for points. Multiple colors can be -specified so that each point can be given its own color.} - -\item{scale_shape}{A vector of plotting characters or symbols.} - -\item{scale_size}{A \code{numeric} vector giving the amount by which plotting -characters and symbols should be scaled relative to the default.} - \item{main}{A \code{\link{character}} string giving a main title for the plot.} \item{sub}{A \code{\link{character}} string giving a subtitle for the plot.} - -\item{scale_linetype}{A vector of line type specification.} } \value{ \verb{viz_*()} is called for its side-effects: it results in a graphic @@ -111,6 +94,18 @@ Available statistics: \item{\code{contribution}}{Joint contributions to the definition of \code{axes}.} \item{\code{cos2}}{Joint \eqn{cos^2}{cos2} along \code{axes}.} } + +Commonly used \link[graphics:par]{graphical parameters} are: +\describe{ +\item{\code{col}}{The colors for lines and points. Multiple colors can be +specified so that each point can be given its own color.} +\item{\code{pch}}{A vector of plotting characters or symbols.} +\item{\code{cex}}{A numerical vector giving the amount by which plotting +characters and symbols should be scaled relative to the +default.} +\item{\code{lty}}{A vector of line types.} +\item{\code{lwd}}{A vector of line widths.} +} } \examples{ ## Load data @@ -124,8 +119,7 @@ viz_individuals(X, map_color = iris$Species, map_shape = iris$Species) viz_individuals(X, map_color = iris$Sepal.Width, map_size = "cos2") -viz_individuals(X, map_color = "contribution", map_size = "contribution", - scale_shape = 16) +viz_individuals(X, map_color = "contrib", map_size = "contrib", pch = 16) ## Plot variables viz_variables(X) diff --git a/man/viz_wrap.Rd b/man/viz_wrap.Rd index ecd911c..ba1512a 100644 --- a/man/viz_wrap.Rd +++ b/man/viz_wrap.Rd @@ -10,8 +10,11 @@ \alias{viz_tolerance} \alias{viz_tolerance-method} \alias{viz_tolerance,MultivariateAnalysis-method} +\alias{viz_tolerance,BootstrapCA-method} \alias{viz_confidence,MultivariateAnalysis-method} +\alias{viz_confidence,BootstrapCA-method} \alias{viz_hull,MultivariateAnalysis-method} +\alias{viz_hull,BootstrapCA-method} \title{Plot Envelopes} \usage{ viz_hull(x, ...) @@ -22,9 +25,15 @@ viz_tolerance(x, ...) \S4method{viz_tolerance}{MultivariateAnalysis}(x, margin = 1, axes = c(1, 2), group = NULL, level = 0.95, ...) +\S4method{viz_tolerance}{BootstrapCA}(x, margin = 1, axes = c(1, 2), level = 0.95, ...) + \S4method{viz_confidence}{MultivariateAnalysis}(x, margin = 1, axes = c(1, 2), group = NULL, level = 0.95, ...) +\S4method{viz_confidence}{BootstrapCA}(x, margin = 1, axes = c(1, 2), level = 0.95, ...) + \S4method{viz_hull}{MultivariateAnalysis}(x, margin = 1, axes = c(1, 2), group = NULL, ...) + +\S4method{viz_hull}{BootstrapCA}(x, margin = 1, axes = c(1, 2), ...) } \arguments{ \item{x}{An object from which to wrap observations (a \code{\linkS4class{CA}} or @@ -70,7 +79,7 @@ conf <- wrap_confidence(X, margin = 1, group = iris$Species, level = 0.95) ## Plot with convex hulls col <- c(blue = "#004488", yellow = "#DDAA33", red = "#BB5566") -viz_rows(X, map_color = iris$Species, scale_color = col) +viz_rows(X, map_color = iris$Species, col = col) viz_hull(X, group = iris$Species, border = col) } \seealso{ diff --git a/man/wrap.Rd b/man/wrap.Rd index 81964e6..8b4aff1 100644 --- a/man/wrap.Rd +++ b/man/wrap.Rd @@ -75,7 +75,7 @@ conf <- wrap_confidence(X, margin = 1, group = iris$Species, level = 0.95) ## Plot with convex hulls col <- c(blue = "#004488", yellow = "#DDAA33", red = "#BB5566") -viz_rows(X, map_color = iris$Species, scale_color = col) +viz_rows(X, map_color = iris$Species, col = col) viz_hull(X, group = iris$Species, border = col) } \seealso{ diff --git a/vignettes/pca.Rmd b/vignettes/pca.Rmd index 2def2f1..9376be5 100644 --- a/vignettes/pca.Rmd +++ b/vignettes/pca.Rmd @@ -107,7 +107,7 @@ viz_variables(X) viz_variables( x = X, map_color = "cos2", - scale_color = khroma::color("YlOrBr")(12) + col = khroma::color("YlOrBr")(12) ) ``` @@ -121,8 +121,8 @@ viz_individuals( x = X, map_color = iris$Species, map_shape = iris$Species, - scale_color = khroma::color("bright")(3), # Custom color scale - scale_shape = c(15, 16, 17) # Custom symbols + col = khroma::color("bright")(3), # Custom color scale + pch = c(15, 16, 17) # Custom symbols ) ``` @@ -143,8 +143,8 @@ viz_hull(x = X, group = iris$Species, level = 0.95, viz_individuals( x = X, map_color = iris$Petal.Length, - scale_color = khroma::color("YlOrBr")(12), # Custom color scale - scale_shape = 16 + col = khroma::color("YlOrBr")(12), # Custom color scale + pch = 16 ) ``` @@ -154,8 +154,8 @@ viz_individuals( x = X, map_color = "contrib", map_size = "contrib", - scale_color = khroma::color("iridescent")(12), # Custom color scale - scale_shape = 16 + col = khroma::color("iridescent")(12), # Custom color scale + pch = 16 ) ```