Nothing
#' @include utilities.R
NULL
#' Draw confidence ellipses around the categories
#' @description Draw confidence ellipses around the categories
#' @inheritParams fviz
#' @inheritParams ggpubr::ggpar
#' @param X an object of class MCA, PCA or MFA.
#' @param habillage a numeric vector of indexes of variables or a
#' character vector of names of variables. Can be also a data frame containing grouping variables.
#' @param geom a text specifying the geometry to be used for the graph. Allowed
#' values are the combination of c("point", "text"). Use "point" (to show only
#' points); "text" to show only labels; c("point", "text") to show both types.
#' @param ... Arguments to be passed to the functions ggpubr::ggscatter() &
#' ggpubr::ggpar().
#'
#' @return a ggplot
#' @author Alboukadel Kassambara \email{alboukadel.kassambara@@gmail.com}
#'
#' @rdname fviz_ellipses
#' @examples
#' \donttest{
#'
#' # Multiple Correspondence Analysis
#' # +++++++++++++++++++++++++++++++++
#' library(FactoMineR)
#' data(poison)
#' res.mca <- MCA(poison, quanti.sup = 1:2,
#' quali.sup = 3:4, graph=FALSE)
#'
#' fviz_ellipses(res.mca, 1:4, geom = "point",
#' palette = "jco")
#'
#' }
#' @export
fviz_ellipses <- function(X, habillage, axes = c(1,2),
addEllipses = TRUE, ellipse.type = "confidence",
palette = NULL, pointsize = 1, geom = c("point", "text"),
ggtheme = theme_bw(),...){
df <- facto_summarize(X, element = "ind", axes = axes, result = c("coord"))
colnames(df)[2:3] <- c("x", "y")
# augment data, if qualitative variable is used to color points by groups
dd <- .add_ind_groups(X, df, habillage)
df <- dd$ind
color <- dd$name.quali
if(length(habillage)==1 | is.factor(habillage)) legend. <- "right" else legend. = "none"
label <- NULL
if("text" %in% geom) label <- "name"
p <- ggpubr::ggscatter(df, x = "x", y = "y", color = color, palette = palette,
ellipse = addEllipses, ellipse.type = ellipse.type,
legend = legend., ggtheme = ggtheme, mean.point = TRUE,
label = label, size = pointsize, ...)
# Faceting when multiple variables are used to color individuals
# in this case there is a column "facet_vars" in df
if("facet_vars" %in% colnames(df)){
groups <- c("facet_vars", "Groups")
xx <- ggpubr::desc_statby(df, measure.var = "x", grps = groups)[, c(groups, "mean")]
colnames(xx)[ncol(xx)] <- "x"
yy <- ggpubr::desc_statby(df, measure.var = "y", grps = groups)[, c(groups, "mean")]
xx$y <- yy$mean
grp_coord <- xx
p <- ggpubr::ggtext(grp_coord, x = "x", y = "y", color = color,
palette = palette,
legend = legend., ggtheme = ggtheme,
label = "Groups", ggp = p, ...)
p <- p + facet_wrap(~facet_vars)
}
p <- .fviz_finish(p, X, axes, ...)
p
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.