#' gg_dotplotmulti
#'
#' Cré le même graphique que \code{gg_dotplot()}, mais plus petit, car affichage de 5 graphiques par ligne.
#'
#' @param x data.
#' @param max.ratio Valeur maximale de l'axe.
#' @param cvslabel Valeur parmi la variable \code{cvs} servant de référence. Les limites associées à ce CVS de référence serviront à identifier les outliers.
#'
#' @return Sauvegarde d'une image, geom_dotplot.
#' @import data.table
#' @import plyr
#' @import dplyr
#' @import ggplot2
#' @import latex2exp
#' @export
gg_dotplotmulti <- function(x, max.ratio = 3, cvslabel = 3){
# Arrangement x
x <- x %>%
select(an, code, CVS, cv, thetaj,
liminf = paste0("liminf_cvs",cvslabel),
limsup = paste0("limsup_cvs",cvslabel)) %>%
as.data.table()
x[, Outlier := FALSE]
x[thetaj < liminf | thetaj > limsup, Outlier := TRUE]
setorder(x, -CVS)
x <- precision(x, "cv", prec.suff, prec.lim)
x[, code := paste0(variable.code," : ",code,
"\nCVS = ", format(round(CVS, 1), nsmall = 1, decimal.mark = ","),
"\nPréc = ", prec)]
# Ajouter des codes vides pour faire 5 codes par ligne
if(length(unique(x$code)) %% 5){
x <- as.data.table(rbind.fill(x, data.table(
an = 1,
code = sapply(seq(5 - (length(unique(x$code)) %% 5)), function(x){paste(rep(" ", x), collapse = "")}),
CVS = 1,
cv = 1,
thetaj = NA,
liminf = 1,
limsup = 1,
Outlier = FALSE,
prec = "Ins."
)))
}
x[, code := factor(code, levels = unique(x$code))]
# Création dossier pour stocker photos
dir.create("dotplot_multi") # création dossier
setwd(paste0(getwd(),"/","dotplot_multi")) # working directory
# Créer + sauvegarde des graphes
i = 1
while(i <= ceiling(length(unique(x$code))/5)){
code_select <- unique(x$code)[seq(5*(i-1)+1, 5 * i)]
tab <- x[code %in% code_select]
# Créer
ggplot(tab, aes(thetaj, fill = Outlier, color = Outlier)) +
geom_dotplot(stackdir = "center",
dotsize = 0.5) +
scale_fill_manual(values = c("blue", "blue")) +
scale_color_manual(values = c("blue", "blue")) +
scale_x_continuous(limits = c(0, max.ratio)) +
labs(x = TeX("$\\hat{\\theta}_{j}$")) +
theme(
panel.background = element_blank(), # fond blanc
legend.position = c(0.9, 0.9), # droite + haut
axis.ticks.x = element_blank(), # supprimer ticks
axis.title.x = element_blank(), # supprimer titre
axis.text.x = element_blank(), # supprimer valeurs ticks
axis.title.y = element_text(size = 15)
) +
coord_flip() +
guides(fill = FALSE,
color = FALSE) +
facet_wrap(~code, ncol = 5)
# Sauvegarde
ggsave(filename = paste0(i,".png"),
device = "png",
width = 7, height = 2.1, units = "in")
i = i + 1
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.