From 632f9751af8d2c6b60945f575e005590d1f1ae85 Mon Sep 17 00:00:00 2001
From: Gael <Gael@WL20-0067.corp.pasteur.fr>
Date: Fri, 8 Oct 2021 13:28:24 +0200
Subject: [PATCH] v10.8.3 release

---
 README.md                    |    5 +
 cute_little_R_functions.R    | 8853 +++++++++++++++++-----------------
 cute_little_R_functions.docx |  Bin 493524 -> 493745 bytes
 3 files changed, 4434 insertions(+), 4424 deletions(-)

diff --git a/README.md b/README.md
index b4acd9a..28f1782 100644
--- a/README.md
+++ b/README.md
@@ -170,6 +170,11 @@ Gitlab developers
 
 ## WHAT'S NEW IN
 
+### v10.8.3
+
+1) fun.test() and fun.slide() debbuged for cute.path
+
+
 ### v10.8.2
 
 1) forgot to add fun_gg_scatter() and fun_gg_boxplot() to v10.8.1. Now ok
diff --git a/cute_little_R_functions.R b/cute_little_R_functions.R
index 1d08a27..91196fa 100644
--- a/cute_little_R_functions.R
+++ b/cute_little_R_functions.R
@@ -2057,11 +2057,13 @@ fun_test <- function(
         tempo <- fun_check(data = cute.path, class = "vector", typeof = "character", length = 1, fun.name = function.name) ; eval(ee)
         if(tempo$problem == FALSE){
             if(grepl(x = cute.path, pattern = "^http")){
-                tempo.try1 <- any(grepl(x = fun_get_message("source(cute.path)"), pattern = "^[Ee]rror"))
+                tempo.error1 <- any(grepl(x = fun_get_message("source(cute.path)"), pattern = "^[Ee]rror"))
+                tempo.error2 <- FALSE
             }else{
-                tempo.try2 <- ! file.exists(cute.path)
+                tempo.error1 <- FALSE
+                tempo.error2 <- ! file.exists(cute.path)
             }
-            if(tempo.try1 | tempo.try2){
+            if(tempo.error1 | tempo.error2){
                 tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(grepl(x = cute.path, pattern = "^http"), "URL", "FILE"), " PATH INDICATED IN THE cute.path PARAMETER DOES NOT EXISTS:\n", cute.path)
                 text.check <- c(text.check, tempo.cat)
                 arg.check <- c(arg.check, TRUE)
@@ -3952,11 +3954,13 @@ fun_slide <- function(
     tempo <- fun_check(data = cute.path, class = "vector", typeof = "character", length = 1, fun.name = function.name) ; eval(ee)
     if(tempo$problem == FALSE){
         if(grepl(x = cute.path, pattern = "^http")){
-            tempo.try1 <- any(grepl(x = fun_get_message("source(cute.path)"), pattern = "^[Ee]rror"))
+            tempo.error1 <- any(grepl(x = fun_get_message("source(cute.path)"), pattern = "^[Ee]rror"))
+            tempo.error2 <- FALSE
         }else{
-            tempo.try2 <- ! file.exists(cute.path)
+            tempo.error1 <- FALSE
+            tempo.error2 <- ! file.exists(cute.path)
         }
-        if(tempo.try1 | tempo.try2){
+        if(tempo.error1 | tempo.error2){
             tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(grepl(x = cute.path, pattern = "^http"), "URL", "FILE"), " PATH INDICATED IN THE cute.path PARAMETER DOES NOT EXISTS:\n", cute.path)
             text.check <- c(text.check, tempo.cat)
             arg.check <- c(arg.check, TRUE)
@@ -9043,4261 +9047,4262 @@ fun_get_message <- function(
 # add horizontal argument and deal any conflict with vertical argument. Start with horizontal = NULL as default. If ! is.null() -> convert vertical if required
 
 fun_gg_boxplot <- function(
-data1, 
-y, 
-categ, 
-categ.class.order = NULL, 
-categ.color = NULL, 
-box.legend.name = NULL, 
-box.fill = FALSE, 
-box.width = 0.5, 
-box.space = 0.1, 
-box.line.size = 0.75, 
-box.notch = FALSE, 
-box.alpha = 1, 
-box.mean = TRUE, 
-box.whisker.kind = "std", 
-box.whisker.width = 0, 
-dot.color = grey(0.25), 
-dot.categ = NULL, 
-dot.categ.class.order = NULL, 
-dot.legend.name = NULL, 
-dot.tidy = FALSE, 
-dot.tidy.bin.nb = 50, 
-dot.jitter = 0.5, 
-dot.seed = 2, 
-dot.size = 3, 
-dot.alpha = 0.5, 
-dot.border.size = 0.5, 
-dot.border.color = NULL, 
-x.lab = NULL, 
-x.angle = 0, 
-y.lab = NULL, 
-y.lim = NULL, 
-y.log = "no", 
-y.tick.nb = NULL, 
-y.second.tick.nb = 1, 
-y.include.zero = FALSE, 
-y.top.extra.margin = 0.05, 
-y.bottom.extra.margin = 0.05, 
-stat.pos = "top", 
-stat.mean = FALSE, 
-stat.size = 4, 
-stat.dist = 5, 
-stat.angle = 0, 
-vertical = TRUE, 
-text.size = 12, 
-title = "", 
-title.text.size = 8, 
-legend.show = TRUE, 
-legend.width = 0.5, 
-article = TRUE, 
-grid = FALSE, 
-add = NULL, 
-return = FALSE, 
-return.ggplot = FALSE,
-return.gtable = TRUE,
-plot = TRUE, 
-warn.print = FALSE, 
-lib.path = NULL
+    data1, 
+    y, 
+    categ, 
+    categ.class.order = NULL, 
+    categ.color = NULL, 
+    box.legend.name = NULL, 
+    box.fill = FALSE, 
+    box.width = 0.5, 
+    box.space = 0.1, 
+    box.line.size = 0.75, 
+    box.notch = FALSE, 
+    box.alpha = 1, 
+    box.mean = TRUE, 
+    box.whisker.kind = "std", 
+    box.whisker.width = 0, 
+    dot.color = grey(0.25), 
+    dot.categ = NULL, 
+    dot.categ.class.order = NULL, 
+    dot.legend.name = NULL, 
+    dot.tidy = FALSE, 
+    dot.tidy.bin.nb = 50, 
+    dot.jitter = 0.5, 
+    dot.seed = 2, 
+    dot.size = 3, 
+    dot.alpha = 0.5, 
+    dot.border.size = 0.5, 
+    dot.border.color = NULL, 
+    x.lab = NULL, 
+    x.angle = 0, 
+    y.lab = NULL, 
+    y.lim = NULL, 
+    y.log = "no", 
+    y.tick.nb = NULL, 
+    y.second.tick.nb = 1, 
+    y.include.zero = FALSE, 
+    y.top.extra.margin = 0.05, 
+    y.bottom.extra.margin = 0.05, 
+    stat.pos = "top", 
+    stat.mean = FALSE, 
+    stat.size = 4, 
+    stat.dist = 5, 
+    stat.angle = 0, 
+    vertical = TRUE, 
+    text.size = 12, 
+    title = "", 
+    title.text.size = 8, 
+    legend.show = TRUE, 
+    legend.width = 0.5, 
+    article = TRUE, 
+    grid = FALSE, 
+    add = NULL, 
+    return = FALSE, 
+    return.ggplot = FALSE,
+    return.gtable = TRUE,
+    plot = TRUE, 
+    warn.print = FALSE, 
+    lib.path = NULL
 ){
-# AIM
-# Plot ggplot2 boxplots + dots + means
-# For ggplot2 specifications, see: https://ggplot2.tidyverse.org/articles/ggplot2-specs.html
-# WARNINGS
-# Rows containing NA in data1[, c(y, categ)] will be removed before processing, with a warning (see below)
-# Hinges are not computed like in the classical boxplot() function of R. See https://ggplot2.tidyverse.org/reference/geom_boxplot.html
-# To have a single box, please create a factor column with a single class and specify the name of this column in the categ argument. For a single set of grouped boxes, create a factor column with a single class and specify this column in categ argument as first element (i.e., as categ1, knowing that categ2 must also be specified in this situation). See categ argument below
-# The dot.alpha argument can alter the display of the color boxes when using pdf output
-# Size arguments (box.line.size, dot.size, dot.border.size, stat.size, text.size and title.text.size) are in mm. See Hadley comment in https://stackoverflow.com/questions/17311917/ggplot2-the-unit-of-size. See also http://sape.inf.usi.ch/quick-reference/ggplot2/size). Unit object are not accepted, but conversion can be used (e.g., grid::convertUnit(grid::unit(0.2, "inches"), "mm", valueOnly = TRUE))
-# Display seems to be done twice on Windows devices (like a blink). However, no double plots on pdf devices. Thus, the blink remains mysterious
-# To remove boxes and have only dots, use box.alpha = 0
-# ARGUMENTS
-# data1: data frame containing one column of quantitative values (see the y argument below) and one or two columns of categories (see the categ argument below). Duplicated column names are not allowed
-# y: character string of the data1 column name for y-axis (column containing numeric values). Numeric values will be split according to the classes of the column names indicated in the categ argument to generate the boxes and will also be used to plot the dots
-# categ: vector of character strings of the data1 column name for categories (column of characters or factors). Must be either one or two column names. If a single column name (further referred to as categ1), then one box per class of categ1. If two column names (further referred to as categ1 and categ2), then one box per class of categ2, which form a group of boxes in each class of categ1. WARNING: no empty classes allowed. To have a single box, create a factor column with a single class and specify the name of this column in the categ argument (here, no categ2 in categ argument). For a single set of grouped boxes, create a factor column with a single class and specify this column in categ argument as first element (i.e., as categ1), in addition to the already used category (as categ2 in this situation)
-# categ.class.order: list indicating the order of the classes of categ1 and categ2 represented on the boxplot (the first compartment for categ1 and and the second for categ2). If categ.class.order == NULL, classes are represented according to the alphabetical order. Some compartments can be NULL and others not. See the categ argument for categ1 and categ2 description
-# categ.color: vector of color character string for box frames (see the categ argument for categ1 and categ2 description)
-# If categ.color == NULL, default colors of ggplot2, whatever categ1 and categ2
-# If categ.color is non-null and only categ1 in categ argument, categ.color can be either:
-# (1) a single color string. All the boxes will have this color, whatever the number of classes of categ1
-# (2) a vector of string colors, one for each class of categ1. Each color will be associated according to categ.class.order of categ1
-# (3) a vector or factor of string colors, like if it was one of the column of data1 data frame. WARNING: a single color per class of categ1 and a single class of categ1 per color must be respected
-# Color functions, like grey(), hsv(), etc., are also accepted
-# Positive integers are also accepted instead of character strings, as long as above rules about length are respected. Integers will be processed by fun_gg_palette() using the maximal integer value among all the integers in categ.color (see fun_gg_palette())
-# If categ.color is non-null and categ1 and categ2 are specified, all the rules described above will apply to categ2 instead of categ1 (colors will be determined for boxes inside a group of boxes)
-# box.legend.name: character string of the legend title. If box.legend.name is NULL, then box.legend.name <- categ1 if only categ1 is present, and box.legend.name <- categ2 if categ1 and categ2 are present in the categ argument. Write "" if no legend required. See the categ argument for categ1 and categ2 description
-# box.fill: logical. Fill the box? If TRUE, the categ.color argument will be used to generate filled boxplots (the box frames being black) as well as filled outlier dots (the dot border being controlled by the dot.border.color argument). If all the dots are plotted (argument dot.color other than NULL), they will be over the boxes. If FALSE, the categ.color argument will be used to color the box frames and the outlier dot borders. If all the dots are plotted, they will be beneath the boxes
-# box.width: single numeric value (from 0 to 1) of width of either boxes or group of boxes
-# When categ argument has a single categ1 element (i.e., separate boxes. See the categ argument for categ1 and categ2 description), then each class of categ1 is represented by a single box. In that case, box.width argument defines each box width, from 0 (no box width) to 1 (max box width), but also the space between boxes (the code uses 1 - box.width for the box spaces). Of note, xmin and xmax of the fun_gg_boxplot() output report the box boundaries (around x-axis unit 1, 2, 3, etc., for each box)
-# When categ argument has a two categ1 and categ2 elements (i.e., grouped boxes), box.width argument defines the width allocated for each set of grouped boxes, from 0 (no group width) to 1 (max group width), but also the space between grouped boxes (the code uses 1 - box.width for the spaces). Of note, xmin and xmax of the fun_gg_boxplot() output report the box boundaries (around x-axis unit 1, 2, 3, etc., for each set of grouped box)
-# box.space: single numeric value (from 0 to 1) indicating the box separation inside grouped boxes, when categ argument has a two categ1 and categ2 elements. 0 means no space and 1 means boxes shrunk to a vertical line. Ignored if categ argument has a single categ1 element
-# box.line.size: single numeric value of line width of boxes and whiskers in mm
-# box.notch: logical. Notched boxplot? It TRUE, display notched boxplot, notches corresponding approximately to the 95% confidence interval of the median (the notch interval is exactly 1.58 x Inter Quartile Range (IQR) / sqrt(n), with n the number of values that made the box). If notch intervals between two boxes do not overlap, it can be interpreted as significant median differences
-# box.alpha: single numeric value (from 0 to 1) of box transparency (full transparent to full opaque, respectively). To remove boxplots, use box.alpha = 0
-# box.mean: logical. Add mean value? If TRUE, a diamond-shaped dot, with the horizontal diagonal corresponding to the mean value, is displayed over each boxplot
-# box.whisker.kind: range of the whiskers. Either "no" (no whiskers), or "std" (length of each whisker equal to 1.5 x Inter Quartile Range (IQR)), or "max" (length of the whiskers up or down to the most distant dot)
-# box.whisker.width: single numeric value (from 0 to 1) of the whisker width, with 0 meaning no whiskers and 1 meaning a width equal to the box width
-# dot.color: vector of color character string ruling the dot colors and the dot display. See the example section below for easier understanding of the rules described here
-# If NULL, no dots plotted
-# If "same", the dots will have the same colors as the respective boxplots
-# Otherwise, as in the rule (1), (2) or (3) described in the categ.color argument, except that in the possibility (3), the rule "a single color per class of categ and a single class of categ per color", does not have to be respected (for instance, each dot can have a different color). Colors will also depend on the dot.categ argument. If dot.categ is NULL, then colors will be applied to each class of the last column name specified in categ. If dot.categ is non-NULL, colors will be applied to each class of the column name specified in dot.categ. See examples
-# dot.categ: optional single character string of a column name (further referred to as categ3) of the data1 argument. This column of data1 will be used to generate a legend for dots, in addition to the legend for boxes. See the dot.color argument for details about the way the legend is built using the two dot.categ and dot.color arguments. If NULL, no legend created and the colors of dots will depend on dot.color and categ arguments (as explained in the dot.color argument)
-# dot.categ.class.order: optional vector of character strings indicating the order of the classes of categ3 (see the dot.categ argument). If dot.categ is non-NULL and dot.categ.class.order is NULL, classes are displayed in the legend according to the alphabetical order. Ignored if dot.categ is NULL
-# dot.legend.name: optional character string of the legend title for categ3 (see the dot.categ argument). If dot.legend.name == NULL, dot.categ value is used (name of the column in data1). Write "" if no legend required. Ignored if dot.categ is NULL
-# dot.tidy: logical. Nice dot spreading? If TRUE, use the geom_dotplot() function for a nice representation. WARNING: change the true quantitative coordinates of dots (i.e., y-axis values for vertical display) because of binning. Thus, the gain in aestheticism is associated with a loss in precision that can be very important. If FALSE, dots are randomly spread on the qualitative axis, using the dot.jitter argument (see below) keeping the true quantitative coordinates
-# dot.tidy.bin.nb: positive integer indicating the number of bins (i.e., nb of separations) of the y.lim range. Each dot will then be put in one of the bin, with a diameter of the width of the bin. In other words, increase the number of bins to have smaller dots. Not considered if dot.tidy is FALSE
-# dot.jitter: numeric value (from 0 to 1) of random dot horizontal dispersion (for vertical display), with 0 meaning no dispersion and 1 meaning dispersion in the corresponding box width interval. Not considered if dot.tidy is TRUE
-# dot.seed: integer value that set the random seed. Using the same number will generate the same dot jittering. Write NULL to have different jittering each time the same instruction is run. Ignored if dot.tidy is TRUE
-# dot.size: numeric value of dot diameter in mm. Not considered if dot.tidy is TRUE
-# dot.alpha: numeric value (from 0 to 1) of dot transparency (full transparent to full opaque, respectively)
-# dot.border.size: numeric value of border dot width in mm. Write zero for no dot border. If dot.tidy is TRUE, value 0 remove the border and other values leave the border without size control (geom_doplot() feature)
-# dot.border.color: single character color string defining the color of the dot border (same color for all the dots, whatever their categories). If dot.border.color == NULL, the border color will be the same as the dot color. A single integer is also accepted instead of a character string, that will be processed by fun_gg_palette()
-# x.lab: a character string or expression for x-axis legend. If NULL, character string of categ1 (see the categ argument for categ1 and categ2 description)
-# x.angle: integer value of the text angle for the x-axis numbers, using the same rules as in ggplot2. Positive values for counterclockwise rotation: 0 for horizontal, 90 for vertical, 180 for upside down etc. Negative values for clockwise rotation: 0 for horizontal, -90 for vertical, -180 for upside down etc.
-# y.lab: a character string or expression for y-axis legend. If NULL, character string of the y argument
-# y.lim: 2 numeric values indicating the range of the y-axis. Order matters (for inverted axis). If NULL, the range of the x column name of data1 will be used. 
-# y.log: either "no", "log2" (values in the y argument column of the data1 data frame will be log2 transformed and y-axis will be log2 scaled) or "log10" (values in the y argument column of the data1 data frame will be log10 transformed and y-axis will be log10 scaled). WARNING: not possible to have horizontal boxes with a log axis, due to a bug in ggplot2 (see https://github.com/tidyverse/ggplot2/issues/881)
-# y.tick.nb: approximate number of desired values labeling the y-axis (i.e., main ticks, see the n argument of the the cute::fun_scale() function). If NULL and if y.log is "no", then the number of labeling values is set by ggplot2. If NULL and if y.log is "log2" or "log10", then the number of labeling values corresponds to all the exposant integers in the y.lim range (e.g., 10^1, 10^2 and 10^3, meaning 3 main ticks for y.lim = c(9, 1200)). WARNING: if non-NULL and if y.log is "log2" or "log10", labeling can be difficult to read (e.g., ..., 10^2, 10^2.5, 10^3, ...)
-# y.second.tick.nb: number of desired secondary ticks between main ticks. Ignored if y.log is other than "no" (log scale plotted). Use argument return = TRUE and see $plot$y.second.tick.values to have the values associated to secondary ticks. IF NULL, no secondary ticks
-# y.include.zero: logical. Does y.lim range include 0? Ignored if y.log is "log2" or "log10"
-# y.top.extra.margin: single proportion (between 0 and 1) indicating if extra margins must be added to y.lim. If different from 0, add the range of the axis multiplied by y.top.extra.margin (e.g., abs(y.lim[2] - y.lim[1]) * y.top.extra.margin) to the top of y-axis
-# y.bottom.extra.margin: idem as y.top.extra.margin but to the bottom of y-axis
-# stat.pos: add the median number above the corresponding box. Either NULL (no number shown), "top" (at the top of the plot region) or "above" (above each box)
-# stat.mean: logical. Display mean numbers instead of median numbers? Ignored if stat.pos is NULL
-# stat.size: numeric value of the stat font size in mm. Ignored if stat.pos is NULL
-# stat.dist: numeric value of the stat distance in percentage of the y-axis range (stat.dist = 5 means move the number displayed at 5% of the y-axis range). Ignored if stat.pos is NULL or "top"
-# stat.angle: integer value of the angle of stat, using the same rules as in ggplot2. Positive values for counterclockwise rotation: 0 for horizontal, 90 for vertical, 180 for upside down etc. Negative values for clockwise rotation: 0 for horizontal, -90 for vertical, -180 for upside down etc.
-# vertical: logical. Vertical boxes? WARNING: will be automatically set to TRUE if y.log argument is other than "no". Indeed, not possible to have horizontal boxes with a log axis, due to a bug in ggplot2 (see https://github.com/tidyverse/ggplot2/issues/881)
-# text.size: numeric value of the font size of the (1) axis numbers, (2) axis labels and (3) texts in the graphic legend (in mm)
-# title: character string of the graph title
-# title.text.size: numeric value of the title font size in mm
-# legend.show: logical. Show legend? Not considered if categ argument is NULL, because this already generate no legend, excepted if legend.width argument is non-NULL. In that specific case (categ is NULL, legend.show is TRUE and legend.width is non-NULL), an empty legend space is created. This can be useful when desiring graphs of exactly the same width, whatever they have legends or not
-# legend.width: single proportion (between 0 and 1) indicating the relative width of the legend sector (on the right of the plot) relative to the width of the plot. Value 1 means that the window device width is split in 2, half for the plot and half for the legend. Value 0 means no room for the legend, which will overlay the plot region. Write NULL to inactivate the legend sector. In such case, ggplot2 will manage the room required for the legend display, meaning that the width of the plotting region can vary between graphs, depending on the text in the legend
-# article: logical. If TRUE, use an article theme (article like). If FALSE, use a classic related ggplot theme. Use the add argument (e.g., add = "+ggplot2::theme_classic()" for the exact classic ggplot theme
-# grid: logical. Draw lines in the background to better read the box values? Not considered if article == FALSE (grid systematically present)
-# add: character string allowing to add more ggplot2 features (dots, lines, themes, facet, etc.). Ignored if NULL
-# WARNING: (1) the string must start with "+", (2) the string must finish with ")" and (3) each function must be preceded by "ggplot2::". Example: "+ ggplot2::coord_flip() + ggplot2::theme_bw()"
-# If the character string contains the "ggplot2::theme" string, then the article argument of fun_gg_boxplot() (see above) is ignored with a warning
-# Handle the add argument with caution since added functions can create conflicts with the preexisting internal ggplot2 functions
-# WARNING: the call of objects inside the quotes of add can lead to an error if the name of these objects are some of the fun_gg_boxplot() arguments. Indeed, the function will use the internal argument instead of the global environment object. Example article <- "a" in the working environment and add = '+ ggplot2::ggtitle(article)'. The risk here is to have TRUE as title. To solve this, use add = '+ ggplot2::ggtitle(get("article", envir = .GlobalEnv))'
-# return: logical. Return the graph parameters?
-# return.ggplot: logical. Return the ggplot object in the output list? Ignored if return argument is FALSE. WARNING: always assign the fun_gg_boxplot() function (e.g., a <- fun_gg_boxplot()) if return.ggplot argument is TRUE, otherwise, double plotting is performed. See $ggplot in the RETURN section below for more details
-# return.gtable: logical. Return the ggplot object as gtable of grobs in the output list? Ignored if plot argument is FALSE. Indeed, the graph must be plotted to get the grobs dispositions. See $gtable in the RETURN section below for more details
-# plot: logical. Plot the graphic? If FALSE and return argument is TRUE, graphical parameters and associated warnings are provided without plotting
-# warn.print: logical. Print warnings at the end of the execution? ? If FALSE, warning messages are never printed, but can still be recovered in the returned list. Some of the warning messages (those delivered by the internal ggplot2 functions) are not apparent when using the argument plot = FALSE
-# lib.path: character string indicating the absolute path of the required packages (see below). if NULL, the function will use the R library default folders
-# RETURN
-# A boxplot if plot argument is TRUE
-# A list of the graph info if return argument is TRUE:
-# $data: the initial data with graphic information added
-# $stat: the graphic statistics (mostly equivalent to ggplot_build()$data[[2]])
-# $removed.row.nb: which rows have been removed due to NA/Inf detection in y and categ columns (NULL if no row removed)
-# $removed.rows: removed rows (NULL if no row removed)
-# $plot: the graphic box and dot coordinates
-# $dots: dot coordinates
-# $main.box: coordinates of boxes
-# $median: median coordinates
-# $sup.whisker: coordinates of top whiskers (y for base and y.end for extremities)
-# $inf.whisker: coordinates of bottom whiskers (y for base and y.end for extremities)
-# $sup.whisker.edge: coordinates of top whisker edges (x and xend)
-# $inf.whisker.edge: coordinates of bottom whisker edges(x and xend)
-# $mean: diamond mean coordinates (only if box.mean argument is TRUE)
-# $stat.pos: coordinates of stat numbers (only if stat.pos argument is not NULL)
-# y.second.tick.positions: coordinates of secondary ticks (only if y.second.tick.nb argument is non-NULL or if y.log argument is different from "no")
-# y.second.tick.values: values of secondary ticks. NULL except if y.second.tick.nb argument is non-NULL or if y.log argument is different from "no")
-# $panel: the variable names used for the panels (NULL if no panels). WARNING: NA can be present according to ggplot2 upgrade to v3.3.0
-# $axes: the x-axis and y-axis info
-# $warn: the warning messages. Use cat() for proper display. NULL if no warning. WARNING: warning messages delivered by the internal ggplot2 functions are not apparent when using the argument plot = FALSE
-# $ggplot: ggplot object that can be used for reprint (use print(...$ggplot) or update (use ...$ggplot + ggplot2::...). NULL if return.ggplot argument is FALSE. Of note, a non-NULL $ggplot in the output list is sometimes annoying as the manipulation of this list prints the plot
-# $gtable: gtable object that can be used for reprint (use gridExtra::grid.arrange(...$ggplot) or with additionnal grobs (see the grob decomposition in the examples). NULL if return.ggplot argument is FALSE. Contrary to $ggplot, a non-NULL $gtable in the output list is not annoying as the manipulation of this list does not print the plot
-# REQUIRED PACKAGES
-# ggplot2
-# gridExtra
-# lemon (in case of use in the add argument)
-# scales
-# REQUIRED FUNCTIONS FROM THE cute PACKAGE
-# fun_check()
-# fun_comp_1d()
-# fun_comp_2d()
-# fun_gg_just()
-# fun_gg_palette()
-# fun_inter_ticks()
-# fun_name_change()
-# fun_pack()
-# fun_round()
-# fun_scale()
-# EXAMPLE
-# set.seed(1) ; obs1 <- data.frame(Time = c(rnorm(20, 100, 10), rnorm(20, 200, 50), rnorm(20, 500, 60), rnorm(20, 100, 50)), Categ1 = rep(c("CAT", "DOG"), times = 40), Categ2 = rep(c("A", "B", "C", "D"), each = 20), Color1 = rep(c("coral", "lightblue"), times = 40), Color2 = rep(c("#9F2108", "#306100", "#007479", "#8500C0"), each = 20), stringsAsFactors = TRUE) ; set.seed(NULL) ; fun_gg_boxplot(data1 = obs1, y = "Time", categ = "Categ1")
-# see http
-# DEBUGGING
-# set.seed(1) ; obs1 <- data.frame(Time = c(rnorm(10), rnorm(10) + 2), Categ1 = rep(c("G", "H"), each = 10), stringsAsFactors = TRUE) ; set.seed(NULL) ; obs1$Time[1:10] <- NA ; data1 = obs1 ; y = "Time" ; categ = c("Categ1") ; categ.class.order = NULL ; categ.color = NULL ; box.legend.name = NULL ; box.fill = FALSE ; box.width = 0.5 ; box.space = 0.1 ; box.line.size = 0.75 ; box.notch = FALSE ; box.alpha = 1 ; box.mean = TRUE ; box.whisker.kind = "std" ; box.whisker.width = 0 ; dot.color = grey(0.25) ; dot.categ = NULL ; dot.categ.class.order = NULL ; dot.legend.name = NULL ; dot.tidy = FALSE ; dot.tidy.bin.nb = 50 ; dot.jitter = 0.5 ; dot.seed = 2 ; dot.size = 3 ; dot.alpha = 0.5 ; dot.border.size = 0.5 ; dot.border.color = NULL ; x.lab = NULL ; x.angle = 0 ; y.lab = NULL ; y.lim = NULL ; y.log = "no" ; y.tick.nb = NULL ; y.second.tick.nb = 1 ; y.include.zero = FALSE ; y.top.extra.margin = 0.05 ; y.bottom.extra.margin = 0.05 ; stat.pos = "top" ; stat.mean = FALSE ; stat.size = 4 ; stat.dist = 5 ; stat.angle = 0 ; vertical = TRUE ; text.size = 12 ; title = "" ; title.text.size = 8 ; legend.show = TRUE ; legend.width = 0.5 ; article = TRUE ; grid = FALSE ; add = NULL ; return = FALSE ; return.ggplot = FALSE ; return.gtable = TRUE ; plot = TRUE ; warn.print = FALSE ; lib.path = NULL
-# function name
-function.name <- paste0(as.list(match.call(expand.dots = FALSE))[[1]], "()")
-arg.names <- names(formals(fun = sys.function(sys.parent(n = 2)))) # names of all the arguments
-arg.user.setting <- as.list(match.call(expand.dots = FALSE))[-1] # list of the argument settings (excluding default values not provided by the user)
-# end function name
-# required function checking
-req.function <- c(
-"fun_comp_2d", 
-"fun_gg_just", 
-"fun_gg_palette", 
-"fun_name_change", 
-"fun_pack", 
-"fun_check", 
-"fun_round", 
-"fun_scale",
-"fun_inter_ticks"
-)
-tempo <- NULL
-for(i1 in req.function){
-if(length(find(i1, mode = "function")) == 0L){
-tempo <- c(tempo, i1)
-}
-}
-if( ! is.null(tempo)){
-tempo.cat <- paste0("ERROR IN ", function.name, "\nREQUIRED cute FUNCTION", ifelse(length(tempo) > 1, "S ARE", " IS"), " MISSING IN THE R ENVIRONMENT:\n", paste0(tempo, collapse = "()\n"))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n"), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-# end required function checking
-# reserved words to avoid bugs (names of dataframe columns used in this function)
-reserved.words <- c("categ.check", "categ.color", "dot.color", "dot.categ", "dot.max", "dot.min", "group", "PANEL", "group.check", "MEAN", "tempo.categ1", "tempo.categ2", "text.max.pos", "text.min.pos", "x", "x.y", "y", "y.check", "y_from.dot.max", "ymax", "tidy_group", "binwidth")
-# end reserved words to avoid bugs (used in this function)
-# arg with no default values
-mandat.args <- c(
-"data1", 
-"y", 
-"categ"
-)
-tempo <- eval(parse(text = paste0("missing(", paste0(mandat.args, collapse = ") | missing("), ")")))
-if(any(tempo)){ # normally no NA for missing() output
-tempo.cat <- paste0("ERROR IN ", function.name, "\nFOLLOWING ARGUMENT", ifelse(length(mandat.args) > 1, "S HAVE", "HAS"), " NO DEFAULT VALUE AND REQUIRE ONE:\n", paste0(mandat.args, collapse = "\n"))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n"), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-# end arg with no default values
-# argument primary checking
-arg.check <- NULL #
-text.check <- NULL #
-checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
-ee <- expression(arg.check <- c(arg.check, tempo$problem) , text.check <- c(text.check, tempo$text) , checked.arg.names <- c(checked.arg.names, tempo$object.name))
-tempo <- fun_check(data = data1, class = "data.frame", na.contain = TRUE, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = y, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = categ, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
-if( ! is.null(categ.class.order)){
-tempo <- fun_check(data = categ.class.order, class = "list", fun.name = function.name) ; eval(ee)
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = categ.class.order, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-if( ! is.null(box.legend.name)){
-tempo <- fun_check(data = box.legend.name, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = box.legend.name, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-if( ! is.null(categ.color)){
-tempo1 <- fun_check(data = categ.color, class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name)
-tempo2 <- fun_check(data = categ.color, class = "factor", na.contain = TRUE, fun.name = function.name)
-checked.arg.names <- c(checked.arg.names, tempo2$object.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-tempo.check.color <- fun_check(data = categ.color, class = "integer", double.as.integer.allowed = TRUE, na.contain = TRUE, neg.values = FALSE, fun.name = function.name)$problem
-if(tempo.check.color == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, "\ncateg.color ARGUMENT MUST BE A FACTOR OR CHARACTER VECTOR OR POSITVE INTEGER VECTOR") # integer possible because dealt above
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}else if(any(categ.color == 0L, na.rm = TRUE)){
-tempo.cat <- paste0("ERROR IN ", function.name, "\ncateg.color ARGUMENT MUST BE A FACTOR OR CHARACTER VECTOR OR POSITVE INTEGER VECTOR") # integer possible because dealt above
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = categ.color, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-tempo <- fun_check(data = box.fill, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = box.width, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = box.space, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = box.line.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = box.notch, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = box.alpha, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = box.mean, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = box.whisker.kind, options = c("no", "std", "max"), length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = box.whisker.width, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-if( ! is.null(dot.color)){
-tempo1 <- fun_check(data = dot.color, class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name)
-tempo2 <- fun_check(data = dot.color, class = "factor", na.contain = TRUE, fun.name = function.name)
-checked.arg.names <- c(checked.arg.names, tempo2$object.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-tempo.check.color <- fun_check(data = dot.color, class = "integer", double.as.integer.allowed = TRUE, na.contain = TRUE, neg.values = FALSE, fun.name = function.name)$problem
-if(tempo.check.color == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.color MUST BE A FACTOR OR CHARACTER VECTOR OR POSITVE INTEGER VECTOR") # integer possible because dealt above
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}else if(any(dot.color == 0L, na.rm = TRUE)){
-tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.color ARGUMENT MUST BE A FACTOR OR CHARACTER VECTOR OR POSITVE INTEGER VECTOR") # integer possible because dealt above
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = dot.color, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-if( ! is.null(dot.categ)){
-tempo <- fun_check(data = dot.categ, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = dot.categ, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-if( ! is.null(dot.categ.class.order)){
-tempo <- fun_check(data = dot.categ.class.order, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = dot.categ.class.order, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-if( ! is.null(dot.legend.name)){
-tempo <- fun_check(data = dot.legend.name, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = dot.legend.name, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-tempo <- fun_check(data = dot.tidy, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = dot.tidy.bin.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-if(tempo$problem == FALSE){
-if(dot.tidy.bin.nb == 0L){ # length and NA checked above
-tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.tidy.bin.nb ARGUMENT MUST BE A NON-NULL AND POSITVE INTEGER VALUE") # integer possible because dealt above
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}
-tempo <- fun_check(data = dot.jitter, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-if( ! is.null(dot.seed)){
-tempo <- fun_check(data = dot.seed, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = TRUE, fun.name = function.name) ; eval(ee)
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = dot.seed, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-tempo <- fun_check(data = dot.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = dot.alpha, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = dot.border.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-if( ! is.null(dot.border.color)){
-tempo1 <- fun_check(data = dot.border.color, class = "vector", mode = "character", length = 1, fun.name = function.name)
-tempo2 <- fun_check(data = dot.border.color, class = "vector", typeof = "integer", double.as.integer.allowed = TRUE, length = 1, fun.name = function.name)
-checked.arg.names <- c(checked.arg.names, tempo2$object.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.border.color ARGUMENT MUST BE (1) A HEXADECIMAL COLOR STRING STARTING BY #, OR (2) A COLOR NAME GIVEN BY colors(), OR (3) AN INTEGER VALUE")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}else if(tempo1$problem == FALSE & tempo2$problem == TRUE){
-if( ! all(dot.border.color %in% colors() | grepl(pattern = "^#", dot.border.color), na.rm = TRUE)){
-tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.border.color ARGUMENT MUST BE (1) A HEXADECIMAL COLOR STRING STARTING BY #, OR (2) A COLOR NAME GIVEN BY colors(), OR (3) AN INTEGER VALUE")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = dot.border.color, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-if( ! is.null(x.lab)){
-tempo1 <- fun_check(data = x.lab, class = "expression", length = 1, fun.name = function.name)
-tempo2 <- fun_check(data = x.lab,  class = "vector", mode = "character", length = 1, fun.name = function.name)
-checked.arg.names <- c(checked.arg.names, tempo2$object.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, "\nx.lab ARGUMENT MUST BE A SINGLE CHARACTER STRING OR EXPRESSION")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = x.lab, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-tempo <- fun_check(data = x.angle, class = "vector", typeof = "integer", double.as.integer.allowed = TRUE, length = 1, neg.values = TRUE, fun.name = function.name) ; eval(ee)
-if( ! is.null(y.lab)){
-tempo1 <- fun_check(data = y.lab, class = "expression", length = 1, fun.name = function.name)
-tempo2 <- fun_check(data = y.lab,  class = "vector", mode = "character", length = 1, fun.name = function.name)
-checked.arg.names <- c(checked.arg.names, tempo2$object.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, "\ny.lab ARGUMENT MUST BE A SINGLE CHARACTER STRING OR EXPRESSION")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = y.lab, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-if( ! is.null(y.lim)){
-tempo <- fun_check(data = y.lim, class = "vector", mode = "numeric", length = 2, fun.name = function.name) ; eval(ee)
-if(tempo$problem == FALSE){
-if(any(is.infinite(y.lim))){ # normally no NA for is.infinite() output
-tempo.cat <- paste0("ERROR IN ", function.name, "\ny.lim ARGUMENT CANNOT CONTAIN -Inf OR Inf VALUES")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = y.lim, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-tempo <- fun_check(data = y.log, options = c("no", "log2", "log10"), length = 1, fun.name = function.name) ; eval(ee)
-if( ! is.null(y.tick.nb)){
-tempo <- fun_check(data = y.tick.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
-if(tempo$problem == FALSE){
-if(y.tick.nb < 0){
-tempo.cat <- paste0("ERROR IN ", function.name, "\ny.tick.nb ARGUMENT MUST BE A NON NULL POSITIVE INTEGER")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = y.tick.nb, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-if( ! is.null(y.second.tick.nb)){
-tempo <- fun_check(data = y.second.tick.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
-if(tempo$problem == FALSE){
-if(y.second.tick.nb <= 0){
-tempo.cat <- paste0("ERROR IN ", function.name, "\ny.second.tick.nb ARGUMENT MUST BE A NON NULL POSITIVE INTEGER")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = y.second.tick.nb, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-tempo <- fun_check(data = y.include.zero, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = y.top.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = y.bottom.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-if( ! is.null(stat.pos)){
-tempo <- fun_check(data = stat.pos, options = c("top", "above"), length = 1, fun.name = function.name) ; eval(ee)
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = stat.pos, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-tempo <- fun_check(data = stat.mean, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = stat.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = stat.dist, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = stat.angle, class = "vector", typeof = "integer", double.as.integer.allowed = TRUE, length = 1, neg.values = TRUE, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = vertical, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = text.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = title, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = title.text.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = legend.show, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-if( ! is.null(legend.width)){
-tempo <- fun_check(data = legend.width, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = legend.width, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-tempo <- fun_check(data = article, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = grid, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-if( ! is.null(add)){
-tempo <- fun_check(data = add, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = add, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-tempo <- fun_check(data = return, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = return.ggplot, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = return.gtable, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = plot, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = warn.print, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-if( ! is.null(lib.path)){
-tempo <- fun_check(data = lib.path, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
-if(tempo$problem == FALSE){
-if( ! all(dir.exists(lib.path), na.rm = TRUE)){ # separation to avoid the problem of tempo$problem == FALSE and lib.path == NA
-tempo.cat <- paste0("ERROR IN ", function.name, "\nDIRECTORY PATH INDICATED IN THE lib.path ARGUMENT DOES NOT EXISTS:\n", paste(lib.path, collapse = "\n"))
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = lib.path, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-if(any(arg.check) == TRUE){ # normally no NA
-stop(paste0("\n\n================\n\n", paste(text.check[arg.check], collapse = "\n"), "\n\n================\n\n"), call. = FALSE) # == in stop() to be able to add several messages between == #
-}
-# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.7/r_debugging_tools-v1.7.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-# end argument primary checking
-# second round of checking and data preparation
-# management of NA arguments
-tempo.arg <- names(arg.user.setting) # values provided by the user
-tempo.log <- suppressWarnings(sapply(lapply(lapply(tempo.arg, FUN = get, env = sys.nframe(), inherit = FALSE), FUN = is.na), FUN = any)) & lapply(lapply(tempo.arg, FUN = get, env = sys.nframe(), inherit = FALSE), FUN = length) == 1L # no argument provided by the user can be just NA
-if(any(tempo.log) == TRUE){ # normally no NA because is.na() used here
-tempo.cat <- paste0("ERROR IN ", function.name, ":\n", ifelse(sum(tempo.log, na.rm = TRUE) > 1, "THESE ARGUMENTS\n", "THIS ARGUMENT\n"), paste0(tempo.arg[tempo.log], collapse = "\n"),"\nCANNOT JUST BE NA")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n"), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-# end management of NA arguments
-# management of NULL arguments
-tempo.arg <-c(
-"data1", 
-"y", 
-"categ", 
-"box.fill", 
-"box.width", 
-"box.space", 
-"box.line.size", 
-"box.notch", 
-"box.alpha", 
-"box.mean", 
-"box.whisker.kind", 
-"box.whisker.width", 
-# "dot.color", # inactivated because can be null
-"dot.tidy", 
-"dot.tidy.bin.nb", 
-"dot.jitter", 
-# "dot.seed", # inactivated because can be null
-"dot.size", 
-"dot.alpha", 
-"dot.border.size", 
-"x.angle", 
-"y.log", 
-# "y.second.tick.nb", # inactivated because can be null
-"y.include.zero", 
-"y.top.extra.margin", 
-"y.bottom.extra.margin", 
-# "stat.pos", # inactivated because can be null
-"stat.mean", 
-"stat.size", 
-"stat.dist", 
-"stat.angle", 
-"vertical", 
-"text.size", 
-"title", 
-"title.text.size", 
-"legend.show", 
-# "legend.width", # inactivated because can be null
-"article", 
-"grid", 
-"return", 
-"return.ggplot", 
-"return.gtable", 
-"plot", 
-"warn.print"
-)
-tempo.log <- sapply(lapply(tempo.arg, FUN = get, env = sys.nframe(), inherit = FALSE), FUN = is.null)
-if(any(tempo.log) == TRUE){# normally no NA with is.null()
-tempo.cat <- paste0("ERROR IN ", function.name, ":\n", ifelse(sum(tempo.log, na.rm = TRUE) > 1, "THESE ARGUMENTS\n", "THIS ARGUMENT\n"), paste0(tempo.arg[tempo.log], collapse = "\n"),"\nCANNOT BE NULL")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n"), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-# end management of NULL arguments
-# code that protects set.seed() in the global environment
-# see also Protocol 100-rev0 Parallelization in R.docx
-if(exists(".Random.seed", envir = .GlobalEnv)){ # if .Random.seed does not exists, it means that no random operation has been performed yet in any R environment
-tempo.random.seed <- .Random.seed
-on.exit(assign(".Random.seed", tempo.random.seed, env = .GlobalEnv))
-}else{
-on.exit(set.seed(NULL)) # inactivate seeding -> return to complete randomness
-}
-set.seed(dot.seed)
-# end code that protects set.seed() in the global environment
-# warning initiation
-ini.warning.length <- options()$warning.length
-options(warning.length = 8170)
-warn <- NULL
-warn.count <- 0
-# end warning initiation
-# other checkings
-if(any(duplicated(names(data1)), na.rm = TRUE)){
-tempo.cat <- paste0("ERROR IN ", function.name, "\nDUPLICATED COLUMN NAMES OF data1 ARGUMENT NOT ALLOWED:\n", paste(names(data1)[duplicated(names(data1))], collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-if( ! (y %in% names(data1))){
-tempo.cat <- paste0("ERROR IN ", function.name, "\ny ARGUMENT MUST BE A COLUMN NAME OF data1")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else{
-tempo <- fun_check(data = data1[, y], data.name = "y COLUMN OF data1", class = "vector", mode = "numeric", na.contain = TRUE, fun.name = function.name)
-if(tempo$problem == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, "\ny ARGUMENT MUST BE NUMERIC COLUMN IN data1")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-}
-if(length(categ) > 2){
-tempo.cat <- paste0("ERROR IN ", function.name, "\ncateg ARGUMENT CANNOT HAVE MORE THAN 2 COLUMN NAMES OF data1")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else if( ! all(categ %in% names(data1))){ # all() without na.rm -> ok because categ cannot be NA (tested above)
-tempo.cat <- paste0("ERROR IN ", function.name, "\ncateg ARGUMENT MUST BE COLUMN NAMES OF data1. HERE IT IS:\n", paste(categ, collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-if(length(dot.categ) > 1){
-tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.categ ARGUMENT CANNOT HAVE MORE THAN 1 COLUMN NAMES OF data1")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else if( ! all(dot.categ %in% names(data1))){ # all() without na.rm -> ok because dot.categ cannot be NA (tested above)
-tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.categ ARGUMENT MUST BE COLUMN NAMES OF data1. HERE IT IS:\n", paste(dot.categ, collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-# reserved word checking
-if(any(names(data1) %in% reserved.words, na.rm = TRUE)){
-if(any(duplicated(names(data1)), na.rm = TRUE)){
-tempo.cat <- paste0("ERROR IN ", function.name, "\nDUPLICATED COLUMN NAMES OF data1 ARGUMENT NOT ALLOWED:\n", paste(names(data1)[duplicated(names(data1))], collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-if( ! is.null(dot.categ)){
-if(dot.categ %in% categ){
-reserved.words <- c(reserved.words, paste0(dot.categ, "_DOT")) # paste0(dot.categ, "_DOT") is added to the reserved words because in such situation, a new column will be added to data1 that is named paste0(dot.categ, "_DOT")
-}
-}
-tempo.output <- fun_name_change(names(data1), reserved.words)
-for(i2 in 1:length(tempo.output$ini)){ # a loop to be sure to take the good ones
-names(data1)[names(data1) == tempo.output$ini[i2]] <- tempo.output$post[i2]
-if(any(y == tempo.output$ini[i2])){ # any() without na.rm -> ok because y cannot be NA (tested above)
-y[y == tempo.output$ini[i2]] <- tempo.output$post[i2]
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") IN y ARGUMENT (COLUMN NAMES OF data1 ARGUMENT),\n", tempo.output$ini[i2], " HAS BEEN REPLACED BY ", tempo.output$post[i2], "\nBECAUSE RISK OF BUG AS SOME NAMES IN y ARGUMENT ARE RESERVED WORD USED BY THE ", function.name, " FUNCTION")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-# WARNING: names of y argument potentially replaced
-if(any(categ == tempo.output$ini[i2])){ # any() without na.rm -> ok because categ cannot be NA (tested above)
-categ[categ == tempo.output$ini[i2]] <- tempo.output$post[i2]
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") IN categ ARGUMENT (COLUMN NAMES OF data1 ARGUMENT),\n", tempo.output$ini[i2], " HAS BEEN REPLACED BY ", tempo.output$post[i2], "\nBECAUSE RISK OF BUG AS SOME NAMES IN categ ARGUMENT ARE RESERVED WORD USED BY THE ", function.name, " FUNCTION")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-# WARNING: names of categ argument potentially replaced
-if( ! is.null(dot.categ)){
-if(any(dot.categ == tempo.output$ini[i2])){ # any() without na.rm -> ok because dot.categ cannot be NA (tested above)
-dot.categ[dot.categ == tempo.output$ini[i2]] <- tempo.output$post[i2]
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") IN dot.categ ARGUMENT (COLUMN NAMES OF data1 ARGUMENT),\n", tempo.output$ini[i2], " HAS BEEN REPLACED BY ", tempo.output$post[i2], "\nBECAUSE RISK OF BUG AS SOME NAMES IN dot.categ ARGUMENT ARE RESERVED WORD USED BY THE ", function.name, " FUNCTION")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-# WARNING: names of dot.categ argument potentially replaced
-}
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") REGARDING COLUMN NAMES REPLACEMENT, THE NAMES\n", paste(tempo.output$ini, collapse = " "), "\nHAVE BEEN REPLACED BY\n", paste(tempo.output$post, collapse = " "))
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-if( ! (is.null(add) | is.null(tempo.output$ini))){
-if(grepl(x = add, pattern = paste(tempo.output$ini, collapse = "|"))){
-tempo.cat <- paste0("ERROR IN ", function.name, "\nDETECTION OF COLUMN NAMES OF data1 IN THE add ARGUMENT STRING, THAT CORRESPOND TO RESERVED STRINGS FOR ", function.name, "\nCOLUMN NAMES HAVE TO BE CHANGED\nTHE PROBLEMATIC COLUMN NAMES ARE SOME OF THESE NAMES:\n", paste(tempo.output$ini, collapse = " "), "\nIN THE DATA FRAME OF data1 AND IN THE STRING OF add ARGUMENT, TRY TO REPLACE NAMES BY:\n", paste(tempo.output$post, collapse = " "), "\n\nFOR INFORMATION, THE RESERVED WORDS ARE:\n", paste(reserved.words, collapse = "\n"))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-}
-}
-if( ! (is.null(add))){
-if(any(sapply(X = arg.names, FUN = grepl, x = add), na.rm = TRUE)){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") NAMES OF ", function.name, " ARGUMENTS DETECTED IN THE add STRING:\n", paste(arg.names[sapply(X = arg.names, FUN = grepl, x = add)], collapse = "\n"), "\nRISK OF WRONG OBJECT USAGE INSIDE ", function.name)
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-# end reserved word checking
-# verif of add
-if( ! is.null(add)){
-if( ! grepl(pattern = "^\\s*\\+", add)){ # check that the add string start by +
-tempo.cat <- paste0("ERROR IN ", function.name, "\nadd ARGUMENT MUST START WITH \"+\": ", paste(unique(add), collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else if( ! grepl(pattern = "(ggplot2|lemon)\\s*::", add)){ #
-tempo.cat <- paste0("ERROR IN ", function.name, "\nFOR EASIER FUNCTION DETECTION, add ARGUMENT MUST CONTAIN \"ggplot2::\" OR \"lemon::\" IN FRONT OF EACH GGPLOT2 FUNCTION: ", paste(unique(add), collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else if( ! grepl(pattern = ")\\s*$", add)){ # check that the add string finished by )
-tempo.cat <- paste0("ERROR IN ", function.name, "\nadd ARGUMENT MUST FINISH BY \")\": ", paste(unique(add), collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-}
-# end verif of add
-# management of add containing facet
-facet.categ <- NULL
-if( ! is.null(add)){
-facet.check <- TRUE
-tempo <- unlist(strsplit(x = add, split = "\\s*\\+\\s*(ggplot2|lemon)\\s*::\\s*")) #
-tempo <- sub(x = tempo, pattern = "^facet_wrap", replacement = "ggplot2::facet_wrap")
-tempo <- sub(x = tempo, pattern = "^facet_grid", replacement = "ggplot2::facet_grid")
-tempo <- sub(x = tempo, pattern = "^facet_rep", replacement = "lemon::facet_rep")
-if(any(grepl(x = tempo, pattern = "ggplot2::facet_wrap|lemon::facet_rep_wrap"), na.rm = TRUE)){
-tempo1 <- suppressWarnings(eval(parse(text = tempo[grepl(x = tempo, pattern = "ggplot2::facet_wrap|lemon::facet_rep_wrap")])))
-facet.categ <- names(tempo1$params$facets)
-tempo.text <- "facet_wrap OR facet_rep_wrap"
-facet.check <- FALSE
-}else if(grepl(x = add, pattern = "ggplot2::facet_grid|lemon::facet_rep_grid")){
-tempo1 <- suppressWarnings(eval(parse(text = tempo[grepl(x = tempo, pattern = "ggplot2::facet_grid|lemon::facet_rep_grid")])))
-facet.categ <- c(names(tempo1$params$rows), names(tempo1$params$cols))
-tempo.text <- "facet_grid OR facet_rep_grid"
-facet.check <- FALSE
-}
-if(facet.check == FALSE & ! all(facet.categ %in% names(data1))){ # WARNING: all(facet.categ %in% names(data1)) is TRUE when facet.categ is NULL # all() without na.rm -> ok because facet.categ cannot be NA (tested above)
-tempo.cat <- paste0("ERROR IN ", function.name, "\nDETECTION OF \"", tempo.text, "\" STRING IN THE add ARGUMENT BUT PROBLEM OF VARIABLE DETECTION (COLUMN NAMES OF data1)\nTHE DETECTED VARIABLES ARE:\n", paste(facet.categ, collapse = " "), "\nTHE data1 COLUMN NAMES ARE:\n", paste(names(data1), collapse = " "), "\nPLEASE REWRITE THE add STRING AND RERUN")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-}
-# end management of add containing facet
-# conversion of categ columns in data1 into factors
-for(i1 in 1:length(categ)){
-tempo1 <- fun_check(data = data1[, categ[i1]], data.name = paste0("categ NUMBER ", i1, " OF data1"), class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name)
-tempo2 <- fun_check(data = data1[, categ[i1]], data.name = paste0("categ NUMBER ", i1, " OF data1"), class = "factor", na.contain = TRUE, fun.name = function.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, "\n", paste0("categ NUMBER ", i1, " OF data1"), " MUST BE A FACTOR OR CHARACTER VECTOR")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else if(tempo1$problem == FALSE){ # character vector
-if(box.alpha != 0){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") IN categ NUMBER ", i1, " IN data1, THE CHARACTER COLUMN HAS BEEN CONVERTED TO FACTOR, WITH LEVELS ACCORDING TO THE ALPHABETICAL ORDER")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-data1[, categ[i1]] <- factor(data1[, categ[i1]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
-}
-# OK: all the categ columns of data1 are factors from here
-# end conversion of categ columns in data1 into factors
-
-
-
-# management of log scale and Inf removal
-if(any(( ! is.finite(data1[, y])) & ( ! is.na(data1[, y])))){ # is.finite also detects NA: ( ! is.finite(data1[, y])) & ( ! is.na(data1[, y])) detects only Inf  # normally no NA with is.finite0() and is.na()
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") PRESENCE OF -Inf OR Inf VALUES IN THE ", y, " COLUMN OF THE data1 ARGUMENT AND CORRESPONDING ROWS REMOVED (SEE $removed.row.nb AND $removed.rows)")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-data1.ini <- data1 # strictly identical to data1 except that in data1 y is log converted if and only if y.log != "no"
-if(y.log != "no"){
-tempo1 <- ! is.finite(data1[, y]) # where are initial NA and Inf
-data1[, y] <- suppressWarnings(get(y.log)(data1[, y]))# no env = sys.nframe(), inherit = FALSE in get() because look for function in the classical scope
-if(any( ! (tempo1 | is.finite(data1[, y])))){ # normally no NA with is.finite
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") LOG CONVERSION INTRODUCED -Inf OR Inf OR NaN VALUES IN THE ", y, " COLUMN OF THE data1 ARGUMENT AND CORRESPONDING ROWS REMOVED (SEE $removed.row.nb AND $removed.rows)")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-# Inf removal
-if(any(( ! is.finite(data1[, y])) & ( ! is.na(data1[, y])))){ # is.finite also detects NA: ( ! is.finite(data1[, y])) & ( ! is.na(data1[, y])) detects only Inf # normally no NA with is.finite
-removed.row.nb <- which(( ! is.finite(data1[, y])) & ( ! is.na(data1[, y])))
-removed.rows <- data1.ini[removed.row.nb, ] # here data1.ini used to have the y = O rows that will be removed because of Inf creation after log transformation
-data1 <- data1[-removed.row.nb, ] #
-data1.ini <- data1.ini[-removed.row.nb, ] #
-}else{
-removed.row.nb <- NULL
-removed.rows <- data.frame(stringsAsFactors = FALSE)
-}
-# From here, data1 and data.ini have no more Inf
-# end Inf removal
-if(y.log != "no" & ! is.null(y.lim)){
-if(any(y.lim <= 0)){ # any() without na.rm -> ok because y.lim cannot be NA (tested above)
-tempo.cat <- paste0("ERROR IN ", function.name, "\ny.lim ARGUMENT CANNOT HAVE ZERO OR NEGATIVE VALUES WITH THE y.log ARGUMENT SET TO ", y.log, ":\n", paste(y.lim, collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else if(any( ! is.finite(if(y.log == "log10"){log10(y.lim)}else{log2(y.lim)}))){ # normally no NA with is.finite
-tempo.cat <- paste0("ERROR IN ", function.name, "\ny.lim ARGUMENT RETURNS INF/NA WITH THE y.log ARGUMENT SET TO ", y.log, "\nAS SCALE COMPUTATION IS ", ifelse(y.log == "log10", "log10", "log2"), ":\n", paste(if(y.log == "log10"){log10(y.lim)}else{log2(y.lim)}, collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-}
-if(y.log != "no" & y.include.zero == TRUE){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") y.log ARGUMENT SET TO ", y.log, " AND y.include.zero ARGUMENT SET TO TRUE -> y.include.zero ARGUMENT RESET TO FALSE BECAUSE 0 VALUE CANNOT BE REPRESENTED IN LOG SCALE")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-y.include.zero <- FALSE
-}
-if(y.log != "no" & vertical == FALSE){
-vertical <- TRUE
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") BECAUSE OF A BUG IN ggplot2, CANNOT FLIP BOXES HORIZONTALLY WITH A Y.LOG SCALE -> vertical ARGUMENT RESET TO TRUE")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-# end management of log scale and Inf removal
-# na detection and removal (done now to be sure of the correct length of categ)
-column.check <- unique(c(y, categ, if( ! is.null(dot.color) & ! is.null(dot.categ)){dot.categ}, if( ! is.null(facet.categ)){facet.categ})) # dot.categ because can be a 3rd column of data1, categ.color and dot.color will be tested later
-if(any(is.na(data1[, column.check]))){ # data1 used here instead of data1.ini in case of new NaN created by log conversion (neg values) # normally no NA with is.na
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") NA DETECTED IN COLUMNS OF data1 AND CORRESPONDING ROWS REMOVED (SEE $removed.row.nb AND $removed.rows)")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-for(i2 in 1:length(column.check)){
-if(any(is.na(data1[, column.check[i2]]))){ # normally no NA with is.na
-tempo.warn <- paste0("NA REMOVAL DUE TO COLUMN ", column.check[i2], " OF data1")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n", tempo.warn)))
-}
-}
-tempo <- unique(unlist(lapply(lapply(c(data1[column.check]), FUN = is.na), FUN = which)))
-removed.row.nb <- c(removed.row.nb, tempo) # removed.row.nb created to remove Inf
-removed.rows <- rbind(removed.rows, data1.ini[tempo, ], stringsAsFactors = FALSE) # here data1.ini used to have the non NA rows that will be removed because of NAN creation after log transformation (neg values for instance)
-column.check <- column.check[ ! column.check == y] # remove y to keep quali columns
-if(length(tempo) != 0){
-data1 <- data1[-tempo, ] # WARNING tempo here and not removed.row.nb because the latter contain more numbers thant the former
-data1.ini <- data1.ini[-tempo, ] # WARNING tempo here and not removed.row.nb because the latter contain more numbers than the former
-for(i3 in 1:length(column.check)){
-if(any( ! unique(removed.rows[, column.check[i3]]) %in% unique(data1[, column.check[i3]]), na.rm = TRUE)){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") IN COLUMN ", column.check[i3], " OF data1, THE FOLLOWING CLASSES HAVE DISAPPEARED AFTER NA/Inf REMOVAL (IF COLUMN USED IN THE PLOT, THIS CLASS WILL NOT BE DISPLAYED):\n", paste(unique(removed.rows[, column.check[i3]])[ ! unique(removed.rows[, column.check[i3]]) %in% unique(data1[, column.check[i3]])], collapse = " "))
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-}
-count.categ <- 0
-for(i2 in 1:length(column.check)){
-if(column.check[i2] %in% categ){
-count.categ <- count.categ + 1
-}
-if(column.check[i2] == categ[count.categ]){
-categ.class.order[count.categ] <- list(levels(data1[, column.check[i2]])[levels(data1[, column.check[i2]]) %in% unique(data1[, column.check[i2]])]) # remove the absent color in the character vector
-data1[, column.check[i2]] <- factor(as.character(data1[, column.check[i2]]), levels = unique(categ.class.order[[count.categ]]))
-}
-if( ! is.null(dot.color) & ! is.null(dot.categ)){ # reminder : dot.categ cannot be a column name of categ anymore (because in that case dot.categ name is changed into "..._DOT"
-if(column.check[i2] == dot.categ){
-dot.categ.class.order <- levels(data1[, column.check[i2]])[levels(data1[, column.check[i2]]) %in% unique(data1[, column.check[i2]])] # remove the absent color in the character vector
-data1[, column.check[i2]] <- factor(as.character(data1[, column.check[i2]]), levels = unique(dot.categ.class.order))
-}
-}
-if(column.check[i2] %in% facet.categ){ # works if facet.categ == NULL this method should keep the order of levels when removing some levels
-tempo.levels <- levels(data1[, column.check[i2]])[levels(data1[, column.check[i2]]) %in% unique(as.character(data1[, column.check[i2]]))]
-data1[, column.check[i2]] <- factor(as.character(data1[, column.check[i2]]), levels = tempo.levels)
-}
-}
-}
-# end na detection and removal (done now to be sure of the correct length of categ)
-# From here, data1 and data.ini have no more NA or NaN in y, categ, dot.categ (if dot.color != NULL) and facet.categ
-
-
-
-if( ! is.null(categ.class.order)){
-if(length(categ.class.order) != length(categ)){
-tempo.cat <- paste0("ERROR IN ", function.name, "\ncateg.class.order ARGUMENT MUST BE A LIST OF LENGTH EQUAL TO LENGTH OF categ\nHERE IT IS LENGTH: ", length(categ.class.order), " VERSUS ", length(categ))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else{
-for(i3 in 1:length(categ.class.order)){
-if(is.null(categ.class.order[[i3]])){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") THE categ.class.order COMPARTMENT ", i3, " IS NULL. ALPHABETICAL ORDER WILL BE APPLIED")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-data1[, categ[i3]] <- factor(as.character(data1[, categ[i3]])) # if already a factor, change nothing, if characters, levels according to alphabetical order
-categ.class.order[[i3]] <- levels(data1[, categ[i3]]) # character vector that will be used later
-}else{
-tempo <- fun_check(data = categ.class.order[[i3]], data.name = paste0("COMPARTMENT ", i3 , " OF categ.class.order ARGUMENT"), class = "vector", mode = "character", length = length(levels(data1[, categ[i3]])), fun.name = function.name) # length(data1[, categ[i1]) -> if data1[, categ[i1] was initially character vector, then conversion as factor after the NA removal, thus class number ok. If data1[, categ[i1] was initially factor, no modification after the NA removal, thus class number ok
-if(tempo$problem == TRUE){
-stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n"), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-}
-if(any(duplicated(categ.class.order[[i3]]), na.rm = TRUE)){
-tempo.cat <- paste0("ERROR IN ", function.name, "\nCOMPARTMENT ", i3, " OF categ.class.order ARGUMENT CANNOT HAVE DUPLICATED CLASSES: ", paste(categ.class.order[[i3]], collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else if( ! (all(categ.class.order[[i3]] %in% unique(data1[, categ[i3]]), na.rm = TRUE) & all(unique(data1[, categ[i3]]) %in% categ.class.order[[i3]], na.rm = TRUE))){
-tempo.cat <- paste0("ERROR IN ", function.name, "\nCOMPARTMENT ", i3, " OF categ.class.order ARGUMENT MUST BE CLASSES OF ELEMENT ", i3, " OF categ ARGUMENT\nHERE IT IS:\n", paste(categ.class.order[[i3]], collapse = " "), "\nFOR COMPARTMENT ", i3, " OF categ.class.order AND IT IS:\n", paste(unique(data1[, categ[i3]]), collapse = " "), "\nFOR COLUMN ", categ[i3], " OF data1")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else{
-data1[, categ[i3]] <- factor(data1[, categ[i3]], levels = categ.class.order[[i3]]) # reorder the factor
-
-}
-names(categ.class.order)[i3] <- categ[i3]
-}
-}
-}else{
-categ.class.order <- vector("list", length = length(categ))
-tempo.categ.class.order <- NULL
-for(i2 in 1:length(categ.class.order)){
-categ.class.order[[i2]] <- levels(data1[, categ[i2]])
-names(categ.class.order)[i2] <- categ[i2]
-tempo.categ.class.order <- c(tempo.categ.class.order, ifelse(i2 != 1, "\n", ""), categ.class.order[[i2]])
-}
-if(box.alpha != 0){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") THE categ.class.order SETTING IS NULL. ALPHABETICAL ORDER WILL BE APPLIED FOR BOX ORDERING:\n", paste(tempo.categ.class.order, collapse = " "))
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-# categ.class.order not NULL anymore (list)
-if(is.null(box.legend.name) & box.alpha != 0){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") THE box.legend.name SETTING IS NULL. NAMES OF categ WILL BE USED: ", paste(categ, collapse = " "))
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-box.legend.name <- categ[length(categ)] # if only categ1, then legend name of categ1, if length(categ) == 2L, then legend name of categ2
-}
-# box.legend.name not NULL anymore (character string)
-# management of categ.color
-if( ! is.null(categ.color)){
-# check the nature of color
-# integer colors into gg_palette
-tempo.check.color <- fun_check(data = categ.color, class = "integer", double.as.integer.allowed = TRUE, na.contain = TRUE, fun.name = function.name)$problem
-if(tempo.check.color == FALSE){
-# convert integers into colors
-categ.color <- fun_gg_palette(max(categ.color, na.rm = TRUE))[categ.color]
-}
-# end integer colors into gg_palette
-if( ! (all(categ.color %in% colors() | grepl(pattern = "^#", categ.color)))){ # check that all strings of low.color start by #, # all() without na.rm -> ok because categ.color cannot be NA (tested above)
-tempo.cat <- paste0("ERROR IN ", function.name, "\ncateg.color ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # AND/OR COLOR NAMES GIVEN BY colors(): ", paste(unique(categ.color), collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-if(any(is.na(categ.color)) & box.alpha != 0){ # normally no NA with is.na
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") categ.color ARGUMENT CONTAINS NA")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-# end check the nature of color
-# check the length of color
-categ.len <- length(categ) # if only categ1, then colors for classes of categ1, if length(categ) == 2L, then colors for classes of categ2
-if(length(data1[, categ[categ.len]]) == length(levels(data1[, categ[categ.len]])) & length(categ.color) == length(data1[, categ[categ.len]])){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") THE NUMBER OF CLASSES OF THE COLUMN ", categ[categ.len], " THE NUMBER OF ROWS OF THIS COLUMN AND THE NUMBER OF COLORS OF THE categ.color ARGUMENT ARE ALL EQUAL. BOX COLORS WILL BE ATTRIBUTED ACCORDING THE LEVELS OF ", categ[categ.len], ", NOT ACCORDING TO THE ROWS OF ", categ[categ.len])
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-if(length(categ.color) == length(levels(data1[, categ[categ.len]]))){ # here length(categ.color) is equal to the different number of categ
-# data1[, categ[categ.len]] <- factor(data1[, categ[categ.len]]) # not required because sure that is is a factor
-data1 <- data.frame(data1, categ.color = data1[, categ[categ.len]], stringsAsFactors = TRUE)  # no need stringsAsFactors here for stat.nolog as factors remain factors
-data1$categ.color <- factor(data1$categ.color, labels = categ.color) # replace the characters of data1[, categ[categ.len]] put in the categ.color column by the categ.color (can be write like this because categ.color is length of levels of data1[, categ[categ.len]])
-if(box.alpha != 0){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") IN ", categ[categ.len], " OF categ ARGUMENT, THE FOLLOWING COLORS:\n", paste(categ.color, collapse = " "), "\nHAVE BEEN ATTRIBUTED TO THESE CLASSES:\n", paste(levels(factor(data1[, categ[categ.len]])), collapse = " "))
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}else if(length(categ.color) == length(data1[, categ[categ.len]])){# here length(categ.color) is equal to nrow(data1) -> Modif to have length(categ.color) equal to the different number of categ (length(categ.color) == length(levels(data1[, categ[categ.len]])))
-data1 <- data.frame(data1, categ.color = categ.color, stringsAsFactors = TRUE)
-tempo.check <- unique(data1[ , c(categ[categ.len], "categ.color")])
-if( ! (nrow(tempo.check) == length(unique(categ.color)) & nrow(tempo.check) == length(unique(data1[ , categ[categ.len]])))){
-tempo.cat <- paste0("ERROR IN ", function.name, "\ncateg.color ARGUMENT HAS THE LENGTH OF data1 ROW NUMBER\nBUT IS INCORRECTLY ASSOCIATED TO EACH CLASS OF categ ", categ[categ.len], ":\n", paste(unique(mapply(FUN = "paste", data1[ ,categ[categ.len]], data1[ ,"categ.color"])), collapse = "\n"))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else{
-# data1[, categ[categ.len]] <- factor(data1[, categ[categ.len]]) # not required because sure that is is a factor
-categ.color <- unique(data1$categ.color[order(data1[, categ[categ.len]])]) # Modif to have length(categ.color) equal to the different number of categ (length(categ.color) == length(levels(data1[, categ[categ.len]])))
-if(box.alpha != 0){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") categ.color ARGUMENT HAS THE LENGTH OF data1 ROW NUMBER\nCOLORS HAVE BEEN RESPECTIVELY ASSOCIATED TO EACH CLASS OF categ ", categ[categ.len], " AS:\n", paste(levels(factor(data1[, categ[categ.len]])), collapse = " "), "\n", paste(categ.color, collapse = " "))
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-}else if(length(categ.color) == 1L){
-# data1[, categ[categ.len]] <- factor(data1[, categ[categ.len]]) # not required because sure that is is a factor
-data1 <- data.frame(data1, categ.color = categ.color, stringsAsFactors = TRUE)
-categ.color <- rep(categ.color, length(levels(data1[, categ[categ.len]])))
-if(box.alpha != 0){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") categ.color ARGUMENT HAS LENGTH 1, MEANING THAT ALL THE DIFFERENT CLASSES OF ", categ[categ.len], "\n", paste(levels(factor(data1[, categ[categ.len]])), collapse = " "), "\nWILL HAVE THE SAME COLOR\n", paste(categ.color, collapse = " "))
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}else{
-tempo.cat <- paste0("ERROR IN ", function.name, "\ncateg.color ARGUMENT MUST BE (1) LENGTH 1, OR (2) THE LENGTH OF data1 NROWS AFTER NA/Inf REMOVAL, OR (3) THE LENGTH OF THE CLASSES IN THE categ ", categ[categ.len], " COLUMN. HERE IT IS COLOR LENGTH ", length(categ.color), " VERSUS CATEG LENGTH ", length(data1[, categ[categ.len]]), " AND CATEG CLASS LENGTH ", length(unique(data1[, categ[categ.len]])), "\nPRESENCE OF NA/Inf COULD BE THE PROBLEM")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-}else{
-categ.len <- length(categ) # if only categ1, then colors for classes of categ1, if length(categ) == 2L, then colors for classes of categ2
-# data1[, categ[categ.len]] <- factor(data1[, categ[categ.len]]) # not required because sure that is is a factor
-categ.color <- fun_gg_palette(length(levels(data1[, categ[categ.len]])))
-data1 <- data.frame(data1, categ.color = data1[, categ[categ.len]], stringsAsFactors = TRUE)
-data1$categ.color <- factor(data1$categ.color, labels = categ.color)  # replace the characters of data1[, categ[categ.len]] put in the categ.color column by the categ.color (can be write like this because categ.color is length of levels of data1[, categ[categ.len]])
-if(box.alpha != 0){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") NULL categ.color ARGUMENT -> COLORS RESPECTIVELY ATTRIBUTED TO EACH CLASS OF ", categ[categ.len], " IN data1:\n", paste(categ.color, collapse = " "), "\n", paste(levels(data1[, categ[categ.len]]), collapse = " "))
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-# categ.color not NULL anymore
-categ.color <- as.character(categ.color)
-# categ.color is a character string representing the diff classes
-data1$categ.color <- factor(data1$categ.color, levels = unique(categ.color)) # ok because if categ.color is a character string, the order make class 1, class 2, etc. unique() because no duplicates allowed
-# data1$categ.color is a factor with order of levels -> categ.color
-# end management of categ.color
-# management of dot.color
-if( ! is.null(dot.color)){
-# optional legend of dot colors
-if( ! is.null(dot.categ)){
-ini.dot.categ <- dot.categ
-if( ! dot.categ %in% names(data1)){ # no need to use all() because length(dot.categ) = 1
-tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.categ ARGUMENT MUST BE A COLUMN NAME OF data1. HERE IT IS:\n", dot.categ)
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else if(dot.categ %in% categ){ # no need to use all() because length(dot.categ) = 1. Do not use dot.categ %in% categ[length(categ)] -> error
-# management of dot legend if dot.categ %in% categ (because legends with the same name are joined in ggplot2) 
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") THE COLUMN NAME OF data1 INDICATED IN THE dot.categ ARGUMENT (", dot.categ, ") HAS BEEN REPLACED BY ", paste0(dot.categ, "_DOT"), " TO AVOID MERGED LEGEND BY GGPLOT2")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-data1 <- data.frame(data1, dot.categ = data1[, dot.categ], stringsAsFactors = TRUE) # dot.categ is not a column name of data1 (checked above with reserved words)
-dot.categ <- paste0(dot.categ, "_DOT")
-names(data1)[names(data1) == "dot.categ"] <- dot.categ # paste0(dot.categ, "_DOT") is not a column name of data1 (checked above with reserved words)
-# tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.categ ARGUMENT CANNOT BE A COLUMN NAME OF data1 ALREADY SPECIFIED IN THE categ ARGUMENT:\n", dot.categ, "\nINDEED, dot.categ ARGUMENT IS MADE TO HAVE MULTIPLE DOT COLORS NOT RELATED TO THE BOXPLOT CATEGORIES")
-# stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n"), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-tempo1 <- fun_check(data = data1[, dot.categ], data.name = paste0(dot.categ, " COLUMN OF data1"), class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name)
-tempo2 <- fun_check(data = data1[, dot.categ], data.name = paste0(dot.categ, " COLUMN OF data1"), class = "factor", na.contain = TRUE, fun.name = function.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.categ COLUMN MUST BE A FACTOR OR CHARACTER VECTOR") #
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-data1[, dot.categ] <- factor(data1[, dot.categ]) # if already a factor, change nothing, if characters, levels according to alphabetical order
-# dot.categ column of data1 is factor from here
-if( ! is.null(dot.categ.class.order)){
-if(any(duplicated(dot.categ.class.order), na.rm = TRUE)){
-tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.categ.class.order ARGUMENT CANNOT HAVE DUPLICATED CLASSES: ", paste(dot.categ.class.order, collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else if( ! (all(dot.categ.class.order %in% levels(data1[, dot.categ])) & all(levels(data1[, dot.categ]) %in% dot.categ.class.order, na.rm = TRUE))){
-tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.categ.class.order ARGUMENT MUST BE CLASSES OF dot.categ ARGUMENT\nHERE IT IS:\n", paste(dot.categ.class.order, collapse = " "), "\nFOR dot.categ.class.order AND IT IS:\n", paste(levels(data1[, dot.categ]), collapse = " "), "\nFOR dot.categ COLUMN (", ini.dot.categ, ") OF data1")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else{
-data1[, dot.categ] <- factor(data1[, dot.categ], levels = dot.categ.class.order) # reorder the factor
-}
-}else{
-if(all(dot.color == "same") & length(dot.color)== 1L){ # all() without na.rm -> ok because dot.color cannot be NA (tested above)
-dot.categ.class.order <- unlist(categ.class.order[length(categ)])
-data1[, dot.categ] <- factor(data1[, dot.categ], levels = dot.categ.class.order) # reorder the factor
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") THE dot.categ.class.order SETTING IS NULL AND dot.color IS \"same\". ORDER OF categ.class.order WILL BE APPLIED FOR LEGEND DISPLAY: ", paste(dot.categ.class.order, collapse = " "))
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}else{
-dot.categ.class.order <- sort(levels(data1[, dot.categ]))
-data1[, dot.categ] <- factor(data1[, dot.categ], levels = dot.categ.class.order) # reorder the factor
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") THE dot.categ.class.order SETTING IS NULL. ALPHABETICAL ORDER WILL BE APPLIED FOR LEGEND DISPLAY: ", paste(dot.categ.class.order, collapse = " "))
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-# dot.categ.class.order not NULL anymore (character string) if dot.categ is not NULL
-if(all(dot.color == "same") & length(dot.color)== 1L){ # all() without na.rm -> ok because dot.color cannot be NA (tested above)
-if( ! identical(ini.dot.categ, categ[length(categ)])){
-tempo.cat <- paste0("ERROR IN ", function.name, "\nWHEN dot.color ARGUMENT IS \"same\", THE COLUMN NAME IN dot.categ ARGUMENT MUST BE IDENTICAL TO THE LAST COLUMN NAME IN categ ARGUMENT. HERE IT IS:\ndot.categ: ", paste(ini.dot.categ, collapse = " "), "\ncateg: ", paste(categ, collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else if( ! fun_comp_1d(unlist(categ.class.order[length(categ)]), dot.categ.class.order)$identical.content){
-tempo.cat <- paste0("ERROR IN ", function.name, "\nWHEN dot.color ARGUMENT IS \"same\",\nLAST COMPARTMENT OF categ.class.order ARGUMENT AND dot.categ.class.order ARGUMENT CANNOT BE DIFFERENT:\nLAST COMPARTMENT OF categ.class.order: ", paste(unlist(categ.class.order[length(categ)]), collapse = " "), "\ndot.categ.class.order: ", paste(dot.categ.class.order, collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-}
-for(i3 in 1:length(categ)){
-if(identical(categ[i3], ini.dot.categ) & ! identical(unlist(categ.class.order[i3]), dot.categ.class.order) & identical(sort(unlist(categ.class.order[i3])), sort(dot.categ.class.order))){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") THE dot.categ ARGUMENT SETTING IS PRESENT IN THE categ ARGUMENT SETTING, BUT ORDER OF THE CLASSES IS NOT THE SAME:\ncateg.class.order: ", paste(unlist(categ.class.order[i3]), collapse = " "), "\ndot.categ.class.order: ", paste(dot.categ.class.order, collapse = " "), "\nNOTE THAT ORDER OF categ.class.order IS THE ONE USED FOR THE AXIS REPRESENTATION")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-if(is.null(dot.legend.name)){
-dot.legend.name <- if(ini.dot.categ %in% categ[length(categ)]){dot.categ}else{ini.dot.categ} #
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") THE dot.legend.name SETTING IS NULL -> ", dot.legend.name, " WILL BE USED AS LEGEND TITLE OF DOTS")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-# dot.legend.name not NULL anymore (character string)
-}else{
-if( ! is.null(dot.categ.class.order)){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") THE dot.categ.class.order ARGUMENT IS NOT NULL, BUT IS THE dot.categ ARGUMENT\n-> dot.categ.class.order NOT CONSIDERED AS NO LEGEND WILL BE DRAWN")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-# But dot.categ.class.order will be converted to NULL below (not now)
-}
-# end optional legend of dot colors
-# check the nature of color
-# integer colors into gg_palette
-tempo.check.color <- fun_check(data = dot.color, class = "integer", double.as.integer.allowed = TRUE, na.contain = TRUE, fun.name = function.name)$problem
-if(tempo.check.color == FALSE){
-# convert integers into colors
-dot.color <- fun_gg_palette(max(dot.color, na.rm = TRUE))[dot.color]
-}
-# end integer colors into gg_palette
-if(all(dot.color == "same") & length(dot.color)== 1L){# all() without na.rm -> ok because dot.color cannot be NA (tested above)
-dot.color <- categ.color # same color of the dots as the corresponding box color
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") dot.color ARGUMENT HAS BEEN SET TO \"same\"\nTHUS, DOTS WILL HAVE THE SAME COLORS AS THE CORRESPONDING BOXPLOT")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}else if( ! (all(dot.color %in% colors() | grepl(pattern = "^#", dot.color)))){ # check that all strings of low.color start by #, # all() without na.rm -> ok because dot.color cannot be NA (tested above)
-tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.color ARGUMENT MUST BE (1) A HEXADECIMAL COLOR VECTOR STARTING BY #, OR (2) COLOR NAMES GIVEN BY colors(), OR (3) INTEGERS, OR THE STRING \"same\"\nHERE IT IS: ", paste(unique(dot.color), collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-if(any(is.na(dot.color))){ # normally no NA with is.finite
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") dot.color ARGUMENT CONTAINS NA")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-# end check the nature of color
-# check the length of color
-if( ! is.null(dot.categ)){
-# optional legend of dot colors
-if(length(data1[, dot.categ]) == length(levels(data1[, dot.categ])) & length(dot.color) == length(data1[, dot.categ])){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") THE NUMBER OF CLASSES OF THE COLUMN ", dot.categ, " THE NUMBER OF ROWS OF THIS COLUMN AND THE NUMBER OF COLORS OF THE dot.color ARGUMENT ARE ALL EQUAL. DOT COLORS WILL BE ATTRIBUTED ACCORDING THE LEVELS OF ", dot.categ, ", NOT ACCORDING TO THE ROWS OF ", dot.categ)
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-if(length(dot.color) > 1 & ! (length(dot.color) == length(unique(data1[, dot.categ])) | length(dot.color) == length(data1[, dot.categ]))){
-tempo.cat <- paste0("ERROR IN ", function.name, "\nWHEN LENGTH OF THE dot.color ARGUMENT IS MORE THAN 1, IT MUST BE EQUAL TO THE NUMBER OF 1) ROWS OR 2) LEVELS OF dot.categ COLUMN (", dot.categ, "):\ndot.color: ", paste(dot.color, collapse = " "), "\ndot.categ LEVELS: ", paste(levels(data1[, dot.categ]), collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else if(length(dot.color) > 1 & length(dot.color) == length(unique(data1[, dot.categ]))){
-data1 <- data.frame(data1, dot.color = data1[, dot.categ], stringsAsFactors = TRUE)
-data1$dot.color <- factor(data1$dot.color, labels = dot.color) # do not use labels = unique(dot.color). Otherwise, we can have green1 green2 when dot.color is c("green", "green")
-}else if(length(dot.color) > 1 & length(dot.color) == length(data1[, dot.categ])){
-data1 <- data.frame(data1, dot.color = dot.color, stringsAsFactors = TRUE)
-}else if(length(dot.color)== 1L & length(dot.categ.class.order) > 1){ # to deal with single color
-data1 <- data.frame(data1, dot.color = dot.color, stringsAsFactors = TRUE)
-}
-dot.color <- as.character(unique(data1$dot.color[order(data1[, dot.categ])])) # reorder the dot.color character vector
-if(length(dot.color)== 1L & length(dot.categ.class.order) > 1){ # to deal with single color
-dot.color <- rep(dot.color, length(dot.categ.class.order))
-}
-tempo.check <- unique(data1[ , c(dot.categ, "dot.color")])
-if(length(unique(data1[ , "dot.color"])) > 1 & ( ! (nrow(tempo.check) == length(unique(data1[ , "dot.color"])) & nrow(tempo.check) == length(unique(data1[ , dot.categ]))))){ # length(unique(data1[ , "dot.color"])) > 1 because if only one color, can be attributed to each class of dot.categ
-tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.color ARGUMENT IS INCORRECTLY ASSOCIATED TO EACH CLASS OF dot.categ (", dot.categ, ") COLUMN:\n", paste(unique(mapply(FUN = "paste", data1[ , dot.categ], data1[ ,"dot.color"])), collapse = "\n"))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else{
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") IN dot.categ ARGUMENT (", ini.dot.categ, "), THE FOLLOWING COLORS OF DOTS:\n", paste(dot.color, collapse = " "), "\nHAVE BEEN ATTRIBUTED TO THESE CLASSES:\n", paste(levels(data1[, dot.categ]), collapse = " "))
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-# dot.color is a character string representing the diff classes of dot.categ
-# data1$dot.color is a factor with order of levels -> dot.categ
-# end optional legend of dot colors
-}else{
-categ.len <- length(categ) # if only categ1, then colors for classes of categ1, if length(categ) == 2L, then colors for classes of categ2
-if(length(dot.color) == length(levels(data1[, categ[categ.len]]))){ # here length(dot.color) is equal to the different number of categ
-# data1[, categ[categ.len]] <- factor(data1[, categ[categ.len]]) # not required because sure that is is a factor
-data1 <- data.frame(data1, dot.color = data1[, categ[categ.len]], stringsAsFactors = TRUE)
-data1$dot.color <- factor(data1$dot.color, labels = dot.color)
-if(box.alpha != 0){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") IN ", categ[categ.len], " OF categ ARGUMENT, THE FOLLOWING COLORS:\n", paste(dot.color, collapse = " "), "\nHAVE BEEN ATTRIBUTED TO THESE CLASSES:\n", paste(levels(factor(data1[, categ[categ.len]])), collapse = " "))
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}else if(length(dot.color) == length(data1[, categ[categ.len]])){# here length(dot.color) is equal to nrow(data1) -> Modif to have length(dot.color) equal to the different number of categ (length(dot.color) == length(levels(data1[, categ[categ.len]])))
-data1 <- data.frame(data1, dot.color = dot.color, stringsAsFactors = TRUE)
-}else if(length(dot.color)== 1L & ! all(dot.color == "same")){ # all() without na.rm -> ok because dot.color cannot be NA (tested above)
-# data1[, categ[categ.len]] <- factor(data1[, categ[categ.len]]) # not required because sure that is is a factor
-data1 <- data.frame(data1, dot.color = dot.color, stringsAsFactors = TRUE)
-dot.color <- rep(dot.color, length(levels(data1[, categ[categ.len]])))
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") dot.color ARGUMENT HAS LENGTH 1, MEANING THAT ALL THE DIFFERENT CLASSES OF ", categ[categ.len], "\n", paste(levels(factor(data1[, categ[categ.len]])), collapse = " "), "\nWILL HAVE THE SAME COLOR\n", paste(dot.color, collapse = " "))
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}else{
-tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.color ARGUMENT MUST BE (1) LENGTH 1, OR (2) THE LENGTH OF data1 NROWS AFTER NA/Inf REMOVAL, OR (3) THE LENGTH OF THE CLASSES IN THE categ ", categ[categ.len], " COLUMN. HERE IT IS COLOR LENGTH ", length(dot.color), " VERSUS CATEG LENGTH ", length(data1[, categ[categ.len]]), " AND CATEG CLASS LENGTH ", length(unique(data1[, categ[categ.len]])), "\nPRESENCE OF NA/Inf COULD BE THE PROBLEM")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-# end check the length of color
-dot.color <- as.character(dot.color)
-# dot.color is a character string representing the diff classes
-data1$dot.color <- factor(data1$dot.color, levels = unique(dot.color)) # ok because if dot.color is a character string, the order make class 1, class 2, etc. If dot.color is a column of data1, then levels will be created, without incidence, except if dot.categ specified (see below). unique() because no duplicates allowed
-# data1$dot.color is a factor with order of levels -> dot.color
-}
-# end optional legend of dot colors
-}else if(is.null(dot.color) & ! (is.null(dot.categ) & is.null(dot.categ.class.order) & is.null(dot.legend.name))){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") dot.categ OR dot.categ.class.order OR dot.legend.name ARGUMENT HAS BEEN SPECIFIED BUT dot.color ARGUMENT IS NULL (NO DOT PLOTTED)")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-# dot.color either NULL (no dot plotted) or character string (potentially representing the diff classes of dot.categ)
-# data1$dot.color is either NA or a factor (with order of levels -> depending on dot.categ or categ[length(categ)], or other
-if(is.null(dot.categ)){
-dot.categ.class.order <- NULL # because not used anyway
-}
-# dot.categ.class.order either NULL if dot.categ is NULL (no legend displayed) or character string (potentially representing the diff classes of dot.categ)
-# end management of dot.color
-if(is.null(dot.color) & box.fill == FALSE & dot.alpha <= 0.025){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") THE FOLLOWING ARGUMENTS WERE SET AS:\ndot.color = NULL (NOT ALL DOTS BUT ONLY POTENTIAL OUTLIER DOTS DISPLAYED)\nbox.fill = FALSE (NO FILLING COLOR FOR BOTH BOXES AND POTENTIAL OUTLIER DOTS)\ndot.alpha = ", fun_round(dot.alpha, 4), "\n-> POTENTIAL OUTLIER DOTS MIGHT NOT BE VISIBLE BECAUSE ALMOST TRANSPARENT")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-if(is.null(dot.color) & box.fill == FALSE & dot.border.size == 0){
-tempo.cat <- paste0("ERROR IN ", function.name, "\nTHE FOLLOWING ARGUMENTS WERE SET AS:\ndot.color = NULL (NOT ALL DOTS BUT ONLY POTENTIAL OUTLIER DOTS DISPLAYED)\nbox.fill = FALSE (NO FILLING COLOR FOR BOTH BOXES AND POTENTIAL OUTLIER DOTS)\ndot.border.size = 0 (NO BORDER FOR POTENTIAL OUTLIER DOTS)\n-> THESE SETTINGS ARE NOT ALLOWED BECAUSE THE POTENTIAL OUTLIER DOTS WILL NOT BE VISIBLE")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-# integer dot.border.color into gg_palette
-if( ! is.null(dot.border.color)){
-tempo <- fun_check(data = dot.border.color, class = "vector", typeof = "integer", double.as.integer.allowed = TRUE, length = 1, fun.name = function.name)
-if(tempo$problem == FALSE){ # convert integers into colors
-dot.border.color <- fun_gg_palette(max(dot.border.color, na.rm = TRUE))[dot.border.color]
-}
-}
-# end integer dot.border.color into gg_palette
-# na detection and removal (done now to be sure of the correct length of categ)
-column.check <- c("categ.color", if( ! is.null(dot.color)){"dot.color"}) # 
-if(any(is.na(data1[, column.check]))){ # data1 used here instead of data1.ini in case of new NaN created by log conversion (neg values) # normally no NA with is.na
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") NA DETECTED IN COLUMNS ", paste(column.check, collapse = " "), " OF data1 AND CORRESPONDING ROWS REMOVED (SEE $removed.row.nb AND $removed.rows)")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-for(i2 in 1:length(column.check)){
-if(any(is.na(data1[, column.check[i2]]))){ # normally no NA with is.na
-tempo.warn <- paste0("NA REMOVAL DUE TO COLUMN ", column.check[i2], " OF data1")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n", tempo.warn)))
-}
-}
-tempo <- unique(unlist(lapply(lapply(c(data1[column.check]), FUN = is.na), FUN = which)))
-removed.row.nb <- c(removed.row.nb, tempo)
-removed.rows <- rbind(removed.rows, data1[tempo, ], stringsAsFactors = FALSE) # here data1 used because categorical columns tested
-if(length(tempo) != 0){
-data1 <- data1[-tempo, ] # WARNING tempo here and not removed.row.nb because the latter contain more numbers thant the former
-data1.ini <- data1.ini[-tempo, ] # WARNING tempo here and not removed.row.nb because the latter contain more numbers thant the former
-for(i3 in 1:length(column.check)){
-if(any( ! unique(removed.rows[, column.check[i3]]) %in% unique(data1[, column.check[i3]]), na.rm = TRUE)){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") IN COLUMN ", column.check[i3], " OF data1, THE FOLLOWING CLASSES HAVE DISAPPEARED AFTER NA/Inf REMOVAL (IF COLUMN USED IN THE PLOT, THIS CLASS WILL NOT BE DISPLAYED):\n", paste(unique(removed.rows[, column.check[i3]])[ ! unique(removed.rows[, column.check[i3]]) %in% unique(data1[, column.check[i3]])], collapse = " "))
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-}
-for(i2 in 1:length(column.check)){
-if(column.check[i2] == "categ.color"){
-categ.color <- levels(data1[, column.check[i2]])[levels(data1[, column.check[i2]]) %in% unique(data1[, column.check[i2]])] # remove the absent color in the character vector
-if(length(categ.color)== 1L & length(unlist(categ.class.order[length(categ)])) > 1){ # to deal with single color
-categ.color <- rep(categ.color, length(unlist(categ.class.order[length(categ)])))
-}
-data1[, column.check[i2]] <- factor(as.character(data1[, column.check[i2]]), levels = unique(categ.color))
-}
-if(column.check[i2] == "dot.color"){
-dot.color <- levels(data1[, column.check[i2]])[levels(data1[, column.check[i2]]) %in% unique(data1[, column.check[i2]])] # remove the absent color in the character vector
-if(length(dot.color)== 1L & length(dot.categ.class.order) > 1){ # to deal with single color. If dot.categ.class.order == NULL (which is systematically the case if dot.categ == NULL), no rep(dot.color, length(dot.categ.class.order)
-dot.color <- rep(dot.color, length(dot.categ.class.order))
-}
-data1[, column.check[i2]] <- factor(as.character(data1[, column.check[i2]]), levels = unique(dot.color))
-}
-}
-}
-# end na detection and removal (done now to be sure of the correct length of categ)
-# From here, data1 and data.ini have no more NA or NaN
-# end other checkings
-# reserved word checking
-#already done above
-# end reserved word checking
-# end second round of checking and data preparation
-
-
-# package checking
-fun_pack(req.package = c(
-"ggplot2", 
-"gridExtra", 
-"lemon", 
-"scales"
-), lib.path = lib.path)
-# end package checking
-
-
-
-
-
-# main code
-# y coordinates recovery (create ini.box.coord, dot.coord and modify data1)
-if(length(categ)== 1L){
-# width commputations
-box.width2 <- box.width
-box.space <- 0 # to inactivate the shrink that add space between grouped boxes, because no grouped boxes here
-# end width commputations
-# data1 check categ order for dots coordinates recovery
-data1 <- data.frame(data1, categ.check = data1[, categ[1]], stringsAsFactors = TRUE)
-data1$categ.check <- as.integer(data1$categ.check) # to check that data1[, categ[1]] and dot.coord$group are similar, during merging
-# end data1 check categ order for dots coordinates recovery
-# per box dots coordinates recovery
-tempo.gg.name <- "gg.indiv.plot."
-tempo.gg.count <- 0
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = paste0("ggplot2::ggplot()", if(is.null(add)){""}else{add})))) # add added here to have the facets
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_point(data = data1, mapping = ggplot2::aes_string(x = categ[1], y = y, color = categ[1]), stroke = dot.border.size, size = dot.size, alpha = dot.alpha, shape = 21))
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "color", name = box.legend.name, values = if(is.null(categ.color)){rep(NA, length(unique(data1[, categ[1]])))}else if(length(categ.color)== 1L){rep(categ.color, length(unique(data1[, categ[1]])))}else{categ.color})) # categ.color used for dot colors because at that stage, we do not care about colors
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_boxplot(data = data1, mapping = ggplot2::aes_string(x = categ[1], y = y, fill = categ[1]), coef = if(box.whisker.kind == "no"){0}else if(box.whisker.kind == "std"){1.5}else if(box.whisker.kind == "max"){Inf})) # fill because this is what is used with geom_box # to easily have the equivalent of the grouped boxes
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "fill", name = box.legend.name, values = if(length(categ.color)== 1L){rep(categ.color, length(unique(data1[, categ[1]])))}else{categ.color}))
-# end per box dots coordinates recovery
-}else if(length(categ) == 2L){
-# width commputations
-box.width2 <- box.width / length(unique(data1[, categ[length(categ)]])) # real width of each box in x-axis unit, among the set of grouped box. Not relevant if no grouped boxes length(categ)== 1L
-# end width commputations
-# data1 check categ order for dots coordinates recovery
-tempo.factor <- paste0(data1[order(data1[, categ[2]], data1[, categ[1]]), categ[2]], "_", data1[order(data1[, categ[2]], data1[, categ[1]]), categ[1]])
-data1 <- data.frame(data1[order(data1[, categ[2]], data1[, categ[1]]), ], categ.check = factor(tempo.factor, levels = unique(tempo.factor)), stringsAsFactors = TRUE)
-data1$categ.check <- as.integer(data1$categ.check)
-# end data1 check categ order for dots coordinates recovery
-# per box dots coordinates recovery
-tempo.gg.name <- "gg.indiv.plot."
-tempo.gg.count <- 0
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = paste0("ggplot2::ggplot()", if(is.null(add)){""}else{add})))) # add added here to have the facets
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_point(data = data1, mapping = ggplot2::aes_string(x = categ[1], y = y, color = categ[2]), stroke = dot.border.size, size = dot.size, alpha = dot.alpha, shape = 21))
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "color", name = box.legend.name, values = if(is.null(categ.color)){rep(NA, length(unique(data1[, categ[2]])))}else if(length(categ.color)== 1L){rep(categ.color, length(unique(data1[, categ[2]])))}else{categ.color})) # categ.color used for dot colors because at that stage, we do not care about colors
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_boxplot(data = data1, mapping = ggplot2::aes_string(x = categ[1], y = y, fill = categ[2]), coef = if(box.whisker.kind == "no"){0}else if(box.whisker.kind == "std"){1.5}else if(box.whisker.kind == "max"){Inf})) # fill because this is what is used with geom_box # to easily have the equivalent of the grouped boxes
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "fill", name = box.legend.name, values = if(length(categ.color)== 1L){rep(categ.color, length(unique(data1[, categ[2]])))}else{categ.color}))
-# end per box dots coordinates recovery
-}else{
-tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nCODE INCONSISTENCY 1")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-if( ! is.null(stat.pos)){
-stat.just <- fun_gg_just(
-angle = stat.angle, 
-pos = ifelse(
-vertical == TRUE, 
-ifelse(stat.pos == "top", "bottom", "top"), # "bottom" because we want justification for text that are below the ref point which is the top of the graph. The opposite for "above"
-ifelse(stat.pos == "top", "left", "right") # "left" because we want justification for text that are on the left of the ref point which is the right border of the graph. The opposite for "above"
-), 
-kind = "text"
-)
-}
-# has in fact no interest because ggplot2 does not create room for geom_text()
-tempo.data.max <- data1[which.max(data1[, y]), ]
-tempo.data.max <- data.frame(tempo.data.max, label = formatC(tempo.data.max[, y], digit = 2, drop0trailing = TRUE, format = "f"), stringsAsFactors = TRUE)
-# end has in fact no interest because ggplot2 does not create room for geom_text()
-tempo.graph.info.ini <- ggplot2::ggplot_build(eval(parse(text = paste(paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "), if( ! is.null(stat.pos)){' + ggplot2::geom_text(data = tempo.data.max, mapping = ggplot2::aes_string(x = 1, y = y, label = "label"), size = stat.size, color = "black", angle = stat.angle, hjust = stat.just$hjust, vjust = stat.just$vjust)'})))) # added here to have room for annotation
-dot.coord <- tempo.graph.info.ini$data[[1]]
-dot.coord$x <- as.numeric(dot.coord$x) # because weird class
-dot.coord$PANEL <- as.numeric(dot.coord$PANEL) # because numbers as levels. But may be a problem is facet are reordered ?
-tempo.mean <- aggregate(x = dot.coord$y, by = list(dot.coord$group, dot.coord$PANEL), FUN = mean, na.rm = TRUE)
-names(tempo.mean)[names(tempo.mean) == "x"] <- "MEAN"
-names(tempo.mean)[names(tempo.mean) == "Group.1"] <- "BOX"
-names(tempo.mean)[names(tempo.mean) == "Group.2"] <- "PANEL"
-dot.coord <- data.frame(
-dot.coord[order(dot.coord$group, dot.coord$y), ], # dot.coord$PANEL deals below
-y.check = as.double(data1[order(data1$categ.check, data1[, y]), y]), 
-categ.check = data1[order(data1$categ.check, data1[, y]), "categ.check"], 
-dot.color = if(is.null(dot.color)){NA}else{data1[order(data1$categ.check, data1[, y]), "dot.color"]}, 
-data1[order(data1$categ.check, data1[, y]), ][categ], # avoid the renaming below
-stringsAsFactors = TRUE
-) # y.check to be sure that the order is the same between the y of data1 and the y of dot.coord
-# names(dot.coord)[names(dot.coord) == "tempo.categ1"] <- categ[1]
-if( ! is.null(dot.categ)){
-dot.coord <- data.frame(dot.coord, data1[order(data1$categ.check, data1[, y]), ][dot.categ], stringsAsFactors = TRUE) # avoid the renaming
-}
-if( ! is.null(facet.categ)){
-dot.coord <- data.frame(dot.coord, data1[order(data1$categ.check, data1[, y]), ][facet.categ], stringsAsFactors = TRUE) # for facet panels
-tempo.test <- NULL
-for(i2 in 1:length(facet.categ)){
-tempo.test <- paste0(tempo.test, ".", formatC(as.numeric(dot.coord[, facet.categ[i2]]), width = nchar(max(as.numeric(dot.coord[, facet.categ[i2]]), na.rm = TRUE)), flag = "0")) # convert factor into numeric with leading zero for proper ranking # merge the formatC() to create a new factor. The convertion to integer should recreate the correct group number. Here as.numeric is used and not as.integer in case of numeric in facet.categ (because comes from add and not checked by fun_check, contrary to categ)
-}
-tempo.test <- as.integer(factor(tempo.test))
-if( ! identical(as.integer(dot.coord$PANEL), tempo.test)){
-tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nas.integer(dot.coord$PANEL) AND tempo.test MUST BE IDENTICAL. CODE HAS TO BE MODIFIED")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-}
-if(dot.tidy == TRUE){
-if( ! is.null(dot.categ)){
-dot.coord <- data.frame(dot.coord, tidy_group = data1[order(data1$categ.check, data1[, y]), ][, dot.categ], stringsAsFactors = TRUE) # avoid the renaming
-# tidy_group_coord is to be able to fuse table when creating the table for dot coordinates
-if(dot.categ %in% categ){
-dot.coord <- data.frame(dot.coord, tidy_group_coord = dot.coord$group, stringsAsFactors = TRUE)
-}else{
-dot.coord <- data.frame(dot.coord, tidy_group_coord = as.integer(factor(paste0(
-formatC(as.integer(dot.coord[, categ[1]]), width = nchar(max(as.integer(dot.coord[, categ[1]]), na.rm = TRUE)), flag = "0"), # convert factor into numeric with leading zero for proper ranking
-".", 
-if(length(categ) == 2L){formatC(as.integer(dot.coord[, categ[2]]), width = nchar(max(as.integer(dot.coord[, categ[2]]), na.rm = TRUE)), flag = "0")}, # convert factor into numeric with leading zero for proper ranking
-if(length(categ) == 2L){"."}, 
-formatC(as.integer(dot.coord[, dot.categ]), width = nchar(max(as.integer(dot.coord[, dot.categ]), na.rm = TRUE)), flag = "0") # convert factor into numeric with leading zero for proper ranking
-)), stringsAsFactors = TRUE) # merge the 2 or 3 formatC() to create a new factor. The convertion to integer should recreate the correct group number
-) # for tidy dot plots
-}
-}else{
-dot.coord <- data.frame(dot.coord, tidy_group = if(length(categ)== 1L){
-dot.coord[, categ]}else{as.integer(factor(paste0(
-formatC(as.integer(dot.coord[, categ[1]]), width = nchar(max(as.integer(dot.coord[, categ[1]]), na.rm = TRUE)), flag = "0"), # convert factor into numeric with leading zero for proper ranking
-".", 
-formatC(as.integer(dot.coord[, categ[2]]), width = nchar(max(as.integer(dot.coord[, categ[2]]), na.rm = TRUE)), flag = "0")# convert factor into numeric with leading zero for proper ranking
-)), stringsAsFactors = TRUE) # merge the 2 formatC() to create a new factor. The convertion to integer should recreate the correct group number
-}) # for tidy dot plots
-# tidy_group_coord is to be able to fuse table when creating the table for dot coordinates
-dot.coord <- data.frame(dot.coord, tidy_group_coord = dot.coord$group, stringsAsFactors = TRUE)
-}
-}
-if( ! (identical(dot.coord$y, dot.coord$y.check) & identical(dot.coord$group, dot.coord$categ.check))){
-tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\n(dot.coord$y AND dot.coord$y.check) AS WELL AS (dot.coord$group AND dot.coord$categ.check) MUST BE IDENTICAL. CODE HAS TO BE MODIFIED")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else{
-if( ! identical(tempo.mean[order(tempo.mean$BOX, tempo.mean$PANEL), ]$BOX, unique(dot.coord[order(dot.coord$group, dot.coord$PANEL), c("group", "PANEL")])$group)){
-tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\n(tempo.mean$BOX, tempo.mean$PANEL) AND (dot.coord$group, dot.coord$PANEL) MUST BE IDENTICAL. CODE HAS TO BE MODIFIED")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else{
-tempo <- unique(dot.coord[order(dot.coord$group, dot.coord$PANEL), c(categ, if( ! is.null(dot.color) & ! is.null(dot.categ)){if(dot.categ != ini.dot.categ){dot.categ}}, if( ! is.null(facet.categ)){facet.categ}), drop = FALSE])
-# names(tempo) <- paste0(names(tempo), ".mean")
-tempo.mean <- data.frame(tempo.mean[order(tempo.mean$BOX, tempo.mean$PANEL), ], tempo, stringsAsFactors = TRUE)
-}
-}
-# at that stage, categ color and dot color are correctly attributed in data1, box.coord and dot.coord
-# end y dot coordinates recovery (create ini.box.coord, dot.coord and modify data1)
-# ylim range
-if(is.null(y.lim)){
-y.lim <- tempo.graph.info.ini$layout$panel_params[[1]]$y.range # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
-if(any(( ! is.finite(y.lim)) | is.na(y.lim)) | length(y.lim) != 2){ # kept but normally no more Inf in data1 # normally no NA with is.finite, etc.
-tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\ntempo.graph.info.ini$layout$panel_params[[1]]$y.range[1] CONTAINS NA OR Inf OR HAS LENGTH 1")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-}else if(y.log != "no"){
-y.lim <- get(y.log)(y.lim) # no env = sys.nframe(), inherit = FALSE in get() because look for function in the classical scope
-}
-if(y.log != "no"){
-# normally this control is not necessary anymore
-if(any( ! is.finite(y.lim))){ # normally no NA with is.finite
-tempo.cat <- paste0("ERROR IN ", function.name, "\ny.lim ARGUMENT CANNOT HAVE ZERO OR NEGATIVE VALUES WITH THE y.log ARGUMENT SET TO ", y.log, ":\n", paste(y.lim, collapse = " "), "\nPLEASE, CHECK DATA VALUES (PRESENCE OF ZERO OR INF VALUES)")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-}
-if(suppressWarnings(all(y.lim %in% c(Inf, -Inf)))){ # all() without na.rm -> ok because y.lim cannot be NA (tested above)
-# normally this control is not necessary anymore
-tempo.cat <- paste0("ERROR IN ", function.name, " y.lim CONTAINS Inf VALUES, MAYBE BECAUSE VALUES FROM data1 ARGUMENTS ARE NA OR Inf ONLY OR BECAUSE OF LOG SCALE REQUIREMENT")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-if(suppressWarnings(any(is.na(y.lim)))){ # normally no NA with is.na
-# normally this control is not necessary anymore
-tempo.cat <- paste0("ERROR IN ", function.name, " y.lim CONTAINS NA OR NaN VALUES, MAYBE BECAUSE VALUES FROM data1 ARGUMENTS ARE NA OR Inf ONLY OR BECAUSE OF LOG SCALE REQUIREMENT")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-y.lim.order <- order(y.lim) # to deal with inverse axis
-y.lim <- sort(y.lim)
-y.lim[1] <- y.lim[1] - abs(y.lim[2] - y.lim[1]) * ifelse(diff(y.lim.order) > 0, y.bottom.extra.margin, y.top.extra.margin) # diff(y.lim.order) > 0 medians not inversed axis
-y.lim[2] <- y.lim[2] + abs(y.lim[2] - y.lim[1]) * ifelse(diff(y.lim.order) > 0, y.top.extra.margin, y.bottom.extra.margin) # diff(y.lim.order) > 0 medians not inversed axis
-if(y.include.zero == TRUE){ # no need to check y.log != "no" because done before
-y.lim <- range(c(y.lim, 0), na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
-}
-y.lim <- y.lim[y.lim.order]
-if(any(is.na(y.lim))){ # normally no NA with is.na
-tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nCODE INCONSISTENCY 2")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-# end ylim range
-
-
-
-
-
-
-# drawing
-# constant part
-tempo.gg.name <- "gg.indiv.plot."
-tempo.gg.count <- 0
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = paste0("ggplot2::ggplot()", if(is.null(add)){""}else{add})))) # add is directly put here to deal with additional variable of data, like when using facet_grid. No problem if add is a theme, will be dealt below
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::xlab(if(is.null(x.lab)){categ[1]}else{x.lab}))
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ylab(if(is.null(y.lab)){y}else{y.lab}))
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ggtitle(title))
-# text angle management
-axis.just <- fun_gg_just(angle = x.angle, pos = ifelse(vertical == TRUE, "bottom", "left"), kind = "axis")
-# end text angle management
-add.check <- TRUE
-if( ! is.null(add)){ # if add is NULL, then = 0
-if(grepl(pattern = "ggplot2\\s*::\\s*theme", add) == TRUE){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") \"ggplot2::theme\" STRING DETECTED IN THE add ARGUMENT\n-> INTERNAL GGPLOT2 THEME FUNCTIONS theme() AND theme_classic() HAVE BEEN INACTIVATED, TO BE USED BY THE USER\n-> article ARGUMENT WILL BE IGNORED")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-add.check <- FALSE
-}
-}
-if(add.check == TRUE & article == TRUE){
-# WARNING: not possible to add theme()several times. NO message but the last one overwrites the others
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::theme_classic(base_size = text.size))
-if(grid == TRUE){
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
-text = ggplot2::element_text(size = text.size), 
-plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
-line = ggplot2::element_line(size = 0.5), 
-legend.key = ggplot2::element_rect(color = "white", size = 1.5), # size of the frame of the legend
-axis.line.y.left = ggplot2::element_line(colour = "black"), # draw lines for the y axis
-axis.line.x.bottom = ggplot2::element_line(colour = "black"), # draw lines for the x axis
-panel.grid.major.x = if(vertical == TRUE){NULL}else{ggplot2::element_line(colour = "grey85", size = 0.75)},
-panel.grid.major.y = if(vertical == TRUE){ggplot2::element_line(colour = "grey85", size = 0.75)}else{NULL},
-panel.grid.minor.y = if(vertical == TRUE){ggplot2::element_line(colour = "grey90", size = 0.25)}else{NULL},
-axis.text.x = if(vertical == TRUE){ggplot2::element_text(angle = axis.just$angle, hjust = axis.just$hjust, vjust = axis.just$vjust)}else{NULL},
-axis.text.y = if(vertical == TRUE){NULL}else{ggplot2::element_text(angle = axis.just$angle, hjust = axis.just$hjust, vjust = axis.just$vjust)},
-strip.background = ggplot2::element_rect(fill = NA, colour = NA) # for facet background
-))
-}else{
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
-text = ggplot2::element_text(size = text.size), 
-plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
-line = ggplot2::element_line(size = 0.5), 
-legend.key = ggplot2::element_rect(color = "white", size = 1.5), # size of the frame of the legend
-axis.line.y.left = ggplot2::element_line(colour = "black"), 
-axis.line.x.bottom = ggplot2::element_line(colour = "black"),
-axis.text.x = if(vertical == TRUE){ggplot2::element_text(angle = axis.just$angle, hjust = axis.just$hjust, vjust = axis.just$vjust)}else{NULL},
-axis.text.y = if(vertical == TRUE){NULL}else{ggplot2::element_text(angle = axis.just$angle, hjust = axis.just$hjust, vjust = axis.just$vjust)},
-strip.background = ggplot2::element_rect(fill = NA, colour = NA)
-))
-}
-}else if(add.check == TRUE & article == FALSE){
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
-text = ggplot2::element_text(size = text.size), 
-plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
-line = ggplot2::element_line(size = 0.5), 
-legend.key = ggplot2::element_rect(color = "white", size = 1.5), # size of the frame of the legend
-panel.background = ggplot2::element_rect(fill = "grey95"), 
-axis.line.y.left = ggplot2::element_line(colour = "black"), 
-axis.line.x.bottom = ggplot2::element_line(colour = "black"), 
-panel.grid.major.x = ggplot2::element_line(colour = "grey85", size = 0.75), 
-panel.grid.major.y = ggplot2::element_line(colour = "grey85", size = 0.75), 
-panel.grid.minor.x = ggplot2::element_blank(), 
-panel.grid.minor.y = ggplot2::element_line(colour = "grey90", size = 0.25), 
-strip.background = ggplot2::element_rect(fill = NA, colour = NA),
-axis.text.x = if(vertical == TRUE){ggplot2::element_text(angle = axis.just$angle, hjust = axis.just$hjust, vjust = axis.just$vjust)}else{NULL},
-axis.text.y = if(vertical == TRUE){NULL}else{ggplot2::element_text(angle = axis.just$angle, hjust = axis.just$hjust, vjust = axis.just$vjust)}
-))
-}
-# Contrary to fun_gg_bar(), cannot plot the boxplot right now, because I need the dots plotted first
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_boxplot(data = data1, mapping = ggplot2::aes_string(x = categ[1], y = y, group = categ[length(categ)]), position = ggplot2::position_dodge(width = NULL), color = NA, width = box.width, fill = NA)) # this is to set the graph (i.e., a blanck boxplot to be able to use x coordinates to plot dots before boxes)
-# end constant part
-
-
-
-
-# graphic info recovery (including means)
-tempo.graph.info <- ggplot2::ggplot_build(eval(parse(text = paste0(paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "), ' + ggplot2::geom_boxplot(data = data1, mapping = ggplot2::aes_string(x = categ[1], y = y, fill = categ[length(categ)]), position = ggplot2::position_dodge(width = NULL), width = box.width, notch = box.notch, coef = if(box.whisker.kind == "no"){0}else if(box.whisker.kind == "std"){1.5}else if(box.whisker.kind == "max"){Inf}) + ggplot2::scale_discrete_manual(aesthetics = "fill", name = box.legend.name, values = if(length(categ.color)== 1L){rep(categ.color, length(unique(data1[, categ[length(categ)]])))}else{categ.color})')))) # will be recovered later again, when ylim will be considered
-tempo.yx.ratio <- (tempo.graph.info$layout$panel_params[[1]]$y.range[2] - tempo.graph.info$layout$panel_params[[1]]$y.range[1]) / (tempo.graph.info$layout$panel_params[[1]]$x.range[2] - tempo.graph.info$layout$panel_params[[1]]$x.range[1])
-box.coord <- tempo.graph.info$data[[2]] # to have the summary statistics of the plot. Contrary to ini.box.plot, now integrates ylim Here because can be required for stat.pos when just box are plotted
-box.coord$x <- as.numeric(box.coord$x) # because x is of special class that block comparison of values using identical
-box.coord$PANEL <- as.numeric(box.coord$PANEL) # because numbers as levels. But may be a problem is facet are reordered ?
-box.coord <- box.coord[order(box.coord$group, box.coord$PANEL), ]
-if( ! (identical(tempo.mean$BOX, box.coord$group) & identical(tempo.mean$PANEL, box.coord$PANEL))){
-tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nidentical(tempo.mean$BOX, box.coord$group) & identical(tempo.mean$PANEL, box.coord$PANEL) DO NOT HAVE THE SAME VALUE ORDER")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else{
-# tempo <- c(categ, if( ! is.null(dot.color) & ! is.null(dot.categ)){if(dot.categ != ini.dot.categ){dot.categ}}, if( ! is.null(facet.categ)){facet.categ})
-if(any(names(tempo.mean) %in% names(box.coord), na.rm = TRUE)){
-names(tempo.mean)[names(tempo.mean) %in% names(box.coord)] <- paste0(names(tempo.mean)[names(tempo.mean) %in% names(box.coord)], ".mean")
-}
-box.coord <- data.frame(box.coord, tempo.mean, stringsAsFactors = TRUE)
-}
-# end graphic info recovery (including means)
-
-
-
-# stat output (will also serve for boxplot and mean display)
-# x not added know to do not have them in stat.nolog
-stat <- data.frame(
-MIN = box.coord$ymin_final, 
-QUART1 = box.coord$lower, 
-MEDIAN = box.coord$middle, 
-MEAN = box.coord$MEAN, 
-QUART3 = box.coord$upper, 
-MAX = box.coord$ymax_final, 
-WHISK_INF = box.coord$ymin, 
-BOX_INF = box.coord$lower, 
-NOTCH_INF = box.coord$notchlower, 
-NOTCH_SUP = box.coord$notchupper, 
-BOX_SUP = box.coord$upper, 
-WHISK_SUP = box.coord$ymax, 
-OUTLIERS = box.coord["outliers"], 
-tempo.mean[colnames(tempo.mean) != "MEAN"], 
-COLOR = box.coord$fill, 
-stringsAsFactors = TRUE
-) # box.coord["outliers"] written like this because it is a list. X coordinates not put now because several features to set
-names(stat)[names(stat) == "outliers"] <- "OUTLIERS"
-stat.nolog <- stat # stat.nolog ini will serve for outputs
-if(y.log != "no"){
-stat.nolog[c("MIN", "QUART1", "MEDIAN", "MEAN", "QUART3", "MAX", "WHISK_INF", "BOX_INF", "NOTCH_INF", "NOTCH_SUP", "BOX_SUP", "WHISK_SUP")] <- ifelse(y.log == "log2", 2, 10)^(stat.nolog[c("MIN", "QUART1", "MEDIAN", "MEAN", "QUART3", "MAX", "WHISK_INF", "BOX_INF", "NOTCH_INF", "NOTCH_SUP", "BOX_SUP", "WHISK_SUP")])
-stat.nolog$OUTLIERS <- lapply(stat.nolog$OUTLIERS, FUN = function(X){ifelse(y.log == "log2", 2, 10)^X})
-}
-# end stat output (will also serve for boxplot and mean display)
-
-
-
-
-
-
-# x coordinates management (for random plotting and for stat display)
-# width commputations
-width.ini <- c(box.coord$xmax - box.coord$xmin)[1] # all the box widths are equal here. Only the first one taken
-width.correct <- width.ini * box.space / 2
-if( ! (identical(stat$BOX, box.coord$group) & identical(stat$PANEL, box.coord$PANEL))){
-tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nidentical(stat$BOX, box.coord$group) & identical(stat$PANEL, box.coord$PANEL) MUST BE IDENTICAL. CODE HAS TO BE MODIFIED")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else{
-stat <- data.frame(
-stat, 
-X = box.coord$x, 
-X_BOX_INF = box.coord$xmin + width.correct, 
-X_BOX_SUP = box.coord$xmax - width.correct, 
-X_NOTCH_INF = box.coord$x - (box.coord$x - (box.coord$xmin + width.correct)) / 2, 
-X_NOTCH_SUP = box.coord$x + (box.coord$x - (box.coord$xmin + width.correct)) / 2, 
-X_WHISK_INF = box.coord$x - (box.coord$x - (box.coord$xmin + width.correct)) * box.whisker.width, 
-X_WHISK_SUP = box.coord$x + (box.coord$x - (box.coord$xmin + width.correct)) * box.whisker.width, 
-# tempo.mean[colnames(tempo.mean) != "MEAN"], # already added above
-stringsAsFactors = TRUE
-)
-stat$COLOR <- factor(stat$COLOR, levels = unique(categ.color))
-if( ! all(stat$NOTCH_SUP < stat$BOX_SUP & stat$NOTCH_INF > stat$BOX_INF, na.rm = TRUE) & box.notch == TRUE){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") SOME NOTCHES ARE BEYOND BOX HINGES. TRY ARGUMENT box.notch = FALSE")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-dot.jitter <- c((box.coord$xmax - width.correct) - (box.coord$xmin + width.correct))[1] * dot.jitter # real dot.jitter. (box.coord$xmin + width.correct) - (box.coord$xmax - width.correct))[1] is the width of the box. Is equivalent to (box.coord$x - (box.coord$xmin + width.correct))[1] * 2
-# end width commputations
-if( ! is.null(dot.color)){
-# random dots
-if(dot.tidy == FALSE){
-dot.coord.rd1 <- merge(dot.coord, box.coord[c("fill", "PANEL", "group", "x")], by = c("PANEL", "group"), sort = FALSE) # rd for random. Send the coord of the boxes into the coord data.frame of the dots (in the column x.y). WARNING: by = c("PANEL", "group") without fill column because PANEL & group columns are enough as only one value of x column per group number in box.coord. Thus, no need to consider fill column
-if(nrow(dot.coord.rd1) != nrow(dot.coord)){
-tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nTHE merge() FUNCTION DID NOT RETURN A CORRECT dot.coord.rd1 DATA FRAME. CODE HAS TO BE MODIFIED")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-sampled.dot.jitter <- if(nrow(dot.coord.rd1)== 1L){runif(n = nrow(dot.coord.rd1), min = - dot.jitter / 2, max = dot.jitter / 2)}else{sample(x = runif(n = nrow(dot.coord.rd1), min = - dot.jitter / 2, max = dot.jitter / 2), size = nrow(dot.coord.rd1), replace = FALSE)}
-dot.coord.rd2 <- data.frame(dot.coord.rd1, dot.x = dot.coord.rd1$x.y + sampled.dot.jitter, stringsAsFactors = TRUE) # set the dot.jitter thanks to runif and dot.jitter range. Then, send the coord of the boxes into the coord data.frame of the dots (in the column x.y)
-if(length(categ)== 1L){
-tempo.data1 <- unique(data.frame(data1[categ[1]], group = as.integer(data1[, categ[1]]), stringsAsFactors = TRUE)) # categ[1] is factor
-names(tempo.data1)[names(tempo.data1) == categ[1]] <- paste0(categ[1], ".check")
-verif <- paste0(categ[1], ".check")
-}else if(length(categ) == 2L){
-tempo.data1 <- unique(
-data.frame(
-data1[c(categ[1], categ[2])], 
-group = as.integer(factor(paste0(
-formatC(as.integer(data1[, categ[2]]), width = nchar(max(as.integer(data1[, categ[2]]), na.rm = TRUE)), flag = "0"), # convert factor into numeric with leading zero for proper ranking
-".", 
-formatC(as.integer(data1[, categ[1]]), width = nchar(max(as.integer(data1[, categ[1]]), na.rm = TRUE)), flag = "0")# convert factor into numeric with leading zero for proper ranking
-)), stringsAsFactors = TRUE) # merge the 2 formatC() to create a new factor. The convertion to integer should recreate the correct group number
-)
-) # categ[2] first if categ[2] is used to make the categories in ggplot and categ[1] is used to make the x-axis
-names(tempo.data1)[names(tempo.data1) == categ[1]] <- paste0(categ[1], ".check")
-names(tempo.data1)[names(tempo.data1) == categ[2]] <- paste0(categ[2], ".check")
-verif <- c(paste0(categ[1], ".check"), paste0(categ[2], ".check"))
-}else{
-tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nCODE INCONSISTENCY 3")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-dot.coord.rd3 <- merge(dot.coord.rd2, tempo.data1, by = intersect("group", "group"), sort = FALSE) # send the factors of data1 into coord. WARNING: I have replaced by = "group" by intersect("group", "group") because of an error due to wrong group group merging in dot.coord.rd3
-if(nrow(dot.coord.rd3) != nrow(dot.coord) | ( ! fun_comp_2d(dot.coord.rd3[categ], dot.coord.rd3[verif])$identical.content)){
-tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nTHE merge() FUNCTION DID NOT RETURN A CORRECT dot.coord.rd3 DATA FRAME. CODE HAS TO BE MODIFIED")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-# end random dots
-}
-# tidy dots
-# coordinates are recovered during plotting (see dot.coord.tidy1 below)
-# end tidy dots
-}
-# end x coordinates management (for random plotting and for stat display)
-
-
-
-
-
-# boxplot display before dot display if box.fill = TRUE
-coord.names <- NULL
-# creation of the data frame for (main box + legend) and data frame for means
-if(box.notch == FALSE){
-for(i3 in 1:length(categ)){
-if(i3== 1L){
-tempo.polygon <- data.frame(GROUPX = c(t(stat[, rep(categ[i3], 5)])), stringsAsFactors = TRUE)
-}else{
-tempo.polygon <- cbind(tempo.polygon, c(t(stat[, rep(categ[i3], 5)])), stringsAsFactors = TRUE)
-}
-}
-names(tempo.polygon) <- categ
-tempo.polygon <- data.frame(X = c(t(stat[, c("X_BOX_INF", "X_BOX_SUP", "X_BOX_SUP", "X_BOX_INF", "X_BOX_INF")])), Y = c(t(stat[, c("BOX_INF", "BOX_INF", "BOX_SUP", "BOX_SUP", "BOX_INF")])), COLOR = c(t(stat[, c("COLOR", "COLOR", "COLOR", "COLOR", "COLOR")])), BOX = as.character(c(t(stat[, c("BOX", "BOX", "BOX", "BOX", "BOX")]))), tempo.polygon, stringsAsFactors = TRUE)
-if( ! is.null(facet.categ)){
-for(i4 in 1:length(facet.categ)){
-tempo.polygon <- data.frame(tempo.polygon, c(t(stat[, c(facet.categ[i4], facet.categ[i4], facet.categ[i4], facet.categ[i4], facet.categ[i4])])), stringsAsFactors = TRUE)
-names(tempo.polygon)[length(names(tempo.polygon))] <- facet.categ[i4]
-}
-}
-}else{
-for(i3 in 1:length(categ)){
-if(i3== 1L){
-tempo.polygon <- data.frame(GROUPX = c(t(stat[, rep(categ[i3], 11)])), stringsAsFactors = TRUE)
-}else{
-tempo.polygon <- cbind(tempo.polygon, c(t(stat[, rep(categ[i3], 11)])), stringsAsFactors = TRUE)
-}
-}
-names(tempo.polygon) <- categ
-tempo.polygon <- data.frame(X = c(t(stat[, c("X_BOX_INF", "X_BOX_SUP", "X_BOX_SUP", "X_NOTCH_SUP", "X_BOX_SUP", "X_BOX_SUP", "X_BOX_INF", "X_BOX_INF", "X_NOTCH_INF", "X_BOX_INF", "X_BOX_INF")])), Y = c(t(stat[, c("BOX_INF", "BOX_INF", "NOTCH_INF", "MEDIAN", "NOTCH_SUP", "BOX_SUP", "BOX_SUP", "NOTCH_SUP", "MEDIAN", "NOTCH_INF", "BOX_INF")])), COLOR = c(t(stat[, c("COLOR", "COLOR", "COLOR", "COLOR", "COLOR", "COLOR", "COLOR", "COLOR", "COLOR", "COLOR", "COLOR")])), BOX = as.character(c(t(stat[, c("BOX", "BOX", "BOX", "BOX", "BOX", "BOX", "BOX", "BOX", "BOX", "BOX", "BOX")]))), tempo.polygon, stringsAsFactors = TRUE)
-if( ! is.null(facet.categ)){
-for(i4 in 1:length(facet.categ)){
-tempo.polygon <- data.frame(tempo.polygon, c(t(stat[, c(facet.categ[i4], facet.categ[i4], facet.categ[i4], facet.categ[i4], facet.categ[i4], facet.categ[i4], facet.categ[i4], facet.categ[i4], facet.categ[i4], facet.categ[i4], facet.categ[i4])])), stringsAsFactors = TRUE)
-names(tempo.polygon)[length(names(tempo.polygon))] <- facet.categ[i4]
-}
-}
-}
-tempo.polygon$COLOR <- factor(tempo.polygon$COLOR, levels = unique(categ.color))
-if( ! is.null(categ.class.order)){
-for(i3 in 1:length(categ)){
-tempo.polygon[, categ[i3]] <- factor(tempo.polygon[, categ[i3]], levels = categ.class.order[[i3]])
-}
-}
-# modified name of dot.categ column (e.g., "Categ1_DOT") must be included for boxplot using ridy dots
-if( ! is.null(dot.color) & ! is.null(dot.categ)){
-if(dot.categ != ini.dot.categ){
-tempo.polygon <- data.frame(tempo.polygon, GROUPX = tempo.polygon[, ini.dot.categ], stringsAsFactors = TRUE)
-names(tempo.polygon)[names(tempo.polygon) == "GROUPX"] <- dot.categ
-
-}
-}
-tempo.diamon.mean <- data.frame(X = c(t(stat[, c("X", "X_NOTCH_INF", "X", "X_NOTCH_SUP", "X")])), Y = c(t(cbind(stat["MEAN"] - (stat[, "X"] - stat[, "X_NOTCH_INF"]) * tempo.yx.ratio, stat["MEAN"], stat["MEAN"] + (stat[, "X"] - stat[, "X_NOTCH_INF"]) * tempo.yx.ratio, stat["MEAN"], stat["MEAN"] - (stat[, "X"] - stat[, "X_NOTCH_INF"]) * tempo.yx.ratio, stringsAsFactors = TRUE))), COLOR = c(t(stat[, c("COLOR", "COLOR", "COLOR", "COLOR", "COLOR")])), GROUP = c(t(stat[, c("BOX", "BOX", "BOX", "BOX", "BOX")])), stringsAsFactors = TRUE) # stringsAsFactors = TRUE for cbind() because stat["MEAN"] is a data frame. Otherwise, stringsAsFactors is not an argument for cbind() on vectors
-if( ! is.null(facet.categ)){
-for(i3 in 1:length(facet.categ)){
-tempo.diamon.mean <- data.frame(tempo.diamon.mean, c(t(stat[, c(facet.categ[i3], facet.categ[i3], facet.categ[i3], facet.categ[i3], facet.categ[i3])])), stringsAsFactors = TRUE)
-names(tempo.diamon.mean)[length(names(tempo.diamon.mean))] <- facet.categ[i3]
-}
-}
-tempo.diamon.mean$COLOR <- factor(tempo.diamon.mean$COLOR, levels = unique(categ.color))
-# end creation of the data frame for (main box + legend) and data frame for means
-if(box.fill == TRUE){
-# assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_boxplot(data = data1, mapping = ggplot2::aes_string(x = categ[1], y = y, color = categ[length(categ)], fill = categ[length(categ)]), position = ggplot2::position_dodge(width = NULL), width = box.width, size = box.line.size, notch = box.notch, coef = if(box.whisker.kind == "no"){0}else if(box.whisker.kind == "std"){1.5}else if(box.whisker.kind == "max"){Inf}, alpha = box.alpha, outlier.shape = if( ! is.null(dot.color)){NA}else{21}, outlier.color = if( ! is.null(dot.color)){NA}else{dot.border.color}, outlier.fill = if( ! is.null(dot.color)){NA}else{NULL}, outlier.size = if( ! is.null(dot.color)){NA}else{dot.size}, outlier.stroke = if( ! is.null(dot.color)){NA}else{dot.border.size}, outlier.alpha = if( ! is.null(dot.color)){NA}else{dot.alpha})) # the color, size, etc. of the outliers are dealt here. outlier.color = NA to do not plot outliers when dots are already plotted. Finally, boxplot redrawn (see below)
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_polygon(
-data = tempo.polygon, 
-mapping = ggplot2::aes_string(x = "X", y = "Y", group = "BOX", fill = categ[length(categ)], color = categ[length(categ)]), 
-size = box.line.size, 
-alpha = box.alpha # works only for fill, not for color
-))
-coord.names <- c(coord.names, "main.box")
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_segment(data = stat, mapping = ggplot2::aes(x = X, xend = X, y = BOX_SUP, yend = WHISK_SUP, group = categ[length(categ)]), color = "black", size = box.line.size, alpha = box.alpha)) # 
-coord.names <- c(coord.names, "sup.whisker")
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_segment(data = stat, mapping = ggplot2::aes(x = X, xend = X, y = BOX_INF, yend = WHISK_INF, group = categ[length(categ)]), color = "black", size = box.line.size, alpha = box.alpha)) # 
-coord.names <- c(coord.names, "inf.whisker")
-if(box.whisker.width > 0){
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_segment(data = stat, mapping = ggplot2::aes(x = X_WHISK_INF, xend = X_WHISK_SUP, y = WHISK_SUP, yend = WHISK_SUP, group = categ[length(categ)]), color = "black", size = box.line.size, alpha = box.alpha, lineend = "round")) # 
-coord.names <- c(coord.names, "sup.whisker.edge")
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_segment(data = stat, mapping = ggplot2::aes(x = X_WHISK_INF, xend = X_WHISK_SUP, y = WHISK_INF, yend = WHISK_INF, group = categ[length(categ)]), color = "black", size = box.line.size, alpha = box.alpha, lineend = "round")) # 
-coord.names <- c(coord.names, "inf.whisker.edge")
-}
-if(box.mean == TRUE){
-# assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_point(data = stat, mapping = ggplot2::aes_string(x = "X", y = "MEAN", group = categ[length(categ)]), shape = 23, stroke = box.line.size * 2, fill = stat$COLOR, size = box.mean.size, color = "black", alpha = box.alpha)) # group used in aesthetic to do not have it in the legend
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_polygon(
-data = tempo.diamon.mean, 
-mapping = ggplot2::aes(x = X, y = Y, group = GROUP), 
-fill = tempo.diamon.mean[, "COLOR"], 
-color = hsv(0, 0, 0, alpha = box.alpha), # outline of the polygon in black but with alpha
-size = box.line.size, 
-alpha = box.alpha
-))
-coord.names <- c(coord.names, "mean")
-}
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_segment(data = stat, mapping = ggplot2::aes(x = if(box.notch == FALSE){X_BOX_INF}else{X_NOTCH_INF}, xend = if(box.notch == FALSE){X_BOX_SUP}else{X_NOTCH_SUP}, y = MEDIAN, yend = MEDIAN, group = categ[length(categ)]), color = "black", size = box.line.size * 2, alpha = box.alpha)) # 
-coord.names <- c(coord.names, "median")
-}
-# end boxplot display before dot display if box.fill = TRUE
-
-
-
-
-
-
-# dot display
-if( ! is.null(dot.color)){
-if(dot.tidy == FALSE){
-if(is.null(dot.categ)){
-if(dot.border.size == 0){
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_point(
-data = dot.coord.rd3, 
-mapping = ggplot2::aes_string(x = "dot.x", y = "y", group = categ[length(categ)]), 
-size = dot.size, 
-shape = 19, 
-color = dot.coord.rd3$dot.color, 
-alpha = dot.alpha
-)) # group used in aesthetic to do not have it in the legend. Here ggplot2::scale_discrete_manual() cannot be used because of the group easthetic
-}else{
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_point(
-data = dot.coord.rd3, 
-mapping = ggplot2::aes_string(x = "dot.x", y = "y", group = categ[length(categ)]), 
-shape = 21, 
-stroke = dot.border.size, 
-color = if(is.null(dot.border.color)){dot.coord.rd3$dot.color}else{rep(dot.border.color, nrow(dot.coord.rd3))}, 
-size = dot.size, 
-fill = dot.coord.rd3$dot.color, 
-alpha = dot.alpha
-)) # group used in aesthetic to do not have it in the legend. Here ggplot2::scale_discrete_manual() cannot be used because of the group easthetic
-}
-}else{
-if(dot.border.size == 0){
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_point(
-data = dot.coord.rd3, 
-mapping = ggplot2::aes_string(x = "dot.x", y = "y", alpha = dot.categ), 
-size = dot.size, 
-shape = 19, 
-color = dot.coord.rd3$dot.color
-)) # group used in aesthetic to do not have it in the legend. Here ggplot2::scale_discrete_manual() cannot be used because of the group easthetic
-}else{
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_point(
-data = dot.coord.rd3, 
-mapping = ggplot2::aes_string(x = "dot.x", y = "y", alpha = dot.categ), 
-size = dot.size, 
-shape = 21, 
-stroke = dot.border.size, 
-color = if(is.null(dot.border.color)){dot.coord.rd3$dot.color}else{rep(dot.border.color, nrow(dot.coord.rd3))}, 
-fill = dot.coord.rd3$dot.color
-)) # group used in aesthetic to do not have it in the legend. Here ggplot2::scale_discrete_manual() cannot be used because of the group easthetic
-}
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "alpha", name = dot.legend.name, values = rep(dot.alpha, length(dot.categ.class.order)), guide = ggplot2::guide_legend(override.aes = list(fill = dot.color, color = if(is.null(dot.border.color)){dot.color}else{dot.border.color}, stroke = dot.border.size, alpha = dot.alpha)))) # values are the values of color (which is the border color in geom_box. WARNING: values = categ.color takes the numbers to make the colors if categ.color is a factor
-}
-coord.names <- c(coord.names, "dots")
-}else if(dot.tidy == TRUE){
-# here plot using group -> no scale
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_dotplot(
-data = dot.coord, 
-mapping = ggplot2::aes_string(x = categ[1], y = "y", group = "group"), # not dot.categ here because the classes of dot.categ create new separations
-position = ggplot2::position_dodge(width = box.width), 
-binpositions = "all", 
-binaxis = "y", 
-stackdir = "center", 
-alpha = dot.alpha, 
-fill = dot.coord$dot.color, 
-stroke = dot.border.size, 
-color = if(is.null(dot.border.color)){dot.coord$dot.color}else{rep(dot.border.color, nrow(dot.coord))}, 
-show.legend = FALSE, # WARNING: do not use show.legend = TRUE because it uses the arguments outside aes() as aesthetics (here color and fill). Thus I must find a way using ggplot2::scale_discrete_manual()
-binwidth = (y.lim[2] - y.lim[1]) / dot.tidy.bin.nb
-)) # geom_dotplot ggplot2 v3.3.0: I had to remove rev() in fill and color # very weird behavior of geom_dotplot ggplot2 v3.2.1, (1) because with aes group = (to avoid legend), the dot plotting is not good in term of coordinates, and (2) because data1 seems reorderer according to x = categ[1] before plotting. Thus, I have to use fill = dot.coord[rev(order(dot.coord[, categ[1]], decreasing = TRUE)), "dot.color"] to have the good corresponding colors # show.legend option do not remove the legend, only the aesthetic of the legend (dot, line, etc.)
-coord.names <- c(coord.names, "dots")
-if( ! is.null(dot.categ)){
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_dotplot(
-data = dot.coord, 
-mapping = ggplot2::aes_string(x = categ[1], y = "y", alpha = dot.categ), # not dot.categ here because the classes of dot.categ create new separations
-position = ggplot2::position_dodge(width = box.width), 
-binpositions = "all", 
-binaxis = "y", 
-stackdir = "center", 
-fill = NA, 
-stroke = NA, 
-color = NA, 
-# WARNING: do not use show.legend = TRUE because it uses the arguments outside aes() as aesthetics (here color and fill). Thus I must find a way using ggplot2::scale_discrete_manual()
-binwidth = (y.lim[2] - y.lim[1]) / dot.tidy.bin.nb
-)) # geom_dotplot ggplot2 v3.3.0: I had to remove rev() in fill and color # very weird behavior of geom_dotplot ggplot2 v3.2.1, (1) because with aes group = (to avoid legend), the dot plotting is not good in term of coordinates, and (2) because data1 seems reorderer according to x = categ[1] before plotting. Thus, I have to use fill = dot.coord[rev(order(dot.coord[, categ[1]], decreasing = TRUE)), "dot.color"] to have the good corresponding colors # show.legend option do not remove the legend, only the aesthetic of the legend (dot, line, etc.)
-# assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "linetype", name = dot.legend.name, values = rep(1, length(categ.color)))) # values = rep("black", length(categ.color)) are the values of color (which is the border color of dots), and this modify the border color on the plot. WARNING: values = categ.color takes the numbers to make the colors if categ.color is a factor
-coord.names <- c(coord.names, "bad_remove")
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "alpha", name = dot.legend.name, values = rep(dot.alpha, length(dot.categ.class.order)), labels = dot.categ.class.order, guide = ggplot2::guide_legend(title = if(ini.dot.categ == categ[length(categ)]){dot.categ}else{ini.dot.categ}, override.aes = list(fill = levels(dot.coord$dot.color), color = if(is.null(dot.border.color)){levels(dot.coord$dot.color)}else{dot.border.color}, stroke = dot.border.size, alpha = dot.alpha)))) # values are the values of color (which is the border color in geom_box. WARNING: values = categ.color takes the numbers to make the colors if categ.color is a factor
-}
-# coordinates of tidy dots
-tempo.coord <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))$data # to have the tidy dot coordinates
-if(length(which(sapply(X = tempo.coord, FUN = function(X){any(names(X) == "binwidth", na.rm = TRUE)}))) != 1){ # detect the compartment of tempo.coord which is the binned data frame
-# if(length(which(sapply(tempo.coord, FUN = nrow) == nrow(data1))) > if(is.null(dot.categ)){1}else{2}){ # this does not work if only one dot per class, thus replaced by above # if(is.null(dot.categ)){1}else{2} because 1 dotplot if dot.categ is NULL and 2 dotplots if not, with the second being a blank dotplot with wrong coordinates. Thus take the first in that situation
-tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nEITHER MORE THAN 1 OR NO COMPARTMENT HAVING A DATA FRAME WITH binwidth AS COLUMN NAME IN THE tempo.coord LIST (FOR TIDY DOT COORDINATES). CODE HAS TO BE MODIFIED")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else{
-# dot.coord.tidy1 <- tempo.coord[[which(sapply(tempo.coord, FUN = nrow) == nrow(data1))[1]]] # this does not work if only one dot per class, thus replaced by above # the second being a blank dotplot with wrong coordinates. Thus take the first whatever situation
-dot.coord.tidy1 <- tempo.coord[[which(sapply(X = tempo.coord, FUN = function(X){any(names(X) == "binwidth", na.rm = TRUE)}))]] # detect the compartment of tempo.coord which is the binned data frame
-dot.coord.tidy1$x <- as.numeric(dot.coord.tidy1$x) # because weird class
-dot.coord.tidy1$PANEL <- as.numeric(dot.coord.tidy1$PANEL) # because numbers as levels. But may be a problem is facet are reordered ?
-}
-# tempo.box.coord <- merge(box.coord, unique(dot.coord[, c("PANEL", "group", categ)]), by = c("PANEL", "group"), sort = FALSE) # not required anymore because box.coord already contains categ do not add dot.categ and tidy_group_coord here because the coordinates are for stats. Add the categ in box.coord. WARNING: by = c("PANEL", "group") without fill column because PANEL & group columns are enough as only one value of x column per group number in box.coord. Thus, no need to consider fill column
-# below inactivated because not true when dealing with dot.categ different from categ
-# if(nrow(tempo.box.coord) != nrow(box.coord)){
-# tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nTHE merge() FUNCTION DID NOT RETURN A CORRECT tempo.box.coord DATA FRAME. CODE HAS TO BE MODIFIED")
-# stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n"), call. = FALSE) # == in stop() to be able to add several messages between ==
-# }
-dot.coord.tidy2 <- merge(dot.coord.tidy1, box.coord[c("fill", "PANEL", "group", "x", categ)], by = c("PANEL", "group"), sort = FALSE) # send the coord of the boxes into the coord data.frame of the dots (in the column x.y).WARNING: by = c("PANEL", "group") without fill column because PANEL & group columns are enough as only one value of x column per group number in tempo.box.coord. Thus, no need to consider fill colum # DANGER: from here the fill.y and x.y (from tempo.box.coord) are not good in dot.coord.tidy2. It is ok because Categ1 Categ2 from tempo.box.coord are ok with the group column from dot.coord.tidy1. This is due to the fact that dot.coord.tidy resulting from geom_dotplot does not make the same groups as the other functions
-if(nrow(dot.coord.tidy2) != nrow(dot.coord)){
-tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nTHE merge() FUNCTION DID NOT RETURN A CORRECT dot.coord.tidy2 DATA FRAME. CODE HAS TO BE MODIFIED")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-# From here, check for dot.coord.tidy3 which wil be important for stat over the plot. WARNING: dot.categ has nothing to do here for stat coordinates. Thus, not in tempo.data1
-if(length(categ)== 1L){
-tempo.data1 <- unique(data.frame(data1[categ[1]], group = as.integer(data1[, categ[1]]), stringsAsFactors = TRUE)) # categ[1] is factor
-names(tempo.data1)[names(tempo.data1) == categ[1]] <- paste0(categ[1], ".check")
-verif <- paste0(categ[1], ".check")
-}else if(length(categ) == 2L){
-tempo.data1 <- unique(
-data.frame(
-data1[c(categ[1], categ[2])], 
-group = as.integer(factor(paste0(
-formatC(as.integer(data1[, categ[2]]), width = nchar(max(as.integer(data1[, categ[2]]), na.rm = TRUE)), flag = "0"), # convert factor into numeric with leading zero for proper ranking
-".", 
-formatC(as.integer(data1[, categ[1]]), width = nchar(max(as.integer(data1[, categ[1]]), na.rm = TRUE)), flag = "0")# convert factor into numeric with leading zero for proper ranking
-)), stringsAsFactors = TRUE) # merge the 2 formatC() to create a new factor. The convertion to integer should recreate the correct group number
-)
-) # categ[2] first if categ[2] is used to make the categories in ggplot and categ[1] is used to make the x-axis
-names(tempo.data1)[names(tempo.data1) == categ[1]] <- paste0(categ[1], ".check")
-names(tempo.data1)[names(tempo.data1) == categ[2]] <- paste0(categ[2], ".check")
-verif <- c(paste0(categ[1], ".check"), paste0(categ[2], ".check"))
-}else{
-tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nCODE INCONSISTENCY 4")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-dot.coord.tidy3 <- merge(dot.coord.tidy2, tempo.data1, by = intersect("group", "group"), sort = FALSE) # send the factors of data1 into coord. WARNING: I have tested intersect("group", "group") instead of by = "group". May be come back to by = "group" in case of error. But I did this because of an error in dot.coord.rd3 above
-if(nrow(dot.coord.tidy3) != nrow(dot.coord) | ( ! fun_comp_2d(dot.coord.tidy3[categ], dot.coord.tidy3[verif])$identical.content)){
-tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nTHE merge() FUNCTION DID NOT RETURN A CORRECT dot.coord.tidy3 DATA FRAME. CODE HAS TO BE MODIFIED")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-# end coordinates of tidy dots
-}
-}
-# end dot display
-
-
-
-# boxplot display (if box.fill = FALSE, otherwise, already plotted above)
-if(box.fill == TRUE){
-# overcome "work only for the filling of boxes, not for the frame. See https://github.com/tidyverse/ggplot2/issues/252"
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "fill", name = box.legend.name, values = if(length(categ.color)== 1L){rep(categ.color, length(unique(data1[, categ[length(categ)]])))}else{categ.color}, guide = ggplot2::guide_legend(order = 1))) #, guide = ggplot2::guide_legend(override.aes = list(fill = levels(tempo.polygon$COLOR), color = "black")))) # values are the values of color (which is the border color in geom_box. WARNING: values = categ.color takes the numbers to make the colors if categ.color is a factor
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "color", name = box.legend.name, values = rep(hsv(0, 0, 0, alpha = box.alpha), length(unique(data1[, categ[length(categ)]]))), guide = ggplot2::guide_legend(order = 1))) # , guide = ggplot2::guide_legend(override.aes = list(color = "black", alpha = box.alpha)))) # values are the values of color (which is the border color in geom_box. WARNING: values = categ.color takes the numbers to make the colors if categ.color is a factor # outline of the polygon in black but with alpha
-}else{
-# assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_boxplot(data = data1, mapping = ggplot2::aes_string(x = categ[1], y = y, color = categ[length(categ)], fill = categ[length(categ)]), position = ggplot2::position_dodge(width = NULL), width = box.width, size = box.line.size, notch = box.notch, alpha = box.alpha, coef = if(box.whisker.kind == "no"){0}else if(box.whisker.kind == "std"){1.5}else if(box.whisker.kind == "max"){Inf}, outlier.shape = if( ! is.null(dot.color)){NA}else{21}, outlier.color = if( ! is.null(dot.color)){NA}else{if(dot.border.size == 0){NA}else{dot.border.color}}, outlier.fill = if( ! is.null(dot.color)){NA}else{NULL}, outlier.size = if( ! is.null(dot.color)){NA}else{dot.size}, outlier.stroke = if( ! is.null(dot.color)){NA}else{dot.border.size}, outlier.alpha = if( ! is.null(dot.color)){NA}else{dot.alpha})) # the color, size, etc. of the outliers are dealt here. outlier.color = NA to do not plot outliers when dots are already plotted
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_path(
-data = tempo.polygon, 
-mapping = ggplot2::aes_string(x = "X", y = "Y", group = "BOX", color = categ[length(categ)]), 
-size = box.line.size, 
-alpha = box.alpha, 
-lineend = "round", 
-linejoin = "round"
-))
-coord.names <- c(coord.names, "main.box")
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_segment(data = stat, mapping = ggplot2::aes(x = if(box.notch == FALSE){X_BOX_INF}else{X_NOTCH_INF}, xend = if(box.notch == FALSE){X_BOX_SUP}else{X_NOTCH_SUP}, y = MEDIAN, yend = MEDIAN, group = categ[length(categ)]), color = stat$COLOR, size = box.line.size * 2, alpha = box.alpha)) # 
-coord.names <- c(coord.names, "median")
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_segment(data = stat, mapping = ggplot2::aes(x = X, xend = X, y = BOX_SUP, yend = WHISK_SUP, group = categ[length(categ)]), color = stat$COLOR, size = box.line.size, alpha = box.alpha)) # 
-coord.names <- c(coord.names, "sup.whisker")
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_segment(data = stat, mapping = ggplot2::aes(x = X, xend = X, y = BOX_INF, yend = WHISK_INF, group = categ[length(categ)]), color = stat$COLOR, size = box.line.size, alpha = box.alpha)) # 
-coord.names <- c(coord.names, "inf.whisker")
-if(box.whisker.width > 0){
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_segment(data = stat, mapping = ggplot2::aes(x = X_WHISK_INF, xend = X_WHISK_SUP, y = WHISK_SUP, yend = WHISK_SUP, group = categ[length(categ)]), color = stat$COLOR, size = box.line.size, alpha = box.alpha, lineend = "round")) # 
-coord.names <- c(coord.names, "sup.whisker.edge")
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_segment(data = stat, mapping = ggplot2::aes(x = X_WHISK_INF, xend = X_WHISK_SUP, y = WHISK_INF, yend = WHISK_INF, group = categ[length(categ)]), color = stat$COLOR, size = box.line.size, alpha = box.alpha, lineend = "round")) # 
-coord.names <- c(coord.names, "inf.whisker.edge")
-}
-if(box.mean == TRUE){
-# assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_point(data = stat, mapping = ggplot2::aes_string(x = "X", y = "MEAN", group = categ[length(categ)]), shape = 23, stroke = box.line.size * 2, color = stat$COLOR, size = box.mean.size, fill = NA, alpha = box.alpha)) # group used in aesthetic to do not have it in the legend. Here ggplot2::scale_discrete_manual() cannot be used because of the group easthetic
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_path(
-data = tempo.diamon.mean, 
-mapping = ggplot2::aes(x = X, y = Y, group = GROUP), 
-color = tempo.diamon.mean[, "COLOR"], 
-size = box.line.size, 
-alpha = box.alpha, 
-lineend = "round", 
-linejoin = "round"
-))
-coord.names <- c(coord.names, "mean")
-}
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "fill", name = box.legend.name, values = rep(NA, length(unique(data1[, categ[length(categ)]]))))) #, guide = ggplot2::guide_legend(override.aes = list(color = categ.color)))) # values are the values of color (which is the border color in geom_box. WARNING: values = categ.color takes the numbers to make the colors if categ.color is a factor
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "color", name = box.legend.name, values = if(length(categ.color)== 1L){rep(categ.color, length(unique(data1[, categ[length(categ)]])))}else{categ.color}, guide = ggplot2::guide_legend(override.aes = list(alpha = if(plot == TRUE & ((length(dev.list()) > 0 & names(dev.cur()) == "windows") | (length(dev.list()) == 0L & Sys.info()["sysname"] == "Windows"))){1}else{box.alpha})))) # , guide = ggplot2::guide_legend(override.aes = list(color = as.character(categ.color))))) # values are the values of color (which is the border color in geom_box. WARNING: values = categ.color takes the numbers to make the colors if categ.color is a factor
-if(plot == TRUE & ((length(dev.list()) > 0 & names(dev.cur()) == "windows") | (length(dev.list()) == 0L & Sys.info()["sysname"] == "Windows"))){ # if any Graph device already open and this device is "windows", or if no Graph device opened yet and we are on windows system -> prevention of alpha legend bug on windows using value 1
-# to avoid a bug on windows: if alpha argument is different from 1 for lines (transparency), then lines are not correctly displayed in the legend when using the R GUI (bug https://github.com/tidyverse/ggplot2/issues/2452). No bug when using a pdf
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") GRAPHIC DEVICE USED ON A WINDOWS SYSTEM ->\nTRANSPARENCY OF THE LINES IS INACTIVATED IN THE LEGEND TO PREVENT A WINDOWS DEPENDENT BUG (SEE https://github.com/tidyverse/ggplot2/issues/2452)\nTO OVERCOME THIS ON WINDOWS, USE ANOTHER DEVICE (pdf() FOR INSTANCE)")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-if(box.alpha == 0){ # remove box legend because no boxes drawn
-# add this after the scale_xxx_manual() for boxplots
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::guides(fill = FALSE, color = FALSE)) # inactivate the legend
-}
-# end boxplot display (if box.fill = FALSE, otherwise, already plotted above)
-
-
-
-
-# stat display
-# layer after dots but ok, behind dots on the plot
-if( ! is.null(stat.pos)){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") NUMBERS DISPLAYED ARE ", ifelse(stat.mean == FALSE, "MEDIANS", "MEANS"))
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-if(stat.pos == "top"){
-tempo.stat <- data.frame(stat, Y = y.lim[2], stringsAsFactors = TRUE) # I had to create a data frame for geom_tex() so that facet is taken into account, (ggplot2::annotate() does not deal with facet because no data and mapping arguments). Of note, facet.categ is in tempo.stat, via tempo.mean, via dot.coord
-if(stat.mean == FALSE){tempo.stat$MEDIAN <- formatC(stat.nolog$MEDIAN, digit = 2, drop0trailing = TRUE, format = "f")}else{tempo.stat$MEAN <- formatC(stat.nolog$MEAN, digit = 2, drop0trailing = TRUE, format = "f")}
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_text(
-data = tempo.stat, 
-mapping = ggplot2::aes_string(x = "X", y = "Y", label = ifelse(stat.mean == FALSE, "MEDIAN", "MEAN")),
-size = stat.size, 
-color = "black", 
-angle = stat.angle, 
-hjust = stat.just$hjust, 
-vjust = stat.just$vjust
-)) # stat$X used here because identical to stat.nolog but has the X. WARNING: no need of order() for labels because box.coord$x set the order. For justification, see https://stackoverflow.com/questions/7263849/what-do-hjust-and-vjust-do-when-making-a-plot-using-ggplot
-coord.names <- c(coord.names, "stat.pos")
-}else if(stat.pos == "above"){
-# stat coordinates
-if( ! is.null(dot.color)){ # for text just above max dot
-if(dot.tidy == FALSE){
-tempo.stat.ini <- dot.coord.rd3
-}else if(dot.tidy == TRUE){
-tempo.stat.ini <- dot.coord.tidy3
-tempo.stat.ini$x.y <- tempo.stat.ini$x.x # this is just to be able to use tempo.stat.ini$x.y for untidy or tidy dots (remember that dot.coord.tidy3$x.y is not good, see above)
-}
-stat.coord1 <- aggregate(x = tempo.stat.ini["y"], by = {x.env <- if(length(categ)== 1L){list(tempo.stat.ini$group, tempo.stat.ini$PANEL, tempo.stat.ini$x.y, tempo.stat.ini[, categ[1]])}else if(length(categ) == 2L){list(tempo.stat.ini$group, tempo.stat.ini$PANEL, tempo.stat.ini$x.y, tempo.stat.ini[, categ[1]], tempo.stat.ini[, categ[2]])} ; names(x.env) <- if(length(categ)== 1L){c("group", "PANEL", "x.y", categ[1])}else if(length(categ) == 2L){c("group", "PANEL", "x.y", categ[1], categ[2])} ; x.env}, FUN = min, na.rm = TRUE)
-names(stat.coord1)[names(stat.coord1) == "y"] <- "dot.min"
-stat.coord2 <- aggregate(x = tempo.stat.ini["y"], by = {x.env <- if(length(categ)== 1L){list(tempo.stat.ini$group, tempo.stat.ini$PANEL, tempo.stat.ini$x.y, tempo.stat.ini[, categ[1]])}else if(length(categ) == 2L){list(tempo.stat.ini$group, tempo.stat.ini$PANEL, tempo.stat.ini$x.y, tempo.stat.ini[, categ[1]], tempo.stat.ini[, categ[2]])} ; names(x.env) <- if(length(categ)== 1L){c("group", "PANEL", "x.y", categ[1])}else if(length(categ) == 2L){c("group", "PANEL", "x.y", categ[1], categ[2])} ; x.env}, FUN = max, na.rm = TRUE)
-names(stat.coord2) <- paste0(names(stat.coord2), "_from.dot.max")
-names(stat.coord2)[names(stat.coord2) == "y_from.dot.max"] <- "dot.max"
-stat.coord3 <- cbind(box.coord[order(box.coord$group, box.coord$PANEL), ], stat.coord1[order(stat.coord1$group, stat.coord1$x.y), ], stat.coord2[order(stat.coord2$group, stat.coord2$x.y), ], stringsAsFactors = TRUE) # 
-if( ! all(identical(round(stat.coord3$x, 9), round(as.numeric(stat.coord3$x.y), 9)), na.rm = TRUE)){ # as.numeric() because stat.coord3$x is class "mapped_discrete" "numeric"
-tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nFUSION OF box.coord, stat.coord1 AND stat.coord2 ACCORDING TO box.coord$x, stat.coord1$x.y AND stat.coord2$x.y IS NOT CORRECT. CODE HAS TO BE MODIFIED")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-# text.coord <- stat.coord3[, c("x", "group", "dot.min", "dot.max")]
-# names(text.coord)[names(text.coord) == "dot.min"] <- "text.min.pos"
-#names(text.coord)[names(text.coord) == "dot.max"] <- "text.max.pos"
-box.coord <- box.coord[order(box.coord$x, box.coord$group, box.coord$PANEL), ]
-# text.coord <- text.coord[order(text.coord$x), ] # to be sure to have the two objects in the same order for x. WARNING: cannot add identical(as.integer(text.coord$group), as.integer(box.coord$group)) because with error, the correspondence between x and group is not the same
-stat.coord3 <- stat.coord3[order(stat.coord3$x, stat.coord3$group, stat.coord3$PANEL), ] # to be sure to have the two objects in the same order for x. WARNING: cannot add identical(as.integer(text.coord$group), as.integer(box.coord$group)) because with error, the correspondence between x and group is not the same
-if( ! (identical(box.coord$x, stat.coord3$x) & identical(box.coord$group, stat.coord3$group) & identical(box.coord$PANEL, stat.coord3$PANEL))){
-tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\ntext.coord AND box.coord DO NOT HAVE THE SAME x, group AND PANEL COLUMN CONTENT")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-}else{
-stat.coord3 <- box.coord
-}
-stat.coord3 <- data.frame(
-stat.coord3, 
-Y = stat.coord3[, ifelse(
-is.null(dot.color), 
-ifelse(diff(y.lim) > 0, "ymax", "ymin"), 
-ifelse(diff(y.lim) > 0, "ymax_final", "ymin_final")
-)], 
-stringsAsFactors = TRUE
-) # ymax is top whisker, ymax_final is top dot
-# stat.coord3 <- data.frame(stat.coord3, Y = vector("numeric", length = nrow(stat.coord3)), stringsAsFactors = TRUE)
-# check.Y <- as.logical(stat.coord3$Y) # convert everything in Y into FALSE (because Y is full of zero)
-# end stat coordinates
-# stat display
-# performed twice: first for y values >=0, then y values < 0, because only a single value allowed for hjust anf vjust
-if(stat.mean == FALSE){
-tempo.center.ref <- "middle"
-}else{
-tempo.center.ref <- "MEAN"
-}
-# if(is.null(dot.color)){
-# tempo.low.ref <- "ymin"
-# tempo.high.ref <- "ymax"
-# }else{
-# tempo.low.ref <- "ymin_final"
-# tempo.high.ref <- "ymax_final"
-# }
-# tempo.log.high <- if(diff(y.lim) > 0){stat.coord3[, tempo.center.ref] >= 0}else{stat.coord3[, tempo.center.ref] < 0}
-# tempo.log.low <- if(diff(y.lim) > 0){stat.coord3[, tempo.center.ref] < 0}else{stat.coord3[, tempo.center.ref] >= 0}
-# stat.coord3$Y[tempo.log.high] <- stat.coord3[tempo.log.high, tempo.high.ref]
-# stat.coord3$Y[tempo.log.low] <- stat.coord3[tempo.log.low, tempo.low.ref]
-# add distance
-stat.coord3$Y <- stat.coord3$Y + diff(y.lim) * stat.dist / 100
-# end add distance
-# correct median or mean text format
-if(y.log != "no"){
-stat.coord3[, tempo.center.ref] <- ifelse(y.log == "log2", 2, 10)^(stat.coord3[, tempo.center.ref])
-}
-stat.coord3[, tempo.center.ref] <- formatC(stat.coord3[, tempo.center.ref], digit = 2, drop0trailing = TRUE, format = "f")
-# end correct median or mean text format
-# if(any(tempo.log.high) == TRUE){
-# tempo.stat <- stat.coord3[tempo.log.high,]
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_text(
-data = stat.coord3, 
-mapping = ggplot2::aes_string(x = "x", y = "Y", label = tempo.center.ref),
-size = stat.size, 
-color = "black", 
-angle = stat.angle, 
-hjust = stat.just$hjust, 
-vjust = stat.just$vjust
-)) # WARNING: no need of order() for labels because box.coord$x set the order
-coord.names <- c(coord.names, "stat.pos")
-# }
-# if(any(tempo.log.low) == TRUE){
-# tempo.stat <- stat.coord3[tempo.log.low,]
-# assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_text(
-# data = tempo.stat, 
-# mapping = ggplot2::aes_string(x = "x", y = "Y", label = tempo.center.ref),
-# size = stat.size, 
-# color = "black", 
-# hjust = ifelse(vertical == TRUE, 0.5, 0.5 + stat.dist), 
-# vjust = ifelse(vertical == TRUE, 0.5 + stat.dist, 0.5)
-# )) # WARNING: no need of order() for labels because box.coord$x set the order
-# coord.names <- c(coord.names, "stat.pos.negative")
-# }
-# end stat display
-}else{
-tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nCODE INCONSISTENCY 5")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-}
-# end stat display
-# legend management
-if(legend.show == FALSE){ # must be here because must be before bef.final.plot <- 
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::guides(fill = FALSE, color = FALSE, alpha = FALSE)) # inactivate the initial legend
-}
-# end legend management
-
-
-
-# y scale management (cannot be before dot plot management)
-# the rescaling aspect is complicated and not intuitive. See:
-# explaination: https://github.com/tidyverse/ggplot2/issues/3948
-# the oob argument of scale_y_continuous() https://ggplot2.tidyverse.org/reference/scale_continuous.html
-# see also https://github.com/rstudio/cheatsheets/blob/master/data-visualization-2.1.pdf
-# secondary ticks
-bef.final.plot <- ggplot2::ggplot_build(eval(parse(text = paste(paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "), ' + if(vertical == TRUE){ggplot2::scale_y_continuous(expand = c(0, 0), limits = sort(y.lim), oob = scales::rescale_none)}else{ggplot2::coord_flip(ylim = y.lim)}')))) # here I do not need the x-axis and y-axis orientation, I just need the number of main ticks and the legend. I DI NOT UNDERSTAND THE COMMENT HERE BECAUSE WE NEED COORD_FLiP
-tempo.coord <- bef.final.plot$layout$panel_params[[1]]
-# y.second.tick.positions: coordinates of secondary ticks (only if y.second.tick.nb argument is non NULL or if y.log argument is different from "no")
-if(y.log != "no"){ # integer main ticks for log2 and log10
-tempo.scale <- (as.integer(min(y.lim, na.rm = TRUE)) - 1):(as.integer(max(y.lim, na.rm = TRUE)) + 1)
-}else{
-tempo <- if(is.null(attributes(tempo.coord$y$breaks))){tempo.coord$y$breaks}else{unlist(attributes(tempo.coord$y$breaks))}
-if(all(is.na(tempo))){# all() without na.rm -> ok because is.na() cannot be NA
-tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nONLY NA IN tempo.coord$y$breaks")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-tempo.scale <- fun_scale(lim = y.lim, n = ifelse(is.null(y.tick.nb), length(tempo[ ! is.na(tempo)]), y.tick.nb)) # in ggplot 3.3.0, tempo.coord$y.major_source replaced by tempo.coord$y$breaks. If fact: n = ifelse(is.null(y.tick.nb), length(tempo[ ! is.na(tempo)]), y.tick.nb)) replaced by n = ifelse(is.null(y.tick.nb), 4, y.tick.nb))
-}
-y.second.tick.values <- NULL
-y.second.tick.pos <- NULL
-if(y.log != "no"){
-tempo <- fun_inter_ticks(lim = y.lim, log = y.log)
-y.second.tick.values <- tempo$values
-y.second.tick.pos <- tempo$coordinates
-# if(vertical == TRUE){ # do not remove in case the bug is fixed
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", y = y.second.tick.pos, yend = y.second.tick.pos, x = tempo.coord$x.range[1], xend = tempo.coord$x.range[1] + diff(tempo.coord$x.range) / 80))
-# }else{ # not working because of the ggplot2 bug
-# assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", x = y.second.tick.pos, xend = y.second.tick.pos, y = tempo.coord$y.range[1], yend = tempo.coord$y.range[1] + diff(tempo.coord$y.range) / 80))
-# }
-coord.names <- c(coord.names, "y.second.tick.positions")
-}else if(( ! is.null(y.second.tick.nb)) & y.log == "no"){
-# if(y.second.tick.nb > 0){ #inactivated because already checked before
-if(length(tempo.scale) < 2){
-tempo.cat1 <- c("y.tick.nb", "y.second.tick.nb")
-tempo.cat2 <- sapply(list(y.tick.nb, y.second.tick.nb), FUN = paste0, collapse = " ")
-tempo.sep <- sapply(mapply(" ", max(nchar(tempo.cat1)) - nchar(tempo.cat1) + 3, FUN = rep, SIMPLIFY = FALSE), FUN = paste0, collapse = "")
-tempo.cat <- paste0("ERROR IN ", function.name, "\nTHE NUMBER OF GENERATED TICKS FOR THE Y-AXIS IS NOT CORRECT: ", length(tempo.scale), "\nUSING THESE ARGUMENT SETTINGS (NO DISPLAY MEANS NULL VALUE):\n", paste0(tempo.cat1, tempo.sep, tempo.cat2, collapse = "\n"), "\nPLEASE, TEST OTHER VALUES")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else{
-tempo <- fun_inter_ticks(lim = y.lim, log = y.log, breaks = tempo.scale, n = y.second.tick.nb)
-}
-y.second.tick.values <- tempo$values
-y.second.tick.pos <- tempo$coordinates
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(
-geom = "segment", 
-y = y.second.tick.pos, 
-yend = y.second.tick.pos, 
-x = if(vertical == TRUE){tempo.coord$x.range[1]}else{tempo.coord$y.range[1]}, 
-xend = if(vertical == TRUE){tempo.coord$x.range[1] + diff(tempo.coord$x.range) / 80}else{tempo.coord$y.range[1] + diff(tempo.coord$y.range) / 80}
-))
-coord.names <- c(coord.names, "y.second.tick.positions")
-}
-# end y.second.tick.positions
-# for the ggplot2 bug with y.log, this does not work: eval(parse(text = ifelse(vertical == FALSE & y.log == "log10", "ggplot2::scale_x_continuous", "ggplot2::scale_y_continuous")))
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_y_continuous(
-breaks = tempo.scale, 
-minor_breaks = y.second.tick.pos, 
-labels = if(y.log == "log10"){scales::trans_format("identity", scales::math_format(10^.x))}else if(y.log == "log2"){scales::trans_format("identity", scales::math_format(2^.x))}else if(y.log == "no"){ggplot2::waiver()}else{tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nCODE INCONSISTENCY 6") ; stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)}, # == in stop() to be able to add several messages between ==
-expand = c(0, 0), # remove space after after axis limits
-limits = sort(y.lim), # NA indicate that limits must correspond to data limits but ylim() already used
-oob = scales::rescale_none, 
-trans = ifelse(diff(y.lim) < 0, "reverse", "identity") # equivalent to ggplot2::scale_y_reverse() but create the problem of y-axis label disappearance with y.lim decreasing. Thus, do not use. Use ylim() below and after this
-))
-if(vertical == TRUE){
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::coord_cartesian(ylim = y.lim)) # problem of ggplot2::ylim() is that it redraws new breaks # coord_cartesian(ylim = y.lim)) not used because bug -> y-axis label disappearance with y.lim decreasing I DO NOT UNDERSTAND THIS MESSAGE WHILE I USE COORD_CARTESIAN # clip = "off" to have secondary ticks outside plot region does not work
-}else{
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::coord_flip(ylim = y.lim)) # clip = "off" to have secondary ticks outside plot region does not work # create the problem of y-axis label disappearance with y.lim decreasing. IDEM ABOVE
-
-}
-# end y scale management (cannot be before dot plot management)
-
-
-# legend management
-if( ! is.null(legend.width)){
-legend.final <- fun_gg_get_legend(ggplot_built = bef.final.plot, fun.name = function.name, lib.path = lib.path) # get legend
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::guides(fill = FALSE, color = FALSE, alpha = FALSE)) # inactivate the initial legend
-if(is.null(legend.final) & plot == TRUE){ # even if any(unlist(legend.disp)) is TRUE
-legend.final <- ggplot2::ggplot()+ggplot2::theme_void() # empty graph instead of legend
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") LEGEND REQUESTED (NON NULL categ ARGUMENT OR legend.show ARGUMENT SET TO TRUE)\nBUT IT SEEMS THAT THE PLOT HAS NO LEGEND -> EMPTY LEGEND SPACE CREATED BECAUSE OF THE NON NULL legend.width ARGUMENT\n")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-# end legend management
-
-
-# drawing
-fin.plot <- suppressMessages(suppressWarnings(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + ")))))
-grob.save <- NULL
-if(plot == TRUE){
-# following lines inactivated because of problem in warn.recov and message.recov
-# assign("env_fun_get_message", new.env())
-# assign("tempo.gg.name", tempo.gg.name, envir = env_fun_get_message)
-# assign("tempo.gg.count", tempo.gg.count, envir = env_fun_get_message)
-# assign("add", add, envir = env_fun_get_message)
-# two next line: for the moment, I cannot prevent the warning printing
-# warn.recov <- fun_get_message(paste(paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "), if(is.null(add)){NULL}else{add}), kind = "warning", header = FALSE, print.no = FALSE, env = env_fun_get_message) # for recovering warnings printed by ggplot() functions
-# message.recov <- fun_get_message('print(eval(parse(text = paste(paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "), if(is.null(add)){NULL}else{add}))))', kind = "message", header = FALSE, print.no = FALSE, env = env_fun_get_message) # for recovering messages printed by ggplot() functions
-# if( ! (return == TRUE & return.ggplot == TRUE)){ # because return() plots when return.ggplot is TRUE # finally not used -> see return.ggplot description
-if(is.null(legend.width)){
-grob.save <- suppressMessages(suppressWarnings(gridExtra::grid.arrange(fin.plot)))
-}else{
-grob.save <-suppressMessages(suppressWarnings(gridExtra::grid.arrange(fin.plot, legend.final, ncol=2, widths=c(1, legend.width))))
-}
-# }
-# suppressMessages(suppressWarnings(print(eval(parse(text = paste(paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "), if(is.null(add)){NULL}else{add}))))))
-}else{
-# following lines inactivated because of problem in warn.recov and message.recov
-# message.recov <- NULL
-# warn.recov <- NULL
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") PLOT NOT SHOWN AS REQUESTED")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-# end drawing
-
-
-
-# output
-# following lines inactivated because of problem in warn.recov and message.recov
-# if( ! (is.null(warn) & is.null(warn.recov) & is.null(message.recov))){
-# warn <- paste0(warn, "\n\n", if(length(warn.recov) > 0 | length(message.recov) > 0){paste0(paste0("MESSAGES FROM ggplot2 FUNCTIONS: ", ifelse( ! is.null(warn.recov), unique(message.recov), ""), ifelse( ! is.null(message.recov), unique(message.recov), ""), collapse = "\n\n"), "\n\n")})
-# }else if( ! (is.null(warn) & is.null(warn.recov)) & is.null(message.recov)){
-# warn <- paste0(warn, "\n\n", if(length(warn.recov) > 0){paste0(paste0("MESSAGES FROM ggplot2 FUNCTIONS: ", unique(warn.recov), collapse = "\n\n"), "\n\n")})
-# }else if( ! (is.null(warn) & is.null(message.recov)) & is.null(warn.recov)){
-# warn <- paste0(warn, "\n\n", if(length(message.recov) > 0){paste0(paste0("MESSAGES FROM ggplot2 FUNCTIONS: ", unique(message.recov), collapse = "\n\n"), "\n\n")})
-# }
-if(warn.print == TRUE & ! is.null(warn)){
-on.exit(warning(paste0("FROM ", function.name, ":\n\n", warn), call. = FALSE))
-}
-on.exit(exp = options(warning.length = ini.warning.length), add = TRUE)
-if(return == TRUE){
-tempo.output <- ggplot2::ggplot_build(fin.plot)
-tempo.output$data <- tempo.output$data[-1] # remove the first data because corresponds to the initial empty boxplot
-if(length(tempo.output$data) != length(coord.names)){
-tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nlength(tempo.output$data) AND length(coord.names) MUST BE IDENTICAL. CODE HAS TO BE MODIFIED")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else{
-names(tempo.output$data) <- coord.names
-tempo.output$data <- tempo.output$data[coord.names != "bad_remove"]
-}
-tempo <- tempo.output$layout$panel_params[[1]]
-output <- list(
-data = data1.ini, 
-stat = stat.nolog, 
-removed.row.nb = removed.row.nb, 
-removed.rows = removed.rows, 
-plot = c(tempo.output$data, y.second.tick.values = list(y.second.tick.values)), 
-panel = facet.categ, 
-axes = list(
-x.range = tempo$x.range, 
-x.labels = if(is.null(attributes(tempo$x$breaks))){tempo$x$breaks}else{tempo$x$scale$get_labels()}, # is.null(attributes(tempo$x$breaks)) test if it is number (TRUE) or character (FALSE)
-x.positions = if(is.null(attributes(tempo$x$breaks))){tempo$x$breaks}else{unlist(attributes(tempo$x$breaks))}, 
-y.range = tempo$y.range, 
-y.labels = if(is.null(attributes(tempo$y$breaks))){tempo$y$breaks}else{tempo$y$scale$get_labels()}, 
-y.positions = if(is.null(attributes(tempo$y$breaks))){tempo$y$breaks}else{unlist(attributes(tempo$y$breaks))}
-), 
-warn = paste0("\n", warn, "\n\n"), 
-ggplot = if(return.ggplot == TRUE){fin.plot}else{NULL}, # fin.plot plots the graph if return == TRUE
-gtable = if(return.gtable == TRUE){grob.save}else{NULL} 
-)
-return(output) # this plots the graph if return.ggplot is TRUE and if no assignment
-}
-# end output
-# end main code
-}
-
-
-
-
-
-# add density
-# rasterise all kind: https://cran.r-project.org/web/packages/ggrastr/vignettes/Raster_geoms.html
-# log not good: do not convert as in boxplot
-
-fun_gg_scatter <- function(
-data1, 
-x, 
-y, 
-categ = NULL, 
-categ.class.order = NULL, 
-color = NULL, 
-geom = "geom_point", 
-geom.step.dir = "hv", 
-geom.stick.base = NULL, 
-alpha = 0.5, 
-dot.size = 2, 
-dot.shape = 21, 
-dot.border.size = 0.5, 
-dot.border.color = NULL, 
-line.size = 0.5, 
-line.type = "solid", 
-x.lim = NULL, 
-x.lab = NULL, 
-x.log = "no", 
-x.tick.nb = NULL, 
-x.second.tick.nb = NULL, 
-x.include.zero = FALSE, 
-x.left.extra.margin = 0.05, 
-x.right.extra.margin = 0.05, 
-x.text.angle = 0, 
-y.lim = NULL, 
-y.lab = NULL, 
-y.log = "no", 
-y.tick.nb = NULL, 
-y.second.tick.nb = NULL, 
-y.include.zero = FALSE, 
-y.top.extra.margin = 0.05, 
-y.bottom.extra.margin = 0.05, 
-y.text.angle = 0, 
-raster = FALSE, 
-raster.ratio = 1, 
-raster.threshold = NULL, 
-text.size = 12, 
-title = "", 
-title.text.size = 12, 
-legend.show = TRUE, 
-legend.width = 0.5, 
-legend.name = NULL, 
-article = TRUE, 
-grid = FALSE, 
-add = NULL, 
-return = FALSE, 
-return.ggplot = FALSE,
-return.gtable = TRUE,
-plot = TRUE, 
-warn.print = FALSE, 
-lib.path = NULL
-){
-# AIM
-# Plot ggplot2 scatterplot with the possibility to overlay dots from up to 3 different data frames (-> three different legends) and lines from up to 3 different data frames (-> three different legends) -> up to 6 overlays totally
-# For ggplot2 specifications, see: https://ggplot2.tidyverse.org/articles/ggplot2-specs.html
-# WARNINGS
-# Rows containing NA in data1[, c(x, y, categ)] will be removed before processing, with a warning (see below)
-# Size arguments (dot.size, dot.border.size, line.size, text.size and title.text.size) are in mm. See Hadley comment in https://stackoverflow.com/questions/17311917/ggplot2-the-unit-of-size. See also http://sape.inf.usi.ch/quick-reference/ggplot2/size). Unit object are not accepted, but conversion can be used (e.g., grid::convertUnit(grid::unit(0.2, "inches"), "mm", valueOnly = TRUE))
-# ARGUMENTS
-# data1: a dataframe compatible with ggplot2, or a list of data frames. Order matters for the order of the legend and for the layer staking (starting from below to top)
-# x: single character string of the data1 column name for x-axis coordinates. If data1 is a list, then x must be a list of single character strings, of same size as data1, with compartment 1 related to compartment 1 of data1, etc. Write NULL for each "geom_hline" in geom argument
-# y: single character string of the data1 column name for y-axis coordinates. If data1 is a list, then y must be a list of single character strings, of same size as data1, with compartment 1 related to compartment 1 of data1, etc. Write NULL for each "geom_vline" in geom argument
-# categ: either NULL or a single character string or a list of single character strings, indicating the data1 column names to use for categories which creates legend display
-# If categ == NULL, no categories -> no legend displayed
-# If data1 is a data frame, categ must be a single character string of the data1 column name for categories
-# If data1 is a list, then categ must be a list of single character strings, of same size as data1, with compartment 1 related to compartment 1 of data1, etc. Some of the list compartments can be NULL (no legend display for these compartments), and other not
-# categ.class.order: either (1) NULL or (2) a vector of character strings or (3) a list of these vectors, setting the order of the classes of categ in the legend display
-# If categ.class.order is NULL, classes are represented according to the alphabetical order
-# If data1 is a data frame, categ.class.order must be a vector of character strings specifying the different classes in the categ column name of data1
-# If data1 is a list, then categ.class.order must be a list of vector of character strings, of same size as data1, with compartment 1 related to compartment 1 of data1, etc. Some of the list compartments can be NULL (alphabetical order for these compartments), and other not
-# color: either (1) NULL, or (2) a vector of character strings or integers, or (3) a list of vectors of character strings or integers
-# If color is NULL, default colors of ggplot2
-# If data1 is a data frame, color argument can be either:
-# (1) a single color string. All the dots of the corresponding data1 will have this color, whatever the categ value (NULL or not)
-# (2) if categ is non-null, a vector of string colors, one for each class of categ. Each color will be associated according to the categ.class.order argument if specified, or to the alphabetical order of categ classes otherwise
-# (3) if categ is non-null, a vector or factor of string colors, like if it was one of the column of data1 data frame. WARNING: a single color per class of categ and a single class of categ per color must be respected
-# Positive integers are also accepted instead of character strings, as long as above rules about length are respected. Integers will be processed by fun_gg_palette() using the max integer value among all the integers in color (see fun_gg_palette())
-# If data1 is a list, then color argument must be either: 
-# (1) a list of character strings or integers, of same size as data1, with compartment 1 related to compartment 1 of data1, etc.
-# (2) a single character string or a single integer
-# With a list (first possibility), the rules described for when data1 is a data frame apply to each compartment of the list. Some of the compartments can be NULL. In that case, a different grey color will be used for each NULL compartment. With a single value (second possibility), the same color will be used for all the dots and lines, whatever the data1 list
-# geom: single character string of the kind of plot, or a list of single character strings
-# Either:
-# "geom_point" (scatterplot)
-# "geom_line" (coordinates plotted then line connection, from the lowest to highest x coordinates first and from the lowest to highest y coordinates thenafter)
-# "geom_path" (coordinates plotted then line connection respecting the row order in data1)
-# "geom_step" coordinates plotted then line connection respecting the row order in data1 but drawn in steps). See the geom.step.dir argument
-# "geom_hline" (horizontal line, no x value provided)
-# "geom_vline" (vertical line, no y value provided)
-# "geom_stick" (dots as vertical bars)
-# If data1 is a list, then geom must be either:
-# (1) a list of single character strings, of same size as data1, with compartment 1 related to compartment 1 of data1, etc.
-# (2) a single character string. In that case the same kind of plot will apply for the different compartments of the data1 list
-# WARNING concerning "geom_hline" or "geom_vline":
-# (1) x or y argument must be NULL, respectively
-# (2) x.lim or y.lim argument must NOT be NULL, respectively, if only these kind of lines are drawn (if other geom present, then x.lim = NULL and y.lim = NULL will generate x.lim and y.lim defined by these other geom, which is not possible with "geom_hline" or "geom_vline" alone)
-# (3) the function will draw n lines for n values in the x argument column name of the data1 data frame. If several colors required, the categ argument must be specified and the corresponding categ column name must exist in the data1 data frame with a different class name for each row
-# geom.step.dir: single character string indicating the direction when using "geom_step" of the geom argument, or a list of single character strings
-# Either:
-# "vh" (vertical then horizontal)
-# "hv" (horizontal then vertical)
-# "mid" (step half-way between adjacent x-values)
-# See https://ggplot2.tidyverse.org/reference/geom_path.html
-# If data1 is a list, then geom.step.dir must be either:
-# (1) a list of single character strings, of same size as data1, with compartment 1 related to compartment 1 of data1, etc. The value in compartments related to other geom values than "geom_step" will be ignored
-# (2) a single character string, which will be used for all the "geom_step" values of the geom argument, whatever the data1 list
-# geom.stick.base: either (1) NULL or (2) a single numeric value or (3) a list of single numeric values, setting the base of the sticks when using "geom_stick" of the geom argument
-# If geom.stick.base is NULL, the bottom limit of the y-axis is taken as the base
-# If data1 is a list, then geom.stick.base must be either (1) a list of single numeric values, of same size as data1, with compartment 1 related to compartment 1 of data1, etc., or (2) a single numeric value. With a list (former possibility), the values in compartments related to other geom values than "geom_stick" will be ignored. With a single value (latter possibility), the same base will be used for all the sticks, whatever the data1 list
-# Warning: the y-axis limits are not modified by the value of geom.stick.base, meaning that this value can be outside of the range of y.lim. Add the value of geom.stick.base also in the y.lim argument if required
-# Warning: if geom.stick.base is NULL, the bottom limit of the y-axis is taken as the base. Thus, be careful with inverted y-axis
-# alpha: single numeric value (from 0 to 1) of transparency. If data1 is a list, then alpha must be either (1) a list of single numeric values, of same size as data1, with compartment 1 related to compartment 1 of data1, etc., or (2) a single numeric value. In that case the same transparency will apply for the different compartments of the data1 list
-# dot.size: single numeric value of dot shape radius? in mm. If data1 is a list, then dot.size must be either (1) a list of single numeric values, of same size as data1, with compartment 1 related to compartment 1 of data1, etc., or (2) a single numeric value. With a list (former possibility), the value in compartments related to lines will be ignored. With a single value (latter possibility), the same dot.size will be used for all the dots, whatever the data1 list
-# dot.shape: value indicating the shape of the dots (see https://ggplot2.tidyverse.org/articles/ggplot2-specs.html) If data1 is a list, then dot.shape must be either (1) a list of single shape values, of same size as data1, with compartment 1 related to compartment 1 of data1, etc., or (2) a single shape value. With a list (former possibility), the value in compartments related to lines will be ignored. With a single value (latter possibility), the same dot.shape will be used for all the dots, whatever the data1 list
-# dot.border.size: single numeric value of border dot width in mm. Write zero for no dot border. If data1 is a list, then dot.border.size must be either (1) a list of single numeric values, of same size as data1, with compartment 1 related to compartment 1 of data1, etc., or (2) a single numeric value. With a list (former possibility), the value in compartments related to lines will be ignored. With a single value (latter possibility), the same dot.border.size will be used for all the dots, whatever the data1 list
-# dot.border.color: single character color string defining the color of the dot border (same border color for all the dots, whatever their categories). If dot.border.color == NULL, the border color will be the same as the dot color. A single integer is also accepted instead of a character string, that will be processed by fun_gg_palette()
-# line.size: single numeric value of line width in mm. If data1 is a list, then line.size must be either (1) a list of single numeric values, of same size as data1, with compartment 1 related to compartment 1 of data1, etc., or (2) a single numeric value. With a list (former possibility), the value in compartments related to dots will be ignored. With a single value (latter possibility), the same line.size will be used for all the lines, whatever the data1 list
-# line.type: value indicating the kind of lines (see https://ggplot2.tidyverse.org/articles/ggplot2-specs.html) If data1 is a list, then line.type must be either (1) a list of single line kind values, of same size as data1, with compartment 1 related to compartment 1 of data1, etc., or (2) a single line kind value. With a list (former possibility), the value in compartments related to dots will be ignored. With a single value (latter possibility), the same line.type will be used for all the lines, whatever the data1 list
-# x.lim: 2 numeric values setting the x-axis range. Order of the 2 values matters (for inverted axis). If NULL, the range of the x column name of data1 will be used
-# x.lab: a character string or expression for x-axis label. If NULL, will use the first value of x (x column name of the first data frame in data1). Warning message if the elements in x are different between data frames in data1
-# x.log: either "no", "log2" (values in the x column name of the data1 data frame will be log2 transformed and x-axis will be log2 scaled) or "log10" (values in the x column name of the data1 data frame will be log10 transformed and x-axis will be log10 scaled)
-# x.tick.nb: approximate number of desired values labeling the x-axis (i.e., main ticks, see the n argument of the the cute::fun_scale() function). If NULL and if x.log is "no", then the number of labeling values is set by ggplot2. If NULL and if x.log is "log2" or "log10", then the number of labeling values corresponds to all the exposant integers in the x.lim range (e.g., 10^1, 10^2 and 10^3, meaning 3 main ticks for x.lim = c(9, 1200)). WARNING: if non-NULL and if x.log is "log2" or "log10", labeling can be difficult to read (e.g., ..., 10^2, 10^2.5, 10^3, ...)
-# x.second.tick.nb: number of desired secondary ticks between main ticks. Ignored if x.log is other than "no" (log scale plotted). Use argument return = TRUE and see $plot$x.second.tick.values to have the values associated to secondary ticks. IF NULL, no secondary ticks
-# x.include.zero: logical. Does x.lim range include 0? Ignored if x.log is "log2" or "log10"
-# x.left.extra.margin: single proportion (between 0 and 1) indicating if extra margins must be added to x.lim. If different from 0, add the range of the axis multiplied by x.left.extra.margin (e.g., abs(x.lim[2] - x.lim[1]) * x.left.extra.margin) to the left of x-axis
-# x.right.extra.margin: idem as x.left.extra.margin but to the right of x-axis
-# x.text.angle: integer value of the text angle for the x-axis labeling values, using the same rules as in ggplot2. Use positive value for clockwise rotation: 0 for horizontal, 90 for vertical, 180 for upside down etc. Use negative values for counterclockwise rotation: 0 for horizontal, -90 for vertical, -180 for upside down etc.
-# y.lim: 2 numeric values setting the y-axis range. Order of the 2 values matters (for inverted axis). If NULL, the range of the y column name of data1 will be used
-# y.lab: a character string or expression for y-axis label. If NULL, will use the first value of y (y column name of the first data frame in data1). Warning message if the elements in y are different between data frames in data1
-# y.log: either "no", "log2" (values in the y column name of the data1 data frame will be log2 transformed and y-axis will be log2 scaled) or "log10" (values in the y column name of the data1 data frame will be log10 transformed and y-axis will be log10 scaled)
-# y.tick.nb: approximate number of desired values labeling the y-axis (i.e., main ticks, see the n argument of the the cute::fun_scale() function). If NULL and if y.log is "no", then the number of labeling values is set by ggplot2. If NULL and if y.log is "log2" or "log10", then the number of labeling values corresponds to all the exposant integers in the y.lim range (e.g., 10^1, 10^2 and 10^3, meaning 3 main ticks for y.lim = c(9, 1200)). WARNING: if non-NULL and if y.log is "log2" or "log10", labeling can be difficult to read (e.g., ..., 10^2, 10^2.5, 10^3, ...)
-# y.second.tick.nb: number of desired secondary ticks between main ticks. Ignored if y.log is other than "no" (log scale plotted). Use argument return = TRUE and see $plot$y.second.tick.values to have the values associated to secondary ticks. IF NULL, no secondary ticks
-# y.include.zero: logical. Does y.lim range include 0? Ignored if y.log is "log2" or "log10"
-# y.top.extra.margin: single proportion (between 0 and 1) indicating if extra margins must be added to y.lim. If different from 0, add the range of the axis multiplied by y.top.extra.margin (e.g., abs(y.lim[2] - y.lim[1]) * y.top.extra.margin) to the top of y-axis
-# y.bottom.extra.margin: idem as y.top.extra.margin but to the bottom of y-axis
-# y.text.angle: integer value of the text angle for the y-axis labeling values, using the same rules as in ggplot2. Use positive value for clockwise rotation: 0 for horizontal, 90 for vertical, 180 for upside down etc. Use negative values for counterclockwise rotation: 0 for horizontal, -90 for vertical, -180 for upside down etc.
-# raster: logical. Dots in raster mode? If FALSE, dots from each "geom_point" from geom argument are plotted in vectorial mode (bigger pdf and long to display if lots of dots). If TRUE, dots from each "geom_point" from geom argument are plotted in matricial mode (smaller pdf and easy display if lots of dots, but it takes time to generate the layer). If TRUE, the raster.ratio argument is used to avoid an ellipsoid representation of the dots. If TRUE, solve the transparency problem with some GUI. Overriden by the non-NULL raster.threshold argument
-# raster.ratio: single numeric value indicating the height / width ratio of the graphic device used (for instance provided by the $dim compartment in the output of the fun_open() function). The default value is 1 because by default R opens a square graphic device. But this argument has to be set when using other device dimensions. Ignored if raster == FALSE
-# raster.threshold: positive integer value indicating the limit of the dot number above which "geom_point" layers from the geom argument switch from vectorial mode to matricial mode (see the raster argument). If any layer is matricial, then the raster.ratio argument is used to avoid an ellipsoid representation of the dots. If non-NULL, it overrides the raster argument
-# text.size: numeric value of the font size of the (1) axis numbers and axis legends and (2) texts in the graphic legend (in mm)
-# title: character string of the graph title
-# title.text.size: numeric value of the title font size in mm
-# legend.show: logical. Show legend? Not considered if categ argument is NULL, because this already generate no legend, excepted if legend.width argument is non-NULL. In that specific case (categ is NULL, legend.show is TRUE and legend.width is non-NULL), an empty legend space is created. This can be useful when desiring graphs of exactly the same width, whatever they have legends or not
-# legend.width: single proportion (between 0 and 1) indicating the relative width of the legend sector (on the right of the plot) relative to the width of the plot. Value 1 means that the window device width is split in 2, half for the plot and half for the legend. Value 0 means no room for the legend, which will overlay the plot region. Write NULL to inactivate the legend sector. In such case, ggplot2 will manage the room required for the legend display, meaning that the width of the plotting region can vary between graphs, depending on the text in the legend
-# legend.name: character string of the legend title. If legend.name is NULL and categ argument is not NULL, then legend.name <- categ. If data1 is a list, then legend.name must be a list of character strings, of same size as data1, with compartment 1 related to compartment 1 of data1, etc. Some of the list compartments can be NULL, and other not
-# article: logical. If TRUE, use an article theme (article like). If FALSE, use a classic related ggplot theme. Use the add argument (e.g., add = "+ggplot2::theme_classic()" for the exact classic ggplot theme
-# grid: logical. Draw lines in the background to better read the box values? Not considered if article == FALSE (grid systematically present)
-# add: character string allowing to add more ggplot2 features (dots, lines, themes, facet, etc.). Ignored if NULL
-# WARNING: (1) the string must start with "+", (2) the string must finish with ")" and (3) each function must be preceded by "ggplot2::". Example: "+ ggplot2::coord_flip() + ggplot2::theme_bw()"
-# If the character string contains the "ggplot2::theme" string, then the article argument of fun_gg_scatter() (see above) is ignored with a warning
-# Handle the add argument with caution since added functions can create conflicts with the preexisting internal ggplot2 functions
-# WARNING: the call of objects inside the quotes of add can lead to an error if the name of these objects are some of the fun_gg_scatter() arguments. Indeed, the function will use the internal argument instead of the global environment object. Example article <- "a" in the working environment and add = '+ ggplot2::ggtitle(article)'. The risk here is to have TRUE as title. To solve this, use add = '+ ggplot2::ggtitle(get("article", envir = .GlobalEnv))'
-# return: logical. Return the graph parameters?
-# return.ggplot: logical. Return the ggplot object in the output list? Ignored if return argument is FALSE. WARNING: always assign the fun_gg_scatter() function (e.g., a <- fun_gg_scatter()) if return.ggplot argument is TRUE, otherwise, double plotting is performed. See $ggplot in the RETURN section below for more details
-# return.gtable: logical. Return the ggplot object as gtable of grobs in the output list? Ignored if plot argument is FALSE. Indeed, the graph must be plotted to get the grobs dispositions. See $gtable in the RETURN section below for more details
-# plot: logical. Plot the graphic? If FALSE and return argument is TRUE, graphical parameters and associated warnings are provided without plotting
-# warn.print: logical. Print warnings at the end of the execution? ? If FALSE, warning messages are never printed, but can still be recovered in the returned list. Some of the warning messages (those delivered by the internal ggplot2 functions) are not apparent when using the argument plot = FALSE
-# lib.path: character string indicating the absolute path of the required packages (see below). if NULL, the function will use the R library default folders
-# RETURN
-# a scatter plot if plot argument is TRUE
-# a list of the graph info if return argument is TRUE:
-# $data: the initial data with graphic information added. WARNING: if the x.log or y.log argument is not "no", x or y argument column of the data1 data frame are log2 or log10 converted in $data, respectively. Use 2^values or 10^$values to recover the initial values
-# $removed.row.nb: a list of the removed rows numbers in data frames (because of NA). NULL if no row removed
-# $removed.rows: a list of the removed rows in data frames (because of NA). NULL if no row removed
-# $plot: the graphic box and dot coordinates
-# $dots: dot coordinates
-# y.second.tick.positions: coordinates of secondary ticks (only if y.second.tick.nb argument is non-null or if y.log argument is different from "no")
-# y.second.tick.values: values of secondary ticks. NULL except if y.second.tick.nb argument is non-null or if y.log argument is different from "no")
-# $panel: the variable names used for the panels (NULL if no panels). WARNING: NA can be present according to ggplot2 upgrade to v3.3.0
-# $axes: the x-axis and y-axis info
-# $warn: the warning messages. Use cat() for proper display. NULL if no warning. WARNING: warning messages delivered by the internal ggplot2 functions are not apparent when using the argument plot = FALSE
-# $ggplot: ggplot object that can be used for reprint (use print($ggplot) or update (use $ggplot + ggplot2::...). NULL if return.ggplot argument is FALSE. Of note, a non-null $ggplot in the output list is sometimes annoying as the manipulation of this list prints the plot
-# $gtable: gtable object that can be used for reprint (use gridExtra::grid.arrange(...$ggplot) or with additionnal grobs (see the grob decomposition in the examples). NULL if return.ggplot argument is FALSE. Contrary to $ggplot, a non-NULL $gtable in the output list is not annoying as the manipulation of this list does not print the plot
-# REQUIRED PACKAGES
-# ggplot2
-# gridExtra
-# lemon (in case of use in the add argument)
-# scales
-# if raster plots are drawn (see the raster and raster.threshold arguments):
-# Cairo
-# grid
-# REQUIRED FUNCTIONS FROM THE cute PACKAGE
-# fun_gg_empty_graph()
-# fun_gg_palette()
-# fun_gg_point_rast()
-# fun_pack()
-# fun_check()
-# fun_round()
-# fun_scale()
-# fun_inter_ticks()
-# EXAMPLES
-# set.seed(1) ; obs1 <- data.frame(Km = c(2, 1, 6, 5, 4, 7), Time = c(2, 1, 6, 5, 4, 7)^2, Car = c("TUUT", "TUUT", "TUUT", "WIIM", "WIIM", "WIIM"), Color1 = rep(c("coral", "lightblue"), each = 3), stringsAsFactors = TRUE) ; fun_gg_scatter(data1 = obs1, x = "Km", y = "Time")
-# DEBUGGING
-# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 10, 3), time = rnorm(1000, 10, 3), group1 = rep(c("A1", "A2"), 500), stringsAsFactors = TRUE) ; obs2 <-data.frame(km = rnorm(1000, 15, 3), time = rnorm(1000, 15, 3), group2 = rep(c("G1", "G2"), 500), stringsAsFactors = TRUE) ; set.seed(NULL) ; obs1$km[2:3] <- NA ; data1 = list(L1 = obs1, L2 = obs2) ; x = list(L1 = "km", L2 = "km") ; y = list(L1 = "time", L2 = "time") ; categ = list(L1 = "group1", L2 = "group2") ; categ = NULL ; categ.class.order = NULL ; color = NULL ; geom = "geom_point" ; geom.step.dir = "hv" ; geom.stick.base = NULL, alpha = 0.5 ; dot.size = 2 ; dot.shape = 21 ; dot.border.size = 0.5 ; dot.border.color = NULL ; line.size = 0.5 ; line.type = "solid" ; x.lim = NULL ; x.lab = NULL ; x.log = "no" ; x.tick.nb = NULL ; x.second.tick.nb = NULL ; x.include.zero = FALSE ; x.left.extra.margin = 0.05 ; x.right.extra.margin = 0.05 ; x.text.angle = 0 ; y.lim = NULL ; y.lab = NULL ; y.log = "no" ; y.tick.nb = NULL ; y.second.tick.nb = NULL ; y.include.zero = FALSE ; y.top.extra.margin = 0.05 ; y.bottom.extra.margin = 0.05 ; y.text.angle = 0 ; raster = FALSE ; raster.ratio = 1 ; raster.threshold = NULL ; text.size = 12 ; title = "" ; title.text.size = 12 ; legend.show = TRUE ; legend.width = 0.5 ; legend.name = NULL ; article = TRUE ; grid = FALSE ; add = NULL ; return = FALSE ; return.ggplot = FALSE ; return.gtable = TRUE ; plot = TRUE ; warn.print = FALSE ; lib.path = NULL
-# function name
-function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-arg.names <- names(formals(fun = sys.function(sys.parent(n = 2)))) # names of all the arguments
-arg.user.setting <- as.list(match.call(expand.dots=FALSE))[-1] # list of the argument settings (excluding default values not provided by the user)
-# end function name
-# required function checking
-req.function <- c(
-"fun_check", 
-"fun_gg_just", 
-"fun_gg_empty_graph", 
-"fun_gg_palette", 
-"fun_gg_point_rast", 
-"fun_round", 
-"fun_pack", 
-"fun_scale", 
-"fun_inter_ticks"
-)
-tempo <- NULL
-for(i1 in req.function){
-if(length(find(i1, mode = "function"))== 0L){
-tempo <- c(tempo, i1)
-}
-}
-if( ! is.null(tempo)){
-tempo.cat <- paste0("ERROR IN ", function.name, "\nREQUIRED cute FUNCTION", ifelse(length(tempo) > 1, "S ARE", " IS"), " MISSING IN THE R ENVIRONMENT:\n", paste0(tempo, collapse = "()\n"))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n"), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-# end required function checking
-# reserved words to avoid bugs (used in this function)
-reserved.words <- c("fake_x", "fake_y", "fake_categ")
-# end reserved words to avoid bugs (used in this function)
-# arg with no default values
-mandat.args <- c(
-"data1", 
-"x", 
-"y"
-)
-tempo <- eval(parse(text = paste0("missing(", paste0(mandat.args, collapse = ") | missing("), ")")))
-if(any(tempo)){
-tempo.cat <- paste0("ERROR IN ", function.name, "\nFOLLOWING ARGUMENT", ifelse(length(mandat.args) > 1, "S HAVE", "HAS"), " NO DEFAULT VALUE AND REQUIRE ONE:\n", paste0(mandat.args, collapse = "\n"))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n"), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-# end arg with no default values
-# argument primary checking
-arg.check <- NULL #
-text.check <- NULL #
-checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
-ee <- expression(arg.check <- c(arg.check, tempo$problem) , text.check <- c(text.check, tempo$text) , checked.arg.names <- c(checked.arg.names, tempo$object.name))
-tempo1 <- fun_check(data = data1, class = "data.frame", na.contain = TRUE, fun.name = function.name)
-tempo2 <- fun_check(data = data1, class = "list", na.contain = TRUE, fun.name = function.name)
-checked.arg.names <- c(checked.arg.names, tempo2$object.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, ": data1 ARGUMENT MUST BE A DATA FRAME OR A LIST OF DATA FRAMES")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-if( ! is.null(x)){
-tempo1 <- fun_check(data = x, class = "vector", mode = "character", na.contain = TRUE, length = 1, fun.name = function.name)
-tempo2 <- fun_check(data = x, class = "list", na.contain = TRUE, fun.name = function.name)
-checked.arg.names <- c(checked.arg.names, tempo2$object.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, ": x ARGUMENT MUST BE A SINGLE CHARACTER STRING OR A LIST OF CHARACTER STRINGS")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = x, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-if( ! is.null(y)){
-tempo1 <- fun_check(data = y, class = "vector", mode = "character", na.contain = TRUE, length = 1, fun.name = function.name)
-tempo2 <- fun_check(data = y, class = "list", na.contain = TRUE, fun.name = function.name)
-checked.arg.names <- c(checked.arg.names, tempo2$object.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, ": y ARGUMENT MUST BE A SINGLE CHARACTER STRING OR A LIST OF CHARACTER STRINGS")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = y, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-if( ! is.null(categ)){
-tempo1 <- fun_check(data = categ, class = "vector", mode = "character", length = 1, fun.name = function.name)
-tempo2 <- fun_check(data = categ, class = "list", na.contain = TRUE, fun.name = function.name)
-checked.arg.names <- c(checked.arg.names, tempo2$object.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, ": categ ARGUMENT MUST BE A SINGLE CHARACTER STRING OR A LIST OF CHARACTER STRINGS")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = categ, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-if( ! is.null(categ.class.order)){
-if(is.null(categ)){
-tempo.cat <- paste0("ERROR IN ", function.name, ": categ.class.order ARGUMENT IS NOT NULL, BUT categ IS")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-tempo1 <- fun_check(data = categ.class.order, class = "vector", mode = "character", fun.name = function.name)
-tempo2 <- fun_check(data = categ.class.order, class = "list", na.contain = TRUE, fun.name = function.name)
-checked.arg.names <- c(checked.arg.names, tempo2$object.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, ": categ.class.order ARGUMENT MUST BE A VECTOR OF CHARACTER STRINGS OR A LIST OF VECTOR OF CHARACTER STRINGS")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = categ.class.order, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-if( ! is.null(legend.name)){
-tempo1 <- fun_check(data = legend.name, class = "vector", mode = "character", na.contain = TRUE, length = 1, fun.name = function.name)
-tempo2 <- fun_check(data = legend.name, class = "list", na.contain = TRUE, fun.name = function.name)
-checked.arg.names <- c(checked.arg.names, tempo2$object.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, ": legend.name ARGUMENT MUST BE A SINGLE CHARACTER STRING OR A LIST OF CHARACTER STRINGS")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = legend.name, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-if( ! is.null(color)){
-tempo1 <- fun_check(data = color, class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name)
-tempo2 <- fun_check(data = color, class = "factor", na.contain = TRUE, fun.name = function.name)
-tempo3 <- fun_check(data = color, class = "integer", double.as.integer.allowed = TRUE, na.contain = TRUE, fun.name = function.name)
-tempo4 <- fun_check(data = color, class = "list", na.contain = TRUE, fun.name = function.name)
-checked.arg.names <- c(checked.arg.names, tempo4$object.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE & tempo3$problem == TRUE & tempo4$problem == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, ": color ARGUMENT MUST BE A VECTOR (OF CHARACTER STRINGS OR INTEGERS) OR A FACTOR OR A LIST OF THESE POSSIBILITIES")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = color, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-tempo1 <- fun_check(data = geom, class = "vector", mode = "character", na.contain = FALSE, length = 1, fun.name = function.name)
-tempo2 <- fun_check(data = geom, class = "list", na.contain = TRUE, fun.name = function.name)
-checked.arg.names <- c(checked.arg.names, tempo2$object.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, ": geom ARGUMENT MUST BE A SINGLE CHARACTER STRING OR A LIST OF CHARACTER STRINGS")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-tempo1 <- fun_check(data = geom.step.dir, options = c("vh", "hv", "mid"), na.contain = FALSE, length = 1, fun.name = function.name)
-tempo2 <- fun_check(data = geom.step.dir, class = "list", na.contain = TRUE, fun.name = function.name)
-checked.arg.names <- c(checked.arg.names, tempo2$object.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, ": geom.step.dir ARGUMENT MUST BE A SINGLE CHARACTER STRING (\"vh\" OR \"hv\" OR \"mid\") OR A LIST OF THESE CHARACTER STRINGS")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-if( ! is.null(geom.stick.base)){
-tempo1 <- fun_check(data = geom.stick.base, class = "vector", mode = "numeric", na.contain = FALSE, length = 1, fun.name = function.name)
-tempo2 <- fun_check(data = color, class = "list", na.contain = TRUE, fun.name = function.name)
-checked.arg.names <- c(checked.arg.names, tempo2$object.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, ": geom.stick.base ARGUMENT MUST BE A SINGLE NUMERIC VALUE OR A LIST OF SINGLE NUMERIC VALUES")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = geom.stick.base, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-tempo1 <- fun_check(data = alpha, prop = TRUE, length = 1, fun.name = function.name)
-tempo2 <- fun_check(data = alpha, class = "list", na.contain = TRUE, fun.name = function.name)
-checked.arg.names <- c(checked.arg.names, tempo2$object.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, ": alpha ARGUMENT MUST BE A SINGLE NUMERIC VALUE BETWEEN 0 AND 1 OR A LIST OF SUCH VALUES")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-tempo1 <- fun_check(data = dot.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name)
-tempo2 <- fun_check(data = dot.size, class = "list", na.contain = TRUE, fun.name = function.name)
-checked.arg.names <- c(checked.arg.names, tempo2$object.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, ": dot.size ARGUMENT MUST BE A SINGLE NUMERIC VALUE OR A LIST OF SINGLE NUMERIC VALUES")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-tempo1 <- fun_check(data = dot.shape, class = "vector", length = 1, fun.name = function.name)
-tempo2 <- fun_check(data = dot.shape, class = "list", na.contain = TRUE, fun.name = function.name)
-checked.arg.names <- c(checked.arg.names, tempo2$object.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, ": dot.shape ARGUMENT MUST BE A SINGLE SHAPE VALUE OR A LIST OF SINGLE SHAPE VALUES (SEE https://ggplot2.tidyverse.org/articles/ggplot2-specs.html)")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-tempo1 <- fun_check(data = dot.border.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name)
-tempo2 <- fun_check(data = dot.border.size, class = "list", na.contain = TRUE, fun.name = function.name)
-checked.arg.names <- c(checked.arg.names, tempo2$object.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, ": dot.border.size ARGUMENT MUST BE A SINGLE NUMERIC VALUE OR A LIST OF SINGLE NUMERIC VALUES")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-if( ! is.null(dot.border.color)){
-tempo1 <- fun_check(data = dot.border.color, class = "vector", mode = "character", length = 1, fun.name = function.name)
-tempo2 <- fun_check(data = dot.border.color, class = "vector", typeof = "integer", double.as.integer.allowed = TRUE, length = 1, fun.name = function.name)
-checked.arg.names <- c(checked.arg.names, tempo2$object.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-# integer colors -> gg_palette
-tempo.cat <- paste0("ERROR IN ", function.name, ": dot.border.color MUST BE A SINGLE CHARACTER STRING OF COLOR OR A SINGLE INTEGER VALUE")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = dot.border.color, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-tempo1 <- fun_check(data = line.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name)
-tempo2 <- fun_check(data = line.size, class = "list", na.contain = TRUE, fun.name = function.name)
-checked.arg.names <- c(checked.arg.names, tempo2$object.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, ": line.size ARGUMENT MUST BE A SINGLE NUMERIC VALUE OR A LIST OF SINGLE NUMERIC VALUES")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-tempo1 <- fun_check(data = line.type, class = "vector", typeof = "integer", double.as.integer.allowed = FALSE, length = 1, fun.name = function.name)
-tempo2 <- fun_check(data = line.type, class = "vector", mode = "character", length = 1, fun.name = function.name)
-tempo3 <- fun_check(data = line.type, class = "list", na.contain = TRUE, fun.name = function.name)
-checked.arg.names <- c(checked.arg.names, tempo3$object.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE & tempo3$problem == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, ": line.type ARGUMENT MUST BE A SINGLE LINE KIND VALUE OR A LIST OF SINGLE LINE KIND VALUES (SEE https://ggplot2.tidyverse.org/articles/ggplot2-specs.html)")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-if( ! is.null(x.lim)){
-tempo <- fun_check(data = x.lim, class = "vector", mode = "numeric", length = 2, fun.name = function.name) ; eval(ee)
-if(tempo$problem == FALSE & any(x.lim %in% c(Inf, -Inf))){
-tempo.cat <- paste0("ERROR IN ", function.name, ": x.lim ARGUMENT CANNOT CONTAIN -Inf OR Inf VALUES")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = x.lim, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-if( ! is.null(x.lab)){
-if(all(class(x.lab) %in% "expression")){ # to deal with math symbols
-tempo <- fun_check(data = x.lab, class = "expression", length = 1, fun.name = function.name) ; eval(ee)
-}else{
-tempo <- fun_check(data = x.lab, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = x.lab, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-tempo <- fun_check(data = x.log, options = c("no", "log2", "log10"), length = 1, fun.name = function.name) ; eval(ee)
-if( ! is.null(x.tick.nb)){
-tempo <- fun_check(data = x.tick.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
-if(tempo$problem == FALSE & x.tick.nb < 0){
-tempo.cat <- paste0("ERROR IN ", function.name, ": x.tick.nb ARGUMENT MUST BE A NON-NULL POSITIVE INTEGER")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = x.tick.nb, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-if( ! is.null(x.second.tick.nb)){
-tempo <- fun_check(data = x.second.tick.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
-if(tempo$problem == FALSE & x.second.tick.nb <= 0){
-tempo.cat <- paste0("ERROR IN ", function.name, ": x.second.tick.nb ARGUMENT MUST BE A NON-NULL POSITIVE INTEGER")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = x.second.tick.nb, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-tempo <- fun_check(data = x.include.zero, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = x.left.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = x.right.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = x.text.angle, class = "vector", typeof = "integer", double.as.integer.allowed = TRUE, length = 1, neg.values = TRUE, fun.name = function.name) ; eval(ee)
-if( ! is.null(y.lim)){
-tempo <- fun_check(data = y.lim, class = "vector", mode = "numeric", length = 2, fun.name = function.name) ; eval(ee)
-if(tempo$problem == FALSE & any(y.lim %in% c(Inf, -Inf))){
-tempo.cat <- paste0("ERROR IN ", function.name, ": y.lim ARGUMENT CANNOT CONTAIN -Inf OR Inf VALUES")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = y.lim, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-if( ! is.null(y.lab)){
-if(all(class(y.lab) %in% "expression")){ # to deal with math symbols
-tempo <- fun_check(data = y.lab, class = "expression", length = 1, fun.name = function.name) ; eval(ee)
-}else{
-tempo <- fun_check(data = y.lab, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = y.lab, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-tempo <- fun_check(data = y.log, options = c("no", "log2", "log10"), length = 1, fun.name = function.name) ; eval(ee)
-if( ! is.null(y.tick.nb)){
-tempo <- fun_check(data = y.tick.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
-if(tempo$problem == FALSE & y.tick.nb < 0){
-tempo.cat <- paste0("ERROR IN ", function.name, ": y.tick.nb ARGUMENT MUST BE A NON-NULL POSITIVE INTEGER")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = y.tick.nb, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-if( ! is.null(y.second.tick.nb)){
-tempo <- fun_check(data = y.second.tick.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
-if(tempo$problem == FALSE & y.second.tick.nb <= 0){
-tempo.cat <- paste0("ERROR IN ", function.name, ": y.second.tick.nb ARGUMENT MUST BE A NON-NULL POSITIVE INTEGER")
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = y.second.tick.nb, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-tempo <- fun_check(data = y.include.zero, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = y.top.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = y.bottom.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = y.text.angle, class = "vector", typeof = "integer", double.as.integer.allowed = TRUE, length = 1, neg.values = TRUE, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = raster, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = raster.ratio, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-if( ! is.null(raster.threshold)){
-tempo <- fun_check(data = raster.threshold, class = "vector", typeof = "integer", neg.values = FALSE, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = raster.threshold, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-tempo <- fun_check(data = text.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = title, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = title.text.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = legend.show, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-if( ! is.null(legend.width)){
-tempo <- fun_check(data = legend.width, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = legend.width, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-tempo <- fun_check(data = article, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = grid, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-if( ! is.null(add)){
-tempo <- fun_check(data = add, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = add, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-tempo <- fun_check(data = return, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = return.ggplot, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = return.gtable, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = plot, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-tempo <- fun_check(data = warn.print, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-if( ! is.null(lib.path)){
-tempo <- fun_check(data = lib.path, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
-if(tempo$problem == FALSE){
-if( ! all(dir.exists(lib.path))){ # separation to avoid the problem of tempo$problem == FALSE and lib.path == NA
-tempo.cat <- paste0("ERROR IN ", function.name, ": DIRECTORY PATH INDICATED IN THE lib.path ARGUMENT DOES NOT EXISTS:\n", paste(lib.path, collapse = "\n"))
-text.check <- c(text.check, tempo.cat)
-arg.check <- c(arg.check, TRUE)
-}
-}
-}else{
-# no fun_check test here, it is just for checked.arg.names
-tempo <- fun_check(data = lib.path, class = "vector")
-checked.arg.names <- c(checked.arg.names, tempo$object.name)
-}
-if(any(arg.check) == TRUE){
-stop(paste0("\n\n================\n\n", paste(text.check[arg.check], collapse = "\n"), "\n\n================\n\n"), call. = FALSE) #
-}
-# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.7/r_debugging_tools-v1.7.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-# end argument primary checking
-
-
-# second round of checking and data preparation
-# management of NA arguments
-tempo.arg <- names(arg.user.setting) # values provided by the user
-tempo.log <- suppressWarnings(sapply(lapply(lapply(tempo.arg, FUN = get, env = sys.nframe(), inherit = FALSE), FUN = is.na), FUN = any)) & lapply(lapply(tempo.arg, FUN = get, env = sys.nframe(), inherit = FALSE), FUN = length)== 1L # no argument provided by the user can be just NA
-if(any(tempo.log) == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, ":\n", ifelse(sum(tempo.log, na.rm = TRUE) > 1, "THESE ARGUMENTS\n", "THIS ARGUMENT\n"), paste0(tempo.arg[tempo.log], collapse = "\n"),"\nCANNOT JUST BE NA")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n"), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-# end management of NA arguments
-# management of NULL arguments
-tempo.arg <-c(
-"data1", 
-# "x", # inactivated because of hline or vline
-# "y", # inactivated because of hline or vline
-"geom", 
-"geom.step.dir", 
-# "geom.stick.base", # inactivated because can be null
-"alpha", 
-"dot.size", 
-"dot.shape", 
-"dot.border.size", 
-"line.size", 
-"line.type", 
-"x.log", 
-"x.include.zero", 
-"x.left.extra.margin", 
-"x.right.extra.margin", 
-"x.text.angle", 
-"y.log", 
-"y.include.zero", 
-"y.top.extra.margin", 
-"y.bottom.extra.margin", 
-"y.text.angle", 
-"raster", 
-"raster.ratio", 
-"text.size", 
-"title", 
-"title.text.size", 
-"legend.show", 
-# "legend.width", # inactivated because can be null
-"article", 
-"grid", 
-"return", 
-"return.ggplot", 
-"return.gtable", 
-"plot", 
-"warn.print"
-)
-tempo.log <- sapply(lapply(tempo.arg, FUN = get, env = sys.nframe(), inherit = FALSE), FUN = is.null)
-if(any(tempo.log) == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, ":\n", ifelse(sum(tempo.log, na.rm = TRUE) > 1, "THESE ARGUMENTS\n", "THIS ARGUMENT\n"), paste0(tempo.arg[tempo.log], collapse = "\n"),"\nCANNOT BE NULL")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n"), call. = FALSE) # == in stop() to be able to add several messages between ==
-}
-# end management of NULL arguments
-# code that protects set.seed() in the global environment
-# end code that protects set.seed() in the global environment
-# warning initiation
-ini.warning.length <- options()$warning.length
-options(warning.length = 8170)
-warn <- NULL
-warn.count <- 0
-# end warning initiation
-# other checkings
-# check list lengths (and names of data1 compartments if present)
-list.color <- NULL
-list.geom <- NULL
-list.geom.step.dir <- NULL
-list.geom.stick.base <- NULL
-list.alpha <- NULL
-list.dot.size <- NULL
-list.dot.shape <- NULL
-list.dot.border.size <- NULL
-list.dot.border.color <- NULL
-list.line.size <- NULL
-list.line.type <- NULL
-if(all(class(data1) == "list")){
-if(length(data1) > 6){
-tempo.cat <- paste0("ERROR IN ", function.name, ": data1 ARGUMENT MUST BE A LIST OF 6 DATA FRAMES MAXIMUM (6 OVERLAYS MAX)")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-if(is.null(names(data1))){
-names(data1) <- paste0("L", 1:length(data1))
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") NULL NAME COMPARTMENT OF data1 LIST -> NAMES RESPECTIVELY ATTRIBUTED TO EACH COMPARTMENT:\n", paste(names(data1), collapse = " "))
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-if( ! is.null(x)){
-if( ! (all(class(x) == "list") & length(data1) == length(x))){
-tempo.cat <- paste0("ERROR IN ", function.name, ": x ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-}else{
-x <- vector("list", length(data1))
-}
-if( ! is.null(y)){
-if( ! (all(class(y) == "list") & length(data1) == length(y))){
-tempo.cat <- paste0("ERROR IN ", function.name, ": y ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-}else{
-y <- vector("list", length(data1))
-}
-if( ! is.null(categ)){
-if( ! (all(class(categ) == "list") & length(data1) == length(categ))){
-tempo.cat <- paste0("ERROR IN ", function.name, ": categ ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-}
-if( ! is.null(categ.class.order)){
-if( ! (all(class(categ.class.order) == "list") & length(data1) == length(categ.class.order))){
-tempo.cat <- paste0("ERROR IN ", function.name, ": categ.class.order ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-}
-if( ! is.null(color)){
-if( ! ((all(class(color) == "list") & length(data1) == length(color)) | ((all(mode(color) == "character") | all(mode(color) == "numeric")) & length(color)== 1L))){ # list of same length as data1 or single value
-tempo.cat <- paste0("ERROR IN ", function.name, ": color ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST, OR A SINGLE CHARACTER STRING OR INTEGER")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else if((all(mode(color) == "character") | all(mode(color) == "numeric")) & length(color)== 1L){ # convert the single value into a list of single value
-list.color <- vector(mode = "list", length = length(data1))
-list.color[] <- color
-}
-}
-if( ! ((all(class(geom) == "list") & length(data1) == length(geom)) | (all(mode(geom) == "character") & length(geom)== 1L))){ # list of same length as data1 or single value
-tempo.cat <- paste0("ERROR IN ", function.name, ": geom ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST, OR A SINGLE CHARACTER VALUE")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else if(all(mode(geom) == "character") & length(geom)== 1L){ # convert the single value into a list of single value
-list.geom <- vector(mode = "list", length = length(data1))
-list.geom[] <- geom
-}
-if( ! ((all(class(geom.step.dir) == "list") & length(data1) == length(geom.step.dir)) | (all(mode(geom.step.dir) == "character") & length(geom.step.dir)== 1L))){ # list of same length as data1 or single value
-tempo.cat <- paste0("ERROR IN ", function.name, ": geom.step.dir ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST, OR A SINGLE CHARACTER VALUE")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else if(all(mode(geom.step.dir) == "character") & length(geom.step.dir)== 1L){ # convert the single value into a list of single value
-list.geom.step.dir <- vector(mode = "list", length = length(data1))
-list.geom.step.dir[] <- geom.step.dir
-}
-if( ! is.null(geom.stick.base)){
-if( ! ((all(class(geom.stick.base) == "list") & length(data1) == length(geom.stick.base)) | (all(mode(geom.stick.base) == "numeric") & length(geom.stick.base)== 1L))){ # list of same length as data1 or single value
-tempo.cat <- paste0("ERROR IN ", function.name, ": geom.stick.base ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST, OR A SINGLE NUMERIC VALUE")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else if(all(mode(geom.stick.base) == "numeric") & length(geom.stick.base)== 1L){ # convert the single value into a list of single value
-list.geom.stick.base <- vector(mode = "list", length = length(data1))
-list.geom.stick.base[] <- geom.stick.base
-}
-}
-if( ! ((all(class(alpha) == "list") & length(data1) == length(alpha)) | (all(mode(alpha) == "numeric") & length(alpha)== 1L))){ # list of same length as data1 or single value
-tempo.cat <- paste0("ERROR IN ", function.name, ": alpha ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST, OR A SINGLE NUMERIC VALUE")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else if(all(mode(alpha) == "numeric") & length(alpha)== 1L){ # convert the single value into a list of single value
-list.alpha <- vector(mode = "list", length = length(data1))
-list.alpha[] <- alpha
-}
-if( ! ((all(class(dot.size) == "list") & length(data1) == length(dot.size)) | (all(mode(dot.size) == "numeric") & length(dot.size)== 1L))){ # list of same length as data1 or single value
-tempo.cat <- paste0("ERROR IN ", function.name, ": dot.size ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST, OR A SINGLE NUMERIC VALUE")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else if(all(mode(dot.size) == "numeric") & length(dot.size)== 1L){ # convert the single value into a list of single value
-list.dot.size <- vector(mode = "list", length = length(data1))
-list.dot.size[] <- dot.size
-}
-if( ! ((all(class(dot.shape) == "list") & length(data1) == length(dot.shape)) | (all(mode(dot.shape) != "list") & length(dot.shape)== 1L))){ # list of same length as data1 or single value
-tempo.cat <- paste0("ERROR IN ", function.name, ": dot.shape ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST, OR A SINGLE SHAPE VALUE")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else if(all(mode(dot.shape) != "list") & length(dot.shape)== 1L){ # convert the single value into a list of single value
-list.dot.shape <- vector(mode = "list", length = length(data1))
-list.dot.shape[] <- dot.shape
-}
-if( ! ((all(class(dot.border.size) == "list") & length(data1) == length(dot.border.size)) | (all(mode(dot.border.size) == "numeric") & length(dot.border.size)== 1L))){ # list of same length as data1 or single value
-tempo.cat <- paste0("ERROR IN ", function.name, ": dot.border.size ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST, OR A SINGLE NUMERIC VALUE")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else if(all(mode(dot.border.size) == "numeric") & length(dot.border.size)== 1L){ # convert the single value into a list of single value
-list.dot.border.size <- vector(mode = "list", length = length(data1))
-list.dot.border.size[] <- dot.border.size
-}
-if( ! is.null(dot.border.color)){
-if( ! ((all(class(dot.border.color) == "list") & length(data1) == length(dot.border.color)) | ((all(mode(dot.border.color) == "character") | all(mode(dot.border.color) == "numeric")) & length(dot.border.color)== 1L))){ # list of same length as data1 or single value
-tempo.cat <- paste0("ERROR IN ", function.name, ": dot.border.color ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST, OR A SINGLE CHARACTER STRING OR INTEGER")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else if((all(mode(dot.border.color) == "character") | all(mode(dot.border.color) == "numeric")) & length(dot.border.color)== 1L){ # convert the single value into a list of single value
-list.dot.border.color <- vector(mode = "list", length = length(data1))
-list.dot.border.color[] <- dot.border.color
-}
-}
-if( ! ((all(class(line.size) == "list") & length(data1) == length(line.size)) | (all(mode(line.size) == "numeric") & length(line.size)== 1L))){ # list of same length as data1 or single value
-tempo.cat <- paste0("ERROR IN ", function.name, ": line.size ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST, OR A SINGLE NUMERIC VALUE")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else if(all(mode(line.size) == "numeric") & length(line.size)== 1L){ # convert the single value into a list of single value
-list.line.size <- vector(mode = "list", length = length(data1))
-list.line.size[] <- line.size
-}
-if( ! ((all(class(line.type) == "list") & length(data1) == length(line.type)) | (all(mode(line.type) != "list") & length(line.type)== 1L))){ # list of same length as data1 or single value
-tempo.cat <- paste0("ERROR IN ", function.name, ": line.type ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST, OR A SINGLE LINE KIND VALUE")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else if(all(mode(line.type) != "list") & length(line.type)== 1L){ # convert the single value into a list of single value
-list.line.type <- vector(mode = "list", length = length(data1))
-list.line.type[] <- line.type
-}
-if( ! is.null(legend.name)){
-if( ! (all(class(legend.name) == "list") & length(data1) == length(legend.name))){
-tempo.cat <- paste0("ERROR IN ", function.name, ": legend.name ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-}
-}
-# end check list lengths (and names of data1 compartments if present)
-# conversion into lists
-if(all(is.data.frame(data1))){
-data1 <- list(L1 = data1)
-if(all(class(x) == "list")){
-tempo.cat <- paste0("ERROR IN ", function.name, ": x ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-x <- list(L1 = x)
-}
-if(all(class(y) == "list")){
-tempo.cat <- paste0("ERROR IN ", function.name, ": y ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-y <- list(L1 = y)
-}
-if( ! is.null(categ)){
-if(all(class(categ) == "list")){
-tempo.cat <- paste0("ERROR IN ", function.name, ": categ ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-categ <- list(L1 = categ)
-}
-}
-if( ! is.null(categ.class.order)){
-if(all(class(categ.class.order) == "list")){
-tempo.cat <- paste0("ERROR IN ", function.name, ": categ.class.order ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-categ.class.order <- list(L1 = categ.class.order)
-}
-}
-if( ! is.null(color)){
-if(all(class(color) == "list")){
-tempo.cat <- paste0("ERROR IN ", function.name, ": color ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-color <- list(L1 = color)
-}
-}
-if(all(class(geom) == "list")){
-tempo.cat <- paste0("ERROR IN ", function.name, ": geom ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-geom <- list(L1 = geom)
-}
-if(all(class(geom.step.dir) == "list")){
-tempo.cat <- paste0("ERROR IN ", function.name, ": geom.step.dir ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-geom.step.dir <- list(L1 = geom.step.dir)
-}
-if( ! is.null(geom.stick.base)){
-if(all(class(geom.stick.base) == "list")){
-tempo.cat <- paste0("ERROR IN ", function.name, ": geom.stick.base ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-geom.stick.base <- list(L1 = geom.stick.base)
-}
-}
-if(all(class(alpha) == "list")){
-tempo.cat <- paste0("ERROR IN ", function.name, ": alpha ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-alpha <- list(L1 = alpha)
-}
-if(all(class(dot.size) == "list")){
-tempo.cat <- paste0("ERROR IN ", function.name, ": dot.size ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-dot.size <- list(L1 = dot.size)
-}
-if(all(class(dot.shape) == "list")){
-tempo.cat <- paste0("ERROR IN ", function.name, ": dot.shape ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-dot.shape <- list(L1 = dot.shape)
-}
-if(all(class(dot.border.size) == "list")){
-tempo.cat <- paste0("ERROR IN ", function.name, ": dot.border.size ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-dot.border.size <- list(L1 = dot.border.size)
-}
-if( ! is.null(dot.border.color)){
-if(all(class(dot.border.color) == "list")){
-tempo.cat <- paste0("ERROR IN ", function.name, ": dot.border.color ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-dot.border.color <- list(L1 = dot.border.color)
-}
-}
-if(all(class(line.size) == "list")){
-tempo.cat <- paste0("ERROR IN ", function.name, ": line.size ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-line.size <- list(L1 = line.size)
-}
-if(all(class(line.type) == "list")){
-tempo.cat <- paste0("ERROR IN ", function.name, ": line.type ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-line.type <- list(L1 = line.type)
-}
-if( ! is.null(legend.name)){
-if(all(class(legend.name) == "list")){
-tempo.cat <- paste0("ERROR IN ", function.name, ": legend.name ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-legend.name <- list(L1 = legend.name)
-}
-}
-}else if( ! all(sapply(data1, FUN = "class") == "data.frame")){ # if not a data frame, data1 can only be a list, as tested above
-tempo.cat <- paste0("ERROR IN ", function.name, ": data1 ARGUMENT MUST BE A DATA FRAME OR A LIST OF DATA FRAMES")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-# single value converted into list now reattributed to the argument name
-if( ! is.null(color)){
-if( ! is.null(list.color)){
-color <- list.color
-}
-}
-if( ! is.null(list.geom)){
-geom <- list.geom
-}
-if( ! is.null(list.geom.step.dir)){
-geom.step.dir <- list.geom.step.dir
-}
-if( ! is.null(geom.stick.base)){
-if( ! is.null(list.geom.stick.base)){
-geom.stick.base <- list.geom.stick.base
-}
-}
-if( ! is.null(list.alpha)){
-alpha <- list.alpha
-}
-if( ! is.null(list.dot.size)){
-dot.size <- list.dot.size
-}
-if( ! is.null(list.dot.shape)){
-dot.shape <- list.dot.shape
-}
-if( ! is.null(list.dot.border.size)){
-dot.border.size <- list.dot.border.size
-}
-if( ! is.null(dot.border.color)){
-if( ! is.null(list.dot.border.color)){
-dot.border.color <- list.dot.border.color
-}
-}
-if( ! is.null(list.line.size)){
-line.size <- list.line.size
-}
-if( ! is.null(list.line.type)){
-line.type <- list.line.type
-}
-# end single value converted into list now reattributed to the argument name
-# data, x, y, geom, alpha, dot.size, shape, dot.border.size, line.size, line.type, legend.name are list now
-# if non-null, categ, categ.class.order, legend.name, color, dot.border.color are list now
-# end conversion into lists
-# verif of add
-if( ! is.null(add)){
-if( ! grepl(pattern = "^\\s*\\+", add)){ # check that the add string start by +
-tempo.cat <- paste0("ERROR IN ", function.name, ": add ARGUMENT MUST START WITH \"+\": ", paste(unique(add), collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-
-}else if( ! grepl(pattern = "(ggplot2|lemon)\\s*::", add)){ #
-tempo.cat <- paste0("ERROR IN ", function.name, ": FOR EASIER FUNCTION DETECTION, add ARGUMENT MUST CONTAIN \"ggplot2::\" OR \"lemon::\" IN FRONT OF EACH GGPLOT2 FUNCTION: ", paste(unique(add), collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else if( ! grepl(pattern = ")\\s*$", add)){ # check that the add string finished by )
-tempo.cat <- paste0("ERROR IN ", function.name, ": add ARGUMENT MUST FINISH BY \")\": ", paste(unique(add), collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-}
-# end verif of add
-# management of add containing facet
-facet.categ <- NULL
-if( ! is.null(add)){
-facet.check <- TRUE
-tempo <- unlist(strsplit(x = add, split = "\\s*\\+\\s*(ggplot2|lemon)\\s*::\\s*")) #
-tempo <- sub(x = tempo, pattern = "^facet_wrap", replacement = "ggplot2::facet_wrap")
-tempo <- sub(x = tempo, pattern = "^facet_grid", replacement = "ggplot2::facet_grid")
-tempo <- sub(x = tempo, pattern = "^facet_rep", replacement = "lemon::facet_rep")
-if(length(data1) > 1 & (any(grepl(x = tempo, pattern = "ggplot2::facet_wrap|lemon::facet_rep_wrap")) | grepl(x = add, pattern = "ggplot2::facet_grid|lemon::facet_rep_grid"))){
-tempo.cat <- paste0("ERROR IN ", function.name, "\nfacet PANELS CANNOT BE USED IF MORE THAN ONE DATA FRAME IN THE data1 ARGUMENT\nPLEASE REWRITE THE add STRING AND RERUN")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-if(any(grepl(x = tempo, pattern = "ggplot2::facet_wrap|lemon::facet_rep_wrap"))){
-tempo1 <- suppressWarnings(eval(parse(text = tempo[grepl(x = tempo, pattern = "ggplot2::facet_wrap|lemon::facet_rep_wrap")])))
-facet.categ <- list(names(tempo1$params$facets)) # list of length 1
-tempo.text <- "facet_wrap OR facet_rep_wrap"
-facet.check <- FALSE
-}else if(grepl(x = add, pattern = "ggplot2::facet_grid|lemon::facet_rep_grid")){
-tempo1 <- suppressWarnings(eval(parse(text = tempo[grepl(x = tempo, pattern = "ggplot2::facet_grid|lemon::facet_rep_grid")])))
-facet.categ <- list(c(names(tempo1$params$rows), names(tempo1$params$cols))) # list of length 1
-tempo.text <- "facet_grid OR facet_rep_grid"
-facet.check <- FALSE
-}
-if(facet.check == FALSE & ! all(facet.categ %in% names(data1[[1]]))){ # WARNING: all(facet.categ %in% names(data1)) is TRUE when facet.categ is NULL
-tempo.cat <- paste0("ERROR IN ", function.name, "\nDETECTION OF \"", tempo.text, "\" STRING IN THE add ARGUMENT BUT PROBLEM OF VARIABLE DETECTION (COLUMN NAMES OF data1)\nTHE DETECTED VARIABLES ARE:\n", paste(facet.categ, collapse = " "), "\nTHE data1 COLUMN NAMES ARE:\n", paste(names(data1[[1]]), collapse = " "), "\nPLEASE REWRITE THE add STRING AND RERUN")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-}
-}
-# if facet.categ is not NULL, it is a list of length 1 now
-# end management of add containing facet
-# legend name filling
-if(is.null(legend.name) & ! is.null(categ)){
-legend.name <- categ
-}else if(is.null(legend.name) & is.null(categ)){
-legend.name <- vector("list", length(data1)) # null list
-}
-# legend.name not NULL anymore (list)
-# end legend name filling
-# ini categ for legend display
-fin.lg.disp <- vector("list", 6) # will be used at the end to display or not legends
-fin.lg.disp[] <- FALSE
-legend.disp <- vector("list", length(data1))
-if(is.null(categ) | legend.show == FALSE){
-legend.disp[] <- FALSE
-}else{
-for(i2 in 1:length(data1)){
-if(is.null(categ[[i2]])){
-legend.disp[[i2]] <- FALSE
-}else{
-legend.disp[[i2]] <- TRUE
-}
-}
-}
-# end ini categ for legend display
-# integer colors into gg_palette
-tempo.check.color <- NULL
-for(i1 in 1:length(data1)){
-if(any(is.na(color[[i1]]))){
-tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), ": color ARGUMENT CANNOT CONTAIN NA")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-tempo.check.color <- c(tempo.check.color, fun_check(data = color[[i1]], data.name = ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), class = "integer", double.as.integer.allowed = TRUE, na.contain = TRUE, fun.name = function.name)$problem)
-}
-tempo.check.color <- ! tempo.check.color # invert TRUE and FALSE because if integer, then problem = FALSE
-if(any(tempo.check.color == TRUE)){ # convert integers into colors
-tempo.integer <- unlist(color[tempo.check.color])
-tempo.color <- fun_gg_palette(max(tempo.integer, na.rm = TRUE))
-for(i1 in 1:length(data1)){
-if(tempo.check.color[i1] == TRUE){
-color[[i1]] <-tempo.color[color[[i1]]]
-}
-}
-}
-# end integer colors into gg_palette
-# loop (checking inside list compartment)
-compart.null.color <- 0 # will be used to attribute a color when color is non-null but a compartment of color is NULL
-data1.ini <- data1 # to report NA removal
-removed.row.nb <- vector("list", length = length(data1)) # to report NA removal. Contains NULL
-removed.rows <- vector("list", length = length(data1)) # to report NA removal. Contains NULL
-for(i1 in 1:length(data1)){
-tempo <- fun_check(data = data1[[i1]], data.name = ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), class = "data.frame", na.contain = TRUE, fun.name = function.name)
-if(tempo$problem == TRUE){
-stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-# reserved word checking
-if(any(names(data1[[i1]]) %in% reserved.words)){ # I do not use fun_name_change() because cannot control y before creating "fake_y". But ok because reserved are not that common
-tempo.cat <- paste0("ERROR IN ", function.name, ": COLUMN NAMES OF ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), " ARGUMENT CANNOT BE ONE OF THESE WORDS\n", paste(reserved.words, collapse = " "), "\nTHESE ARE RESERVED FOR THE ", function.name, " FUNCTION")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-if( ! (is.null(add))){
-if(any(sapply(X = reserved.words, FUN = grepl, x = add))){
-tempo.cat <- paste0("ERROR IN ", function.name, "\nDETECTION OF COLUMN NAMES OF data1 IN THE add ARGUMENT STRING, THAT CORRESPOND TO RESERVED STRINGS FOR ", function.name, "\nFOLLOWING COLUMN NAMES HAVE TO BE CHANGED:\n", paste(arg.names[sapply(X = reserved.words, FUN = grepl, x = add)], collapse = "\n"), "\nFOR INFORMATION, THE RESERVED WORDS ARE:\n", paste(reserved.words, collapse = "\n"))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else if(any(sapply(X = arg.names, FUN = grepl, x = add))){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") NAMES OF ", function.name, " ARGUMENTS DETECTED IN THE add STRING:\n", paste(arg.names[sapply(X = arg.names, FUN = grepl, x = add)], collapse = "\n"), "\nRISK OF WRONG OBJECT USAGE INSIDE ", function.name)
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-# end reserved word checking
-# check of geom now because required for y argument
-tempo <- fun_check(data = geom[[i1]], data.name = ifelse(length(geom)== 1L, "geom", paste0("geom NUMBER ", i1)), options = c("geom_point", "geom_line", "geom_path", "geom_step", "geom_hline", "geom_vline", "geom_stick"), length = 1, fun.name = function.name)
-if(tempo$problem == TRUE){
-stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-if(geom[[i1]] == "geom_step" & is.null(geom.step.dir[[i1]])){
-tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(geom.step.dir)== 1L, "geom.step.dir", paste0("ELEMENT ", i1, " OF geom.step.dir ARGUMENT")), ": geom.step.dir ARGUMENT CANNOT BE NULL IF ", ifelse(length(geom)== 1L, "geom", paste0("ELEMENT ", i1, " OF geom")), " ARGUMENT IS \"geom_step\"\nHERE geom.step.dir ARGUMENT IS: ", paste(geom.step.dir[[i1]], collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else if(geom[[i1]] == "geom_step" & ! is.null(geom.step.dir[[i1]])){
-tempo <- fun_check(data = geom.step.dir[[i1]], data.name = ifelse(length(geom.step.dir)== 1L, "geom.step.dir", paste0("geom.step.dir NUMBER ", i1)), options = c("vh", "hv", "mid"), length = 1, fun.name = function.name)
-if(tempo$problem == TRUE){
-stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-}
-if( ! (is.null(geom.stick.base))){
-if(geom[[i1]] == "geom_stick" & ! is.null(geom.stick.base[[i1]])){
-tempo <- fun_check(data = geom.stick.base[[i1]], data.name = ifelse(length(geom.stick.base)== 1L, "geom.stick.base", paste0("geom.stick.base NUMBER ", i1)), mode = "numeric", length = 1, na.contain = FALSE, fun.name = function.name)
-if(tempo$problem == TRUE){
-stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-}
-}
-# end check of geom now because required for y argument
-if(is.null(x[[i1]])){
-if(all(geom[[i1]] != "geom_hline")){
-tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(x)== 1L, "x", paste0("ELEMENT ", i1, " OF x ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ": x ARGUMENT CANNOT BE NULL EXCEPT IF ", ifelse(length(geom)== 1L, "x", paste0("geom NUMBER ", i1)), " ARGUMENT IS \"geom_hline\"\nHERE geom ARGUMENT IS: ", paste(geom[[i1]], collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-x[[i1]] <- "fake_x"
-data1[[i1]] <- cbind(data1[[i1]], fake_x = NA, stringsAsFactors = TRUE)
-data1[[i1]][, "fake_x"] <- as.numeric(data1[[i1]][, "fake_x"])
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") NULL ", ifelse(length(x)== 1L, "x", paste0("ELEMENT ", i1, " OF x")), " ARGUMENT ASSOCIATED TO ", ifelse(length(geom)== 1L, "geom", paste0("geom NUMBER ", i1)), " ARGUMENT ", geom[[i1]], " -> FAKE COLUMN ADDED TO DATA FRAME ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ", NAMED \"fake_x\" FOR FINAL DRAWING")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}else{
-if(all(geom[[i1]] == "geom_hline")){
-tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(x)== 1L, "x", paste0("ELEMENT ", i1, " OF x ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ": x ARGUMENT MUST BE NULL IF ", ifelse(length(geom)== 1L, "geom", paste0("geom NUMBER ", i1)), " ARGUMENT IS \"geom_hline\"")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-tempo <- fun_check(data = x[[i1]], data.name = ifelse(length(x)== 1L, "x", paste0("ELEMENT ", i1, " OF x ARGUMENT")), class = "vector", mode = "character", length = 1, fun.name = function.name)
-if(tempo$problem == TRUE){
-stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-}
-if(is.null(y[[i1]])){
-if(all(geom[[i1]] != "geom_vline")){
-tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(y)== 1L, "y", paste0("ELEMENT ", i1, " OF y ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ": y ARGUMENT CANNOT BE NULL EXCEPT IF ", ifelse(length(geom)== 1L, "y", paste0("geom NUMBER ", i1)), " ARGUMENT IS \"geom_vline\"\nHERE geom ARGUMENT IS: ", paste(geom[[i1]], collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-y[[i1]] <- "fake_y"
-data1[[i1]] <- cbind(data1[[i1]], fake_y = NA, stringsAsFactors = TRUE)
-data1[[i1]][, "fake_y"] <- as.numeric(data1[[i1]][, "fake_y"])
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") NULL ", ifelse(length(y)== 1L, "y", paste0("ELEMENT ", i1, " OF y")), " ARGUMENT ASSOCIATED TO ", ifelse(length(geom)== 1L, "geom", paste0("geom NUMBER ", i1)), " ARGUMENT ", geom[[i1]], " -> FAKE COLUMN ADDED TO DATA FRAME ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ", NAMED \"fake_y\" FOR FINAL DRAWING")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}else{
-if(all(geom[[i1]] == "geom_vline")){
-tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(y)== 1L, "y", paste0("ELEMENT ", i1, " OF y ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ": y ARGUMENT MUST BE NULL IF ", ifelse(length(geom)== 1L, "geom", paste0("geom NUMBER ", i1)), " ARGUMENT IS \"geom_vline\"")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-tempo <- fun_check(data = y[[i1]], data.name = ifelse(length(y)== 1L, "y", paste0("ELEMENT ", i1, " OF y ARGUMENT")), class = "vector", mode = "character", length = 1, fun.name = function.name)
-if(tempo$problem == TRUE){
-stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-}
-# x[[i1]] and y[[i1]] not NULL anymore
-if( ! (x[[i1]] %in% names(data1[[i1]]))){
-tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(x)== 1L, "x", paste0("ELEMENT ", i1, " OF x")), " ARGUMENT MUST BE A COLUMN NAME OF ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT\nHERE IT IS: ", paste(x[[i1]], collapse = " "))))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-if( ! (y[[i1]] %in% names(data1[[i1]]))){
-tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(y)== 1L, "y", paste0("ELEMENT ", i1, " OF y")), " ARGUMENT MUST BE A COLUMN NAME OF ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT\nHERE IT IS: ", paste(y[[i1]], collapse = " "))))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-tempo <- fun_check(data = data1[[i1]][, x[[i1]]], data.name = ifelse(length(x)== 1L, "x ARGUMENT (AS COLUMN NAME OF data1 DATA FRAME)", paste0("ELEMENT ", i1, " OF x ARGUMENT", " (AS COLUMN NAME OF data1 DATA FRAME NUMBER ", i1, ")")), class = "vector", mode = "numeric", na.contain = TRUE, fun.name = function.name)
-if(tempo$problem == TRUE){
-stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-tempo <- fun_check(data = data1[[i1]][, y[[i1]]], data.name = ifelse(length(y)== 1L, "y ARGUMENT (AS COLUMN NAME OF data1 DATA FRAME)", paste0("ELEMENT ", i1, " OF y ARGUMENT", " (AS COLUMN NAME OF data1 DATA FRAME NUMBER ", i1, ")")), class = "vector", mode = "numeric", na.contain = TRUE, fun.name = function.name)
-if(tempo$problem == TRUE){
-stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-if(x[[i1]] == "fake_x" & y[[i1]] == "fake_y"){ # because the code cannot accept to be both "fake_x" and "fake_y" at the same time
-tempo.cat <- paste0("ERROR IN ", function.name, ": CODE INCONSISTENCY 2\nTHE CODE CANNOT ACCEPT x AND y TO BE \"fake_x\" AND \"fake_y\" IN THE SAME DATA FRAME ", i1, " ")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-
-if(( ! is.null(categ)) & ( ! is.null(categ[[i1]]))){ # is.null(categ[[i1]]) works even if categ is NULL # is.null(categ[[i1]]) works even if categ is NULL # if categ[[i1]] = NULL, fake_categ will be created later on
-tempo <- fun_check(data = categ[[i1]], data.name = ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")),, class = "vector", mode = "character", length = 1, fun.name = function.name)
-if(tempo$problem == TRUE){
-stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-if( ! (categ[[i1]] %in% names(data1[[i1]]))){
-tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ")), " ARGUMENT MUST BE A COLUMN NAME OF ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT\nHERE IT IS: ", paste(categ[[i1]], collapse = " "))))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-tempo1 <- fun_check(data = data1[[i1]][, categ[[i1]]], data.name = ifelse(length(categ)== 1L, "categ OF data1 ARGUMENT", paste0("ELEMENT ", i1, " OF categ ARGUMENT IN DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name)
-tempo2 <- fun_check(data = data1[[i1]][, categ[[i1]]], data.name = ifelse(length(categ)== 1L, "categ OF data1 ARGUMENT", paste0("ELEMENT ", i1, " OF categ ARGUMENT IN DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), class = "factor", na.contain = TRUE, fun.name = function.name)
-if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(categ)== 1L, "categ OF data1 ARGUMENT", paste0("ELEMENT ", i1, " OF categ ARGUMENT IN DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), " MUST BE A FACTOR OR CHARACTER VECTOR")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else if(tempo1$problem == FALSE){
-data1[[i1]][, categ[[i1]]] <- factor(data1[[i1]][, categ[[i1]]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") IN ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ", THE CHARACTER COLUMN HAS BEEN CONVERTED TO FACTOR")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-
-}
-if(geom[[i1]] == "geom_vline" | geom[[i1]] == "geom_hline"){
-if(length(unique(data1[[i1]][, categ[[i1]]])) != nrow(data1[[i1]])){
-tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(geom)== 1L, "geom OF data1 ARGUMENT", paste0("geom NUMBER ", i1, " OF DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), " ARGUMENT IS ", geom[[i1]], ", MEANING THAT ", ifelse(length(categ)== 1L, "categ OF data1 ARGUMENT", paste0("ELEMENT ", i1, " OF categ ARGUMENT IN DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), " MUST HAVE A DIFFERENT CLASS PER LINE OF data1 (ONE x VALUE PER CLASS)")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-}
-}else if(( ! is.null(categ)) & is.null(categ[[i1]])){ # is.null(categ[[i1]]) works even if categ is NULL # if categ[[i1]] = NULL, fake_categ will be created. WARNING: is.null(categ[[i1]]) means no legend display (see above), because categ has not been precised. This also means a single color for data1[[i1]]
-if(length(color[[i1]]) > 1){ # 0 means is.null(color[[i1]]) or is.null(color) and 1 is ok -> single color for data1[[i1]]
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") NULL ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ")), " ARGUMENT BUT CORRESPONDING COLORS IN ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), " HAS LENGTH OVER 1\n", paste(color[[i1]], collapse = " "), "\nWHICH IS NOT COMPATIBLE WITH NULL CATEG -> COLOR RESET TO A SINGLE COLOR")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-color[i1] <- list(NULL) # will provide a single color below # Warning color[[i1]] <- NULL removes the compartment
-}
-categ[[i1]] <- "fake_categ"
-data1[[i1]] <- cbind(data1[[i1]], fake_categ = "", stringsAsFactors = TRUE)
-# inactivated because give a different color to different "Line_" categ while a single color for all the data1[[i1]] required. Thus, put back after the color management
-# if(geom[[i1]] == "geom_hline" | geom[[i1]] == "geom_vline"){
-# data1[[i1]][, "fake_categ"] <- paste0("Line_", 1:nrow(data1[[i1]]))
-# }else{
-data1[[i1]][, "fake_categ"] <- data1[[i1]][, "fake_categ"] # as.numeric("") create a vector of NA but class numeric
-# }
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") NULL ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ")), " ARGUMENT -> FOR DATA FRAME ", ifelse(length(data1)== 1L, "data1 ARGUMENT:", paste0("NUMBER ", i1, " OF data1 ARGUMENT:")), "\n- FAKE \"fake_categ\" COLUMN ADDED FILLED WITH \"\"(OR WITH \"Line_...\" FOR LINES)\n- SINGLE COLOR USED FOR PLOTTING\n- NO LEGEND DISPLAYED")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-# OK: if categ is not NULL, all the non-null categ columns of data1 are factors from here
-
-# management of log scale and Inf removal
-if(x[[i1]] != "fake_x"){
-if(any(( ! is.finite(data1[[i1]][, x[[i1]]])) & ( ! is.na(data1[[i1]][, x[[i1]]])))){ # is.finite also detects NA: ( ! is.finite(data1[, y])) & ( ! is.na(data1[, y])) detects only Inf
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") PRESENCE OF -Inf OR Inf VALUES IN ", ifelse(length(categ)== 1L, "x", paste0("ELEMENT ", i1, " OF x ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), " AND CORRESPONDING ROWS REMOVED (SEE $removed.row.nb AND $removed.rows)")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-if(y[[i1]] != "fake_y"){
-if(any(( ! is.finite(data1[[i1]][, y[[i1]]])) & ( ! is.na(data1[[i1]][, y[[i1]]])))){ # is.finite also detects NA: ( ! is.finite(data1[, y])) & ( ! is.na(data1[, y])) detects only Inf
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") PRESENCE OF -Inf OR Inf VALUES IN ", ifelse(length(categ)== 1L, "y", paste0("ELEMENT ", i1, " OF y ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), " AND CORRESPONDING ROWS REMOVED (SEE $removed.row.nb AND $removed.rows)")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-# log conversion
-if(x.log != "no"){
-tempo1 <- ! is.finite(data1[[i1]][, x[[i1]]]) # where are initial NA and Inf
-data1[[i1]][, x[[i1]]] <- suppressWarnings(get(x.log)(data1[[i1]][, x[[i1]]]))# no env = sys.nframe(), inherit = FALSE in get() because look for function in the classical scope
-if(any( ! (tempo1 | is.finite(data1[[i1]][, x[[i1]]])))){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") LOG CONVERSION INTRODUCED -Inf OR Inf OR NaN VALUES IN ", ifelse(length(categ)== 1L, "x", paste0("ELEMENT ", i1, " OF x ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), " AND CORRESPONDING ROWS REMOVED (SEE $removed.row.nb AND $removed.rows)")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-if(y.log != "no"){
-tempo1 <- ! is.finite(data1[[i1]][, y[[i1]]]) # where are initial NA and Inf
-data1[[i1]][, y[[i1]]] <- suppressWarnings(get(y.log)(data1[[i1]][, y[[i1]]]))# no env = sys.nframe(), inherit = FALSE in get() because look for function in the classical scope
-if(any( ! (tempo1 | is.finite(data1[[i1]][, y[[i1]]])))){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") LOG CONVERSION INTRODUCED -Inf OR Inf OR NaN VALUES IN ", ifelse(length(categ)== 1L, "y", paste0("ELEMENT ", i1, " OF y ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), " AND CORRESPONDING ROWS REMOVED (SEE $removed.row.nb AND $removed.rows)")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-# Inf removal
-# removed.row.nb[[i1]] <- NULL # already NULL and Warning this removes the compartment
-removed.rows[[i1]] <- data.frame(stringsAsFactors = FALSE)
-if(any(( ! is.finite(data1[[i1]][, x[[i1]]])) & ( ! is.na(data1[[i1]][, x[[i1]]])))){ # is.finite also detects NA: ( ! is.finite(data1[[i1]][, x[[i1]]])) & ( ! is.na(data1[[i1]][, x[[i1]]])) detects only Inf
-removed.row.nb[[i1]] <- c(removed.row.nb[[i1]], which(( ! is.finite(data1[[i1]][, x[[i1]]])) & ( ! is.na(data1[[i1]][, x[[i1]]]))))
-}
-if(any(( ! is.finite(data1[[i1]][, y[[i1]]])) & ( ! is.na(data1[[i1]][, y[[i1]]])))){ # is.finite also detects NA: ( ! is.finite(data1[[i1]][, y[[i1]]])) & ( ! is.na(data1[[i1]][, y[[i1]]])) detects only Inf
-removed.row.nb[[i1]] <- c(removed.row.nb[[i1]], which(( ! is.finite(data1[[i1]][, y[[i1]]])) & ( ! is.na(data1[[i1]][, y[[i1]]]))))
-}
-if( ! is.null(removed.row.nb[[i1]])){
-removed.row.nb[[i1]] <- unique(removed.row.nb[[i1]]) # to remove the duplicated positions (NA in both x and y)
-removed.rows[[i1]] <- rbind(removed.rows[[i1]], data1.ini[[i1]][removed.row.nb[[i1]], ]) # here data1.ini used to have the y = O rows that will be removed because of Inf creation after log transformation
-data1[[i1]] <- data1[[i1]][-removed.row.nb[[i1]], ]
-data1.ini[[i1]] <- data1.ini[[i1]][-removed.row.nb[[i1]], ] #
-}
-# From here, data1 and data.ini have no more Inf
-# end Inf removal
-# x.lim and y.lim dealt later on, after the end f the loop
-# end management of log scale and Inf removal
-# management of log scale
-if(x.log != "no"){
-data1[[i1]][, x[[i1]]] <- suppressWarnings(get(x.log)(data1[[i1]][, x[[i1]]])) # no env = sys.nframe(), inherit = FALSE in get() because look for function in the classical scope
-}
-if(y.log != "no"){
-data1[[i1]][, y[[i1]]] <- suppressWarnings(get(y.log)(data1[[i1]][, y[[i1]]])) # no env = sys.nframe(), inherit = FALSE in get() because look for function in the classical scope
-}
-# end management of log scale
-# na detection and removal
-column.check <- unique(unlist(c( # unlist because creates a list
-if(x[[i1]] == "fake_x"){NULL}else{x[[i1]]}, 
-if(y[[i1]] == "fake_y"){NULL}else{y[[i1]]}, 
-if( ! is.null(categ)){if(is.null(categ[[i1]])){NULL}else{categ[[i1]]}}, 
-if( ! is.null(facet.categ)){if(is.null(facet.categ[[i1]])){NULL}else{facet.categ[[i1]]}}
-))) # dot.categ because can be a 3rd column of data1
-if(any(is.na(data1[[i1]][, column.check]))){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") NA DETECTED IN COLUMNS ", paste(column.check, collapse = " "), " OF ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), " AND CORRESPONDING ROWS REMOVED (SEE $removed.row.nb AND $removed.rows)")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-for(i3 in 1:length(column.check)){
-if(any(is.na(data1[[i1]][, column.check[i3]]))){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("NA REMOVAL DUE TO COLUMN ", column.check[i3], " OF ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")))
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-tempo <- unique(unlist(lapply(lapply(c(data1[[i1]][column.check]), FUN = is.na), FUN = which)))
-removed.row.nb[[i1]] <- c(removed.row.nb[[i1]], tempo)
-removed.rows[[i1]] <- rbind(removed.rows[[i1]], data1.ini[[i1]][tempo, ]) #  # tempo used because removed.row.nb is not empty. Here data1.ini used to have the non NA rows that will be removed because of NAN creation after log transformation (neg values for instance)
-column.check <- column.check[ ! (column.check == x[[i1]] | column.check == y[[i1]])] # remove x and y to keep quali columns
-if(length(tempo) != 0){
-data1[[i1]] <- data1[[i1]][-tempo, ] # WARNING tempo here and not removed.row.nb because the latter contain more numbers thant the former
-data1.ini[[i1]] <- data1.ini[[i1]][-tempo, ] # WARNING tempo here and not removed.row.nb because the latter contain more numbers than the former
-for(i4 in 1:length(column.check)){
-if(any( ! unique(removed.rows[[i1]][, column.check[i4]]) %in% unique(data1[[i1]][, column.check[i4]]))){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") IN COLUMN ", column.check[i4], " OF ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ", THE FOLLOWING CLASSES HAVE DISAPPEARED AFTER NA REMOVAL\n(IF COLUMN USED IN THE PLOT, THIS CLASS WILL NOT BE DISPLAYED):\n", paste(unique(removed.rows[[i1]][, column.check[i4]])[ ! unique(removed.rows[[i1]][, column.check[i4]]) %in% unique(data1[[i1]][, column.check[i4]])], collapse = " "))
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-tempo.levels <- levels(data1[[i1]][, column.check[i4]])[levels(data1[[i1]][, column.check[i4]]) %in% unique(as.character(data1[[i1]][, column.check[i4]]))]
-data1[[i1]][, column.check[i4]] <- factor(as.character(data1[[i1]][, column.check[i4]]), levels = tempo.levels)
-if(column.check[i4] %in% categ[[i1]] & ! is.null(categ.class.order)){
-categ.class.order[[i1]] <- levels(data1[[i1]][, column.check[i4]])[levels(data1[[i1]][, column.check[i4]]) %in% unique(data1[[i1]][, column.check[i4]])] # remove the absent class in the categ.class.order vector
-data1[[i1]][, column.check[i4]] <- factor(as.character(data1[[i1]][, column.check[i4]]), levels = unique(categ.class.order[[i1]]))
-}
-}
-}
-}
-}
-# end na detection and removal
-# From here, data1 and data.ini have no more NA or NaN in x, y, categ (if categ != NULL) and facet.categ (if categ != NULL)
-if( ! is.null(categ.class.order)){
-# the following check will be done several times but I prefer to keep it here, after the creation of categ
-if(is.null(categ[[i1]]) & ! is.null(categ.class.order[[i1]])){
-tempo.cat <- paste0("ERROR IN ", function.name, "\nCOMPARTMENT ", i1, " OF categ ARGUMENT CANNOT BE NULL IF COMPARTMENT ", i1, " OF categ.class.order ARGUMENT IS NOT NULL: ", paste(categ.class.order, collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-if(is.null(categ.class.order[[i1]])){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") THE categ.class.order COMPARTMENT ", i1, " IS NULL. ALPHABETICAL ORDER WILL BE APPLIED")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-data1[[i1]][, categ[[i1]]] <- factor(as.character(data1[[i1]][, categ[[i1]]])) # if already a factor, change nothing, if characters, levels according to alphabetical order
-categ.class.order[[i1]] <- levels(data1[[i1]][, categ[[i1]]]) # character vector that will be used later
-}else{
-tempo <- fun_check(data = categ.class.order[[i1]], data.name = paste0("COMPARTMENT ", i1 , " OF categ.class.order ARGUMENT"), class = "vector", mode = "character", length = length(levels(data1[[i1]][, categ[[i1]]])), fun.name = function.name) # length(data1[, categ[i1]) -> if data1[, categ[i1] was initially character vector, then conversion as factor after the NA removal, thus class number ok. If data1[, categ[i1] was initially factor, no modification after the NA removal, thus class number ok
-if(tempo$problem == TRUE){
-stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-}
-if(any(duplicated(categ.class.order[[i1]]))){
-tempo.cat <- paste0("ERROR IN ", function.name, "\nCOMPARTMENT ", i1, " OF categ.class.order ARGUMENT CANNOT HAVE DUPLICATED CLASSES: ", paste(categ.class.order[[i1]], collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else if( ! (all(categ.class.order[[i1]] %in% unique(data1[[i1]][, categ[[i1]]])) & all(unique(data1[[i1]][, categ[[i1]]]) %in% categ.class.order[[i1]]))){
-tempo.cat <- paste0("ERROR IN ", function.name, "\nCOMPARTMENT ", i1, " OF categ.class.order ARGUMENT MUST BE CLASSES OF COMPARTMENT ", i1, " OF categ ARGUMENT\nHERE IT IS:\n", paste(categ.class.order[[i1]], collapse = " "), "\nFOR COMPARTMENT ", i1, " OF categ.class.order AND IT IS:\n", paste(unique(data1[[i1]][, categ[[i1]]]), collapse = " "), "\nFOR COLUMN ", categ[[i1]], " OF data1 NUMBER ", i1)
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-data1[[i1]][, categ[[i1]]] <- factor(data1[[i1]][, categ[[i1]]], levels = categ.class.order[[i1]]) # reorder the factor
-}
-names(categ.class.order)[i1] <- categ[[i1]]
-}
-}
-# OK: if categ.class.order is not NULL, all the NULL categ.class.order columns of data1 are character from here
-
-if( ! is.null(legend.name[[i1]])){
-tempo <- fun_check(data = legend.name[[i1]], data.name = ifelse(length(legend.name)== 1L, "legend.name", paste0("legend.name NUMBER ", i1)),, class = "vector", mode = "character", length = 1, fun.name = function.name)
-if(tempo$problem == TRUE){
-stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-}
-if( ! is.null(color)){ # if color is NULL, will be filled later on
-# check the nature of color
-if(is.null(color[[i1]])){
-compart.null.color <- compart.null.color + 1
-color[[i1]] <- grey(compart.null.color / 8) # cannot be more than 7 overlays. Thus 7 different greys. 8/8 is excluded because white dots
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") NULL COLOR IN ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), " ASSOCIATED TO ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ", SINGLE COLOR ", paste(color[[i1]], collapse = " "), " HAS BEEN ATTRIBUTED")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-tempo1 <- fun_check(data = color[[i1]], data.name = ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name) # na.contain = TRUE in case of colum of data1
-tempo2 <- fun_check(data = color[[i1]], data.name = ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), class = "factor", na.contain = TRUE, fun.name = function.name) # idem
-if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), " MUST BE A FACTOR OR CHARACTER VECTOR OR INTEGER VECTOR") # integer possible because dealt above
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else if( ! (all(color[[i1]] %in% colors() | grepl(pattern = "^#", color[[i1]])))){ # check that all strings of low.color start by #
-tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), " MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # AND/OR COLOR NAMES GIVEN BY colors(): ", paste(unique(color[[i1]]), collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-if(any(is.na(color[[i1]]))){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") IN ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), ", THE COLORS:\n", paste(unique(color[[i1]]), collapse = " "), "\nCONTAINS NA")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-# end check the nature of color
-# check the length of color
-if(is.null(categ) & length(color[[i1]]) != 1){
-tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), " MUST BE A SINGLE COLOR IF categ IS NULL")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else if( ! is.null(categ)){
-# No problem of NA management by ggplot2 because already removed
-if(categ[[i1]] == "fake_categ" & length(color[[i1]]) != 1){
-tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), " MUST BE A SINGLE COLOR IF ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IS NULL")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else if(length(color[[i1]]) == length(unique(data1[[i1]][, categ[[i1]]]))){ # here length(color) is equal to the different number of categ
-data1[[i1]][, categ[[i1]]] <- factor(data1[[i1]][, categ[[i1]]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") IN ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ", THE FOLLOWING COLORS:\n", paste(color[[i1]], collapse = " "), "\nHAVE BEEN ATTRIBUTED TO THESE CLASSES:\n", paste(levels(factor(data1[[i1]][, categ[[i1]]])), collapse = " "))
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}else if(length(color[[i1]]) == length(data1[[i1]][, categ[[i1]]])){# here length(color) is equal to nrow(data1[[i1]]) -> Modif to have length(color) equal to the different number of categ (length(color) == length(levels(data1[[i1]][, categ[[i1]]])))
-data1[[i1]] <- cbind(data1[[i1]], color = color[[i1]], stringsAsFactors = TRUE)
-tempo.check <- unique(data1[[i1]][ , c(categ[[i1]], "color")])
-if( ! (nrow(data1[[i1]]) == length(color[[i1]]) & nrow(tempo.check) == length(unique(data1[[i1]][ , categ[[i1]]])))){
-tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color")), " ARGUMENT HAS THE LENGTH OF ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), "\nBUT IS INCORRECTLY ASSOCIATED TO EACH CLASS OF THIS categ:\n", paste(unique(mapply(FUN = "paste", data1[[i1]][ ,categ[[i1]]], data1[[i1]][ ,"color"])), collapse = "\n"))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-data1[[i1]][, categ[[i1]]] <- factor(data1[[i1]][, categ[[i1]]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
-color[[i1]] <- unique(color[[i1]][order(data1[[i1]][, categ[[i1]]])]) # Modif to have length(color) equal to the different number of categ (length(color) == length(levels(data1[[i1]][, categ[[i1]]])))
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count, ") FROM FUNCTION ", function.name, ": ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), " HAS THE LENGTH OF ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), " COLUMN VALUES\nCOLORS HAVE BEEN RESPECTIVELY ASSOCIATED TO EACH CLASS OF categ AS:\n", paste(levels(factor(data1[[i1]][, categ[[i1]]])), collapse = " "), "\n", paste(color[[i1]], collapse = " "))
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}else if(length(color[[i1]])== 1L){
-data1[[i1]][, categ[[i1]]] <- factor(data1[[i1]][, categ[[i1]]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
-color[[i1]] <- rep(color[[i1]], length(levels(data1[[i1]][, categ[[i1]]])))
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") IN ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ", COLOR HAS LENGTH 1 MEANING THAT ALL THE DIFFERENT CLASSES OF ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), "\n", paste(levels(factor(data1[[i1]][, categ[[i1]]])), collapse = " "), "\nWILL HAVE THE SAME COLOR\n", paste(color[[i1]], collapse = " "))
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}else{
-tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), " MUST BE\n(1) LENGTH 1\nOR (2) THE LENGTH OF ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), " COLUMN VALUES\nOR (3) THE LENGTH OF THE CLASSES IN THIS COLUMN\nHERE IT IS COLOR LENGTH ", length(color[[i1]]), " VERSUS CATEG LENGTH ", length(data1[[i1]][, categ[[i1]]]), " AND CATEG CLASS LENGTH ", length(unique(data1[[i1]][, categ[[i1]]])), "\nPRESENCE OF NA IN THE COLUMN x, y OR categ OF data1 COULD BE THE PROBLEME")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-}
-}
-if((geom[[i1]] == "geom_hline" | geom[[i1]] == "geom_vline") & ! is.null(categ[[i1]])){ # add here after the color management, to deal with the different lines to plot inside any data[[i1]]
-if(categ[[i1]] == "fake_categ"){
-data1[[i1]][, "fake_categ"] <- factor(paste0("Line_", formatC(1:nrow(data1[[i2]]), width = nchar(nrow(data1[[i2]])), flag = "0")))
-}
-}
-tempo <- fun_check(data = alpha[[i1]], data.name = ifelse(length(alpha)== 1L, "alpha", paste0("alpha NUMBER ", i1)), prop = TRUE, length = 1, fun.name = function.name)
-if(tempo$problem == TRUE){
-stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-}
-# end loop (checking inside list compartment)
-if(length(data1) > 1){
-if(length(unique(unlist(x)[ ! x == "fake_x"])) > 1){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") THE x ARGUMENT DOES NOT CONTAIN IDENTICAL COLUMN NAMES:\n", paste(unlist(x), collapse = " "), "\nX-AXIS OVERLAYING DIFFERENT VARIABLES?")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-if(length(data1) > 1){
-if(length(unique(unlist(y)[ ! y == "fake_y"])) > 1){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") THE y ARGUMENT DOES NOT CONTAIN IDENTICAL COLUMN NAMES:\n", paste(unlist(y), collapse = " "), "\nY-AXIS OVERLAYING DIFFERENT VARIABLES?")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-if(sum(geom %in% "geom_point") > 3){
-tempo.cat <- paste0("ERROR IN ", function.name, ": geom ARGUMENT CANNOT HAVE MORE THAN THREE \"geom_point\" ELEMENTS")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else if(length(geom) - sum(geom %in% "geom_point") > 3){
-tempo.cat <- paste0("ERROR IN ", function.name, ": geom ARGUMENT CANNOT HAVE MORE THAN THREE LINE ELEMENTS")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-# x.lim management before transfo by x.log
-if(x.log != "no" & ! is.null(x.lim)){
-if(any(x.lim <= 0)){
-tempo.cat <- paste0("ERROR IN ", function.name, "\nx.lim ARGUMENT CANNOT HAVE ZERO OR NEGATIVE VALUES WITH THE x.log ARGUMENT SET TO ", x.log, ":\n", paste(x.lim, collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else if(any( ! is.finite(if(x.log == "log10"){log10(x.lim)}else{log2(x.lim)}))){
-tempo.cat <- paste0("ERROR IN ", function.name, "\nx.lim ARGUMENT RETURNS INF/NA WITH THE x.log ARGUMENT SET TO ", x.log, "\nAS SCALE COMPUTATION IS ", ifelse(x.log == "log10", "log10", "log2"), ":\n", paste(if(x.log == "log10"){log10(x.lim)}else{log2(x.lim)}, collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-}
-if(x.log != "no" & x.include.zero == TRUE){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") x.log ARGUMENT SET TO ", x.log, " AND x.include.zero ARGUMENT SET TO TRUE -> x.include.zero ARGUMENT RESET TO FALSE BECAUSE 0 VALUE CANNOT BE REPRESENTED IN LOG SCALE")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-x.include.zero <- FALSE
-}
-# end x.lim management before transfo by x.log
-# y.lim management before transfo by y.log
-if(y.log != "no" & ! is.null(y.lim)){
-if(any(y.lim <= 0)){
-tempo.cat <- paste0("ERROR IN ", function.name, "\ny.lim ARGUMENT CANNOT HAVE ZERO OR NEGATIVE VALUES WITH THE y.log ARGUMENT SET TO ", y.log, ":\n", paste(y.lim, collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else if(any( ! is.finite(if(y.log == "log10"){log10(y.lim)}else{log2(y.lim)}))){
-tempo.cat <- paste0("ERROR IN ", function.name, "\ny.lim ARGUMENT RETURNS INF/NA WITH THE y.log ARGUMENT SET TO ", y.log, "\nAS SCALE COMPUTATION IS ", ifelse(y.log == "log10", "log10", "log2"), ":\n", paste(if(y.log == "log10"){log10(y.lim)}else{log2(y.lim)}, collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-}
-if(y.log != "no" & y.include.zero == TRUE){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") y.log ARGUMENT SET TO ", y.log, " AND y.include.zero ARGUMENT SET TO TRUE -> y.include.zero ARGUMENT RESET TO FALSE BECAUSE 0 VALUE CANNOT BE REPRESENTED IN LOG SCALE")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-y.include.zero <- FALSE
-}
-# end y.lim management before transfo by y.log
-# end other checkings
-# reserved word checking
-#already done above
-# end reserved word checking
-# end second round of checking and data preparation
-
-
-# package checking
-fun_pack(req.package = c(
-"gridExtra", 
-"ggplot2", 
-"lemon", 
-"scales"
-), lib.path = lib.path)
-# packages Cairo and grid tested by fun_gg_point_rast()
-# end package checking
-
-
-
-
-# main code
-# axes management
-if(is.null(x.lim)){
-if(any(unlist(mapply(FUN = "[[", data1, x, SIMPLIFY = FALSE)) %in% c(Inf, -Inf))){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") THE x COLUMN IN data1 CONTAINS -Inf OR Inf VALUES THAT WILL NOT BE CONSIDERED IN THE PLOT RANGE")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-x.lim <- suppressWarnings(range(unlist(mapply(FUN = "[[", data1, x, SIMPLIFY = FALSE)), na.rm = TRUE, finite = TRUE)) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only. y.lim added here. If NULL, ok if y argument has values
-}else if(x.log != "no"){
-x.lim <- get(x.log)(x.lim) # no env = sys.nframe(), inherit = FALSE in get() because look for function in the classical scope
-}
-if(x.log != "no"){
-if(any( ! is.finite(x.lim))){
-tempo.cat <- paste0("ERROR IN ", function.name, "\nx.lim ARGUMENT CANNOT HAVE ZERO OR NEGATIVE VALUES WITH THE x.log ARGUMENT SET TO ", x.log, ":\n", paste(x.lim, collapse = " "), "\nPLEASE, CHECK DATA VALUES (PRESENCE OF ZERO OR INF VALUES)")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-}
-if(suppressWarnings(all(x.lim %in% c(Inf, -Inf)))){ # happen when x is only NULL
-if(all(unlist(geom) %in% c("geom_vline", "geom_stick"))){
-tempo.cat <- paste0("ERROR IN ", function.name, " NOT POSSIBLE TO DRAW geom_vline OR geom_stick KIND OF LINES ALONE IF x.lim ARGUMENT IS SET TO NULL, SINCE NO X-AXIS DEFINED (", ifelse(length(x)== 1L, "x", paste0("ELEMENT ", i1, " OF x")), " ARGUMENT MUST BE NULL FOR THESE KIND OF LINES)")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-tempo.cat <- paste0("ERROR IN ", function.name, " x.lim ARGUMENT MADE OF NA, -Inf OR Inf ONLY: ", paste(x.lim, collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-}
-x.lim.order <- order(x.lim) # to deal with inverse axis
-# print(x.lim.order)
-x.lim <- sort(x.lim)
-x.lim[1] <- x.lim[1] - abs(x.lim[2] - x.lim[1]) * ifelse(diff(x.lim.order) > 0, x.right.extra.margin, x.left.extra.margin) # diff(x.lim.order) > 0 means not inversed axis
-x.lim[2] <- x.lim[2] + abs(x.lim[2] - x.lim[1]) * ifelse(diff(x.lim.order) > 0, x.left.extra.margin, x.right.extra.margin) # diff(x.lim.order) > 0 means not inversed axis
-if(x.include.zero == TRUE){ # no need to check x.log != "no" because done before
-x.lim <- range(c(x.lim, 0), na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
-}
-x.lim <- x.lim[x.lim.order]
-if(any(is.na(x.lim))){
-tempo.cat <- paste0("ERROR IN ", function.name, ": CODE INCONSISTENCY 3")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-if(is.null(y.lim)){
-if(any(unlist(mapply(FUN = "[[", data1, y, SIMPLIFY = FALSE)) %in% c(Inf, -Inf))){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") THE y COLUMN IN data1 CONTAINS -Inf OR Inf VALUES THAT WILL NOT BE CONSIDERED IN THE PLOT RANGE")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-y.lim <- suppressWarnings(range(unlist(mapply(FUN = "[[", data1, y, SIMPLIFY = FALSE)), na.rm = TRUE, finite = TRUE)) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only. y.lim added here. If NULL, ok if y argument has values
-}else if(y.log != "no"){
-y.lim <- get(y.log)(y.lim) # no env = sys.nframe(), inherit = FALSE in get() because look for function in the classical scope
-}
-if(y.log != "no"){
-if(any( ! is.finite(y.lim))){
-tempo.cat <- paste0("ERROR IN ", function.name, "\ny.lim ARGUMENT CANNOT HAVE ZERO OR NEGATIVE VALUES WITH THE y.log ARGUMENT SET TO ", y.log, ":\n", paste(y.lim, collapse = " "), "\nPLEASE, CHECK DATA VALUES (PRESENCE OF ZERO OR INF VALUES)")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-}
-if(suppressWarnings(all(y.lim %in% c(Inf, -Inf)))){ # happen when y is only NULL
-if(all(unlist(geom) == "geom_vline")){
-tempo.cat <- paste0("ERROR IN ", function.name, " NOT POSSIBLE TO DRAW geom_vline KIND OF LINES ALONE IF y.lim ARGUMENT IS SET TO NULL, SINCE NO Y-AXIS DEFINED (", ifelse(length(y)== 1L, "y", paste0("ELEMENT ", i1, " OF y")), " ARGUMENT MUST BE NULL FOR THESE KIND OF LINES)")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-tempo.cat <- paste0("ERROR IN ", function.name, " y.lim ARGUMENT MADE OF NA, -Inf OR Inf ONLY: ", paste(y.lim, collapse = " "))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-}
-y.lim.order <- order(y.lim) # to deal with inverse axis
-y.lim <- sort(y.lim)
-y.lim[1] <- y.lim[1] - abs(y.lim[2] - y.lim[1]) * ifelse(diff(y.lim.order) > 0, y.bottom.extra.margin, y.top.extra.margin) # diff(y.lim.order) > 0 means not inversed axis
-y.lim[2] <- y.lim[2] + abs(y.lim[2] - y.lim[1]) * ifelse(diff(y.lim.order) > 0, y.top.extra.margin, y.bottom.extra.margin) # diff(y.lim.order) > 0 means not inversed axis
-if(y.include.zero == TRUE){ # no need to check y.log != "no" because done before
-y.lim <- range(c(y.lim, 0), na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
-}
-y.lim <- y.lim[y.lim.order]
-if(any(is.na(y.lim))){
-tempo.cat <- paste0("ERROR IN ", function.name, ": CODE INCONSISTENCY 4")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-# end axes management
-
-
-
-
-# create a fake categ if NULL to deal with legend display
-if(is.null(categ)){
-categ <- vector("list", length(data1))
-categ[] <- "fake_categ"
-for(i2 in 1:length(data1)){
-data1[[i2]] <- cbind(data1[[i2]], fake_categ = "", stringsAsFactors = TRUE)
-if(geom[[i2]] == "geom_hline" | geom[[i2]] == "geom_vline"){
-data1[[i2]][, "fake_categ"] <- factor(paste0("Line_", 1:nrow(data1[[i2]])))
-}
-}
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") NULL categ ARGUMENT -> FAKE \"fake_categ\" COLUMN ADDED TO EACH DATA FRAME OF data1, AND FILLED WITH \"\"")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-# categ is not NULL anymore
-if(is.null(categ.class.order)){
-categ.class.order <- vector("list", length = length(data1))
-tempo.categ.class.order <- NULL
-for(i2 in 1:length(categ.class.order)){
-categ.class.order[[i2]] <- levels(data1[[i2]][, categ[[i2]]])
-names(categ.class.order)[i2] <- categ[[i2]]
-tempo.categ.class.order <- c(tempo.categ.class.order, ifelse(i2 != 1, "\n", ""), categ.class.order[[i2]])
-}
-if(any(unlist(legend.disp))){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") THE categ.class.order SETTING IS NULL. ALPHABETICAL ORDER WILL BE APPLIED FOR CLASS ORDERING:\n", paste(tempo.categ.class.order, collapse = " "))
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-# end create a fake categ if NULL to deal with legend display
-# categ.class.order is not NULL anymore
-
-
-# vector of color with length as in levels(categ) of data1
-if(is.null(color)){
-color <- vector("list", length(data1))
-length.categ.list <- lapply(lapply(mapply(FUN = "[[", data1, categ, SIMPLIFY = FALSE), FUN = unique), FUN = function(x){length(x[ ! is.na(x)])})
-length.categ.list[sapply(categ, FUN = "==", "fake_categ")] <- 1 # when is.null(color), a single color for all the dots or lines of data[[i1]] that contain "fake_categ" category
-total.categ.length <- sum(unlist(length.categ.list), na.rm = TRUE)
-tempo.color <- fun_gg_palette(total.categ.length)
-tempo.count <- 0
-for(i2 in 1:length(data1)){
-color[[i2]] <- tempo.color[(1:length.categ.list[[i2]]) + tempo.count]
-tempo.count <- tempo.count + length.categ.list[[i2]]
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") NULL color ARGUMENT -> COLORS RESPECTIVELY ATTRIBUTED TO EACH CLASS OF ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i2, " OF categ ARGUMENT")), " (", categ[[i2]], ") IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i2, " OF data1 ARGUMENT")), ":\n", paste(color[[i2]], collapse = " "), "\n", paste(if(all(levels(data1[[i2]][, categ[[i2]]]) == "")){'\"\"'}else{levels(data1[[i2]][, categ[[i2]]])}, collapse = " "))
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-# end vector of color with length as in levels(categ) of data1
-# color is not NULL anymore
-
-
-
-
-
-# last check
-for(i1 in 1:length(data1)){
-if(categ[[i1]] != "fake_categ" & length(color[[i1]]) != length(unique(data1[[i1]][, categ[[i1]]]))){
-tempo.cat <- paste0("ERROR IN ", function.name, " LAST CHECK: ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), " MUST HAVE THE LENGTH OF LEVELS OF ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), "\nHERE IT IS COLOR LENGTH ", length(color[[i1]]), " VERSUS CATEG LEVELS LENGTH ", length(unique(data1[[i1]][, categ[[i1]]])), "\nREMINDER: A SINGLE COLOR PER CLASS OF CATEG AND A SINGLE CLASS OF CATEG PER COLOR MUST BE RESPECTED")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else if(categ[[i1]] == "fake_categ" & length(color[[i1]]) != 1){
-tempo.cat <- paste0("ERROR IN ", function.name, " LAST CHECK: ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), " MUST HAVE LENGTH 1 WHEN ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IS NULL\nHERE IT IS COLOR LENGTH ", length(color[[i1]]))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-}
-# end last check
-
-
-
-
-
-# conversion of geom_hline and geom_vline
-for(i1 in 1:length(data1)){
-if(geom[[i1]] == "geom_hline" | geom[[i1]] == "geom_vline"){
-final.data.frame <- data.frame()
-for(i3 in 1:nrow(data1[[i1]])){
-tempo.data.frame <- rbind(data1[[i1]][i3, ], data1[[i1]][i3, ], stringsAsFactors = TRUE)
-if(geom[[i1]] == "geom_hline"){
-tempo.data.frame[, x[[i1]]] <- x.lim
-}else if(geom[[i1]] == "geom_vline"){
-tempo.data.frame[, y[[i1]]] <- y.lim
-}else{
-tempo.cat <- paste0("ERROR IN ", function.name, ": CODE INCONSISTENCY 5")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-# 3 lines below inactivated because I put that above
-# if(is.null(categ[[i1]])){
-# data1[, "fake_categ"] <- paste0("Line_", i3)
-# }
-final.data.frame <- rbind(final.data.frame, tempo.data.frame, stringsAsFactors = TRUE)
-}
-data1[[i1]] <- final.data.frame
-geom[[i1]] <- "geom_line"
-if(length(color[[i1]])== 1L){
-color[[i1]] <- rep(color[[i1]], length(unique(data1[[i1]][ , categ[[i1]]])))
-}else if(length(color[[i1]]) != length(unique(data1[[i1]][ , categ[[i1]]]))){
-tempo.cat <- paste0("ERROR IN ", function.name, " geom_hline AND geom_vline CONVERSION TO FIT THE XLIM AND YLIM LIMITS OF THE DATA: ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), " MUST HAVE THE LENGTH OF LEVELS OF ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), "\nHERE IT IS COLOR LENGTH ", length(color[[i1]]), " VERSUS CATEG LEVELS LENGTH ", length(unique(data1[[i1]][, categ[[i1]]])))
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-}
+    # AIM
+    # Plot ggplot2 boxplots + dots + means
+    # For ggplot2 specifications, see: https://ggplot2.tidyverse.org/articles/ggplot2-specs.html
+    # WARNINGS
+    # Rows containing NA in data1[, c(y, categ)] will be removed before processing, with a warning (see below)
+    # Hinges are not computed like in the classical boxplot() function of R. See https://ggplot2.tidyverse.org/reference/geom_boxplot.html
+    # To have a single box, please create a factor column with a single class and specify the name of this column in the categ argument. For a single set of grouped boxes, create a factor column with a single class and specify this column in categ argument as first element (i.e., as categ1, knowing that categ2 must also be specified in this situation). See categ argument below
+    # The dot.alpha argument can alter the display of the color boxes when using pdf output
+    # Size arguments (box.line.size, dot.size, dot.border.size, stat.size, text.size and title.text.size) are in mm. See Hadley comment in https://stackoverflow.com/questions/17311917/ggplot2-the-unit-of-size. See also http://sape.inf.usi.ch/quick-reference/ggplot2/size). Unit object are not accepted, but conversion can be used (e.g., grid::convertUnit(grid::unit(0.2, "inches"), "mm", valueOnly = TRUE))
+    # Display seems to be done twice on Windows devices (like a blink). However, no double plots on pdf devices. Thus, the blink remains mysterious
+    # To remove boxes and have only dots, use box.alpha = 0
+    # ARGUMENTS
+    # data1: data frame containing one column of quantitative values (see the y argument below) and one or two columns of categories (see the categ argument below). Duplicated column names are not allowed
+    # y: character string of the data1 column name for y-axis (column containing numeric values). Numeric values will be split according to the classes of the column names indicated in the categ argument to generate the boxes and will also be used to plot the dots
+    # categ: vector of character strings of the data1 column name for categories (column of characters or factors). Must be either one or two column names. If a single column name (further referred to as categ1), then one box per class of categ1. If two column names (further referred to as categ1 and categ2), then one box per class of categ2, which form a group of boxes in each class of categ1. WARNING: no empty classes allowed. To have a single box, create a factor column with a single class and specify the name of this column in the categ argument (here, no categ2 in categ argument). For a single set of grouped boxes, create a factor column with a single class and specify this column in categ argument as first element (i.e., as categ1), in addition to the already used category (as categ2 in this situation)
+    # categ.class.order: list indicating the order of the classes of categ1 and categ2 represented on the boxplot (the first compartment for categ1 and and the second for categ2). If categ.class.order == NULL, classes are represented according to the alphabetical order. Some compartments can be NULL and others not. See the categ argument for categ1 and categ2 description
+    # categ.color: vector of color character string for box frames (see the categ argument for categ1 and categ2 description)
+    # If categ.color == NULL, default colors of ggplot2, whatever categ1 and categ2
+    # If categ.color is non-null and only categ1 in categ argument, categ.color can be either:
+    # (1) a single color string. All the boxes will have this color, whatever the number of classes of categ1
+    # (2) a vector of string colors, one for each class of categ1. Each color will be associated according to categ.class.order of categ1
+    # (3) a vector or factor of string colors, like if it was one of the column of data1 data frame. WARNING: a single color per class of categ1 and a single class of categ1 per color must be respected
+    # Color functions, like grey(), hsv(), etc., are also accepted
+    # Positive integers are also accepted instead of character strings, as long as above rules about length are respected. Integers will be processed by fun_gg_palette() using the maximal integer value among all the integers in categ.color (see fun_gg_palette())
+    # If categ.color is non-null and categ1 and categ2 are specified, all the rules described above will apply to categ2 instead of categ1 (colors will be determined for boxes inside a group of boxes)
+    # box.legend.name: character string of the legend title. If box.legend.name is NULL, then box.legend.name <- categ1 if only categ1 is present, and box.legend.name <- categ2 if categ1 and categ2 are present in the categ argument. Write "" if no legend required. See the categ argument for categ1 and categ2 description
+    # box.fill: logical. Fill the box? If TRUE, the categ.color argument will be used to generate filled boxplots (the box frames being black) as well as filled outlier dots (the dot border being controlled by the dot.border.color argument). If all the dots are plotted (argument dot.color other than NULL), they will be over the boxes. If FALSE, the categ.color argument will be used to color the box frames and the outlier dot borders. If all the dots are plotted, they will be beneath the boxes
+    # box.width: single numeric value (from 0 to 1) of width of either boxes or group of boxes
+    # When categ argument has a single categ1 element (i.e., separate boxes. See the categ argument for categ1 and categ2 description), then each class of categ1 is represented by a single box. In that case, box.width argument defines each box width, from 0 (no box width) to 1 (max box width), but also the space between boxes (the code uses 1 - box.width for the box spaces). Of note, xmin and xmax of the fun_gg_boxplot() output report the box boundaries (around x-axis unit 1, 2, 3, etc., for each box)
+    # When categ argument has a two categ1 and categ2 elements (i.e., grouped boxes), box.width argument defines the width allocated for each set of grouped boxes, from 0 (no group width) to 1 (max group width), but also the space between grouped boxes (the code uses 1 - box.width for the spaces). Of note, xmin and xmax of the fun_gg_boxplot() output report the box boundaries (around x-axis unit 1, 2, 3, etc., for each set of grouped box)
+    # box.space: single numeric value (from 0 to 1) indicating the box separation inside grouped boxes, when categ argument has a two categ1 and categ2 elements. 0 means no space and 1 means boxes shrunk to a vertical line. Ignored if categ argument has a single categ1 element
+    # box.line.size: single numeric value of line width of boxes and whiskers in mm
+    # box.notch: logical. Notched boxplot? It TRUE, display notched boxplot, notches corresponding approximately to the 95% confidence interval of the median (the notch interval is exactly 1.58 x Inter Quartile Range (IQR) / sqrt(n), with n the number of values that made the box). If notch intervals between two boxes do not overlap, it can be interpreted as significant median differences
+    # box.alpha: single numeric value (from 0 to 1) of box transparency (full transparent to full opaque, respectively). To remove boxplots, use box.alpha = 0
+    # box.mean: logical. Add mean value? If TRUE, a diamond-shaped dot, with the horizontal diagonal corresponding to the mean value, is displayed over each boxplot
+    # box.whisker.kind: range of the whiskers. Either "no" (no whiskers), or "std" (length of each whisker equal to 1.5 x Inter Quartile Range (IQR)), or "max" (length of the whiskers up or down to the most distant dot)
+    # box.whisker.width: single numeric value (from 0 to 1) of the whisker width, with 0 meaning no whiskers and 1 meaning a width equal to the box width
+    # dot.color: vector of color character string ruling the dot colors and the dot display. See the example section below for easier understanding of the rules described here
+    # If NULL, no dots plotted
+    # If "same", the dots will have the same colors as the respective boxplots
+    # Otherwise, as in the rule (1), (2) or (3) described in the categ.color argument, except that in the possibility (3), the rule "a single color per class of categ and a single class of categ per color", does not have to be respected (for instance, each dot can have a different color). Colors will also depend on the dot.categ argument. If dot.categ is NULL, then colors will be applied to each class of the last column name specified in categ. If dot.categ is non-NULL, colors will be applied to each class of the column name specified in dot.categ. See examples
+    # dot.categ: optional single character string of a column name (further referred to as categ3) of the data1 argument. This column of data1 will be used to generate a legend for dots, in addition to the legend for boxes. See the dot.color argument for details about the way the legend is built using the two dot.categ and dot.color arguments. If NULL, no legend created and the colors of dots will depend on dot.color and categ arguments (as explained in the dot.color argument)
+    # dot.categ.class.order: optional vector of character strings indicating the order of the classes of categ3 (see the dot.categ argument). If dot.categ is non-NULL and dot.categ.class.order is NULL, classes are displayed in the legend according to the alphabetical order. Ignored if dot.categ is NULL
+    # dot.legend.name: optional character string of the legend title for categ3 (see the dot.categ argument). If dot.legend.name == NULL, dot.categ value is used (name of the column in data1). Write "" if no legend required. Ignored if dot.categ is NULL
+    # dot.tidy: logical. Nice dot spreading? If TRUE, use the geom_dotplot() function for a nice representation. WARNING: change the true quantitative coordinates of dots (i.e., y-axis values for vertical display) because of binning. Thus, the gain in aestheticism is associated with a loss in precision that can be very important. If FALSE, dots are randomly spread on the qualitative axis, using the dot.jitter argument (see below) keeping the true quantitative coordinates
+    # dot.tidy.bin.nb: positive integer indicating the number of bins (i.e., nb of separations) of the y.lim range. Each dot will then be put in one of the bin, with a diameter of the width of the bin. In other words, increase the number of bins to have smaller dots. Not considered if dot.tidy is FALSE
+    # dot.jitter: numeric value (from 0 to 1) of random dot horizontal dispersion (for vertical display), with 0 meaning no dispersion and 1 meaning dispersion in the corresponding box width interval. Not considered if dot.tidy is TRUE
+    # dot.seed: integer value that set the random seed. Using the same number will generate the same dot jittering. Write NULL to have different jittering each time the same instruction is run. Ignored if dot.tidy is TRUE
+    # dot.size: numeric value of dot diameter in mm. Not considered if dot.tidy is TRUE
+    # dot.alpha: numeric value (from 0 to 1) of dot transparency (full transparent to full opaque, respectively)
+    # dot.border.size: numeric value of border dot width in mm. Write zero for no dot border. If dot.tidy is TRUE, value 0 remove the border and other values leave the border without size control (geom_doplot() feature)
+    # dot.border.color: single character color string defining the color of the dot border (same color for all the dots, whatever their categories). If dot.border.color == NULL, the border color will be the same as the dot color. A single integer is also accepted instead of a character string, that will be processed by fun_gg_palette()
+    # x.lab: a character string or expression for x-axis legend. If NULL, character string of categ1 (see the categ argument for categ1 and categ2 description)
+    # x.angle: integer value of the text angle for the x-axis numbers, using the same rules as in ggplot2. Positive values for counterclockwise rotation: 0 for horizontal, 90 for vertical, 180 for upside down etc. Negative values for clockwise rotation: 0 for horizontal, -90 for vertical, -180 for upside down etc.
+    # y.lab: a character string or expression for y-axis legend. If NULL, character string of the y argument
+    # y.lim: 2 numeric values indicating the range of the y-axis. Order matters (for inverted axis). If NULL, the range of the x column name of data1 will be used. 
+    # y.log: either "no", "log2" (values in the y argument column of the data1 data frame will be log2 transformed and y-axis will be log2 scaled) or "log10" (values in the y argument column of the data1 data frame will be log10 transformed and y-axis will be log10 scaled). WARNING: not possible to have horizontal boxes with a log axis, due to a bug in ggplot2 (see https://github.com/tidyverse/ggplot2/issues/881)
+    # y.tick.nb: approximate number of desired values labeling the y-axis (i.e., main ticks, see the n argument of the the cute::fun_scale() function). If NULL and if y.log is "no", then the number of labeling values is set by ggplot2. If NULL and if y.log is "log2" or "log10", then the number of labeling values corresponds to all the exposant integers in the y.lim range (e.g., 10^1, 10^2 and 10^3, meaning 3 main ticks for y.lim = c(9, 1200)). WARNING: if non-NULL and if y.log is "log2" or "log10", labeling can be difficult to read (e.g., ..., 10^2, 10^2.5, 10^3, ...)
+    # y.second.tick.nb: number of desired secondary ticks between main ticks. Ignored if y.log is other than "no" (log scale plotted). Use argument return = TRUE and see $plot$y.second.tick.values to have the values associated to secondary ticks. IF NULL, no secondary ticks
+    # y.include.zero: logical. Does y.lim range include 0? Ignored if y.log is "log2" or "log10"
+    # y.top.extra.margin: single proportion (between 0 and 1) indicating if extra margins must be added to y.lim. If different from 0, add the range of the axis multiplied by y.top.extra.margin (e.g., abs(y.lim[2] - y.lim[1]) * y.top.extra.margin) to the top of y-axis
+    # y.bottom.extra.margin: idem as y.top.extra.margin but to the bottom of y-axis
+    # stat.pos: add the median number above the corresponding box. Either NULL (no number shown), "top" (at the top of the plot region) or "above" (above each box)
+    # stat.mean: logical. Display mean numbers instead of median numbers? Ignored if stat.pos is NULL
+    # stat.size: numeric value of the stat font size in mm. Ignored if stat.pos is NULL
+    # stat.dist: numeric value of the stat distance in percentage of the y-axis range (stat.dist = 5 means move the number displayed at 5% of the y-axis range). Ignored if stat.pos is NULL or "top"
+    # stat.angle: integer value of the angle of stat, using the same rules as in ggplot2. Positive values for counterclockwise rotation: 0 for horizontal, 90 for vertical, 180 for upside down etc. Negative values for clockwise rotation: 0 for horizontal, -90 for vertical, -180 for upside down etc.
+    # vertical: logical. Vertical boxes? WARNING: will be automatically set to TRUE if y.log argument is other than "no". Indeed, not possible to have horizontal boxes with a log axis, due to a bug in ggplot2 (see https://github.com/tidyverse/ggplot2/issues/881)
+    # text.size: numeric value of the font size of the (1) axis numbers, (2) axis labels and (3) texts in the graphic legend (in mm)
+    # title: character string of the graph title
+    # title.text.size: numeric value of the title font size in mm
+    # legend.show: logical. Show legend? Not considered if categ argument is NULL, because this already generate no legend, excepted if legend.width argument is non-NULL. In that specific case (categ is NULL, legend.show is TRUE and legend.width is non-NULL), an empty legend space is created. This can be useful when desiring graphs of exactly the same width, whatever they have legends or not
+    # legend.width: single proportion (between 0 and 1) indicating the relative width of the legend sector (on the right of the plot) relative to the width of the plot. Value 1 means that the window device width is split in 2, half for the plot and half for the legend. Value 0 means no room for the legend, which will overlay the plot region. Write NULL to inactivate the legend sector. In such case, ggplot2 will manage the room required for the legend display, meaning that the width of the plotting region can vary between graphs, depending on the text in the legend
+    # article: logical. If TRUE, use an article theme (article like). If FALSE, use a classic related ggplot theme. Use the add argument (e.g., add = "+ggplot2::theme_classic()" for the exact classic ggplot theme
+    # grid: logical. Draw lines in the background to better read the box values? Not considered if article == FALSE (grid systematically present)
+    # add: character string allowing to add more ggplot2 features (dots, lines, themes, facet, etc.). Ignored if NULL
+    # WARNING: (1) the string must start with "+", (2) the string must finish with ")" and (3) each function must be preceded by "ggplot2::". Example: "+ ggplot2::coord_flip() + ggplot2::theme_bw()"
+    # If the character string contains the "ggplot2::theme" string, then the article argument of fun_gg_boxplot() (see above) is ignored with a warning
+    # Handle the add argument with caution since added functions can create conflicts with the preexisting internal ggplot2 functions
+    # WARNING: the call of objects inside the quotes of add can lead to an error if the name of these objects are some of the fun_gg_boxplot() arguments. Indeed, the function will use the internal argument instead of the global environment object. Example article <- "a" in the working environment and add = '+ ggplot2::ggtitle(article)'. The risk here is to have TRUE as title. To solve this, use add = '+ ggplot2::ggtitle(get("article", envir = .GlobalEnv))'
+    # return: logical. Return the graph parameters?
+    # return.ggplot: logical. Return the ggplot object in the output list? Ignored if return argument is FALSE. WARNING: always assign the fun_gg_boxplot() function (e.g., a <- fun_gg_boxplot()) if return.ggplot argument is TRUE, otherwise, double plotting is performed. See $ggplot in the RETURN section below for more details
+    # return.gtable: logical. Return the ggplot object as gtable of grobs in the output list? Ignored if plot argument is FALSE. Indeed, the graph must be plotted to get the grobs dispositions. See $gtable in the RETURN section below for more details
+    # plot: logical. Plot the graphic? If FALSE and return argument is TRUE, graphical parameters and associated warnings are provided without plotting
+    # warn.print: logical. Print warnings at the end of the execution? ? If FALSE, warning messages are never printed, but can still be recovered in the returned list. Some of the warning messages (those delivered by the internal ggplot2 functions) are not apparent when using the argument plot = FALSE
+    # lib.path: character string indicating the absolute path of the required packages (see below). if NULL, the function will use the R library default folders
+    # RETURN
+    # A boxplot if plot argument is TRUE
+    # A list of the graph info if return argument is TRUE:
+    # $data: the initial data with graphic information added
+    # $stat: the graphic statistics (mostly equivalent to ggplot_build()$data[[2]])
+    # $removed.row.nb: which rows have been removed due to NA/Inf detection in y and categ columns (NULL if no row removed)
+    # $removed.rows: removed rows (NULL if no row removed)
+    # $plot: the graphic box and dot coordinates
+    # $dots: dot coordinates
+    # $main.box: coordinates of boxes
+    # $median: median coordinates
+    # $sup.whisker: coordinates of top whiskers (y for base and y.end for extremities)
+    # $inf.whisker: coordinates of bottom whiskers (y for base and y.end for extremities)
+    # $sup.whisker.edge: coordinates of top whisker edges (x and xend)
+    # $inf.whisker.edge: coordinates of bottom whisker edges(x and xend)
+    # $mean: diamond mean coordinates (only if box.mean argument is TRUE)
+    # $stat.pos: coordinates of stat numbers (only if stat.pos argument is not NULL)
+    # y.second.tick.positions: coordinates of secondary ticks (only if y.second.tick.nb argument is non-NULL or if y.log argument is different from "no")
+    # y.second.tick.values: values of secondary ticks. NULL except if y.second.tick.nb argument is non-NULL or if y.log argument is different from "no")
+    # $panel: the variable names used for the panels (NULL if no panels). WARNING: NA can be present according to ggplot2 upgrade to v3.3.0
+    # $axes: the x-axis and y-axis info
+    # $warn: the warning messages. Use cat() for proper display. NULL if no warning. WARNING: warning messages delivered by the internal ggplot2 functions are not apparent when using the argument plot = FALSE
+    # $ggplot: ggplot object that can be used for reprint (use print(...$ggplot) or update (use ...$ggplot + ggplot2::...). NULL if return.ggplot argument is FALSE. Of note, a non-NULL $ggplot in the output list is sometimes annoying as the manipulation of this list prints the plot
+    # $gtable: gtable object that can be used for reprint (use gridExtra::grid.arrange(...$ggplot) or with additionnal grobs (see the grob decomposition in the examples). NULL if return.ggplot argument is FALSE. Contrary to $ggplot, a non-NULL $gtable in the output list is not annoying as the manipulation of this list does not print the plot
+    # REQUIRED PACKAGES
+    # ggplot2
+    # gridExtra
+    # lemon (in case of use in the add argument)
+    # scales
+    # REQUIRED FUNCTIONS FROM THE cute PACKAGE
+    # fun_check()
+    # fun_comp_1d()
+    # fun_comp_2d()
+    # fun_gg_just()
+    # fun_gg_palette()
+    # fun_inter_ticks()
+    # fun_name_change()
+    # fun_pack()
+    # fun_round()
+    # fun_scale()
+    # EXAMPLE
+    # set.seed(1) ; obs1 <- data.frame(Time = c(rnorm(20, 100, 10), rnorm(20, 200, 50), rnorm(20, 500, 60), rnorm(20, 100, 50)), Categ1 = rep(c("CAT", "DOG"), times = 40), Categ2 = rep(c("A", "B", "C", "D"), each = 20), Color1 = rep(c("coral", "lightblue"), times = 40), Color2 = rep(c("#9F2108", "#306100", "#007479", "#8500C0"), each = 20), stringsAsFactors = TRUE) ; set.seed(NULL) ; fun_gg_boxplot(data1 = obs1, y = "Time", categ = "Categ1")
+    # see http
+    # DEBUGGING
+    # set.seed(1) ; obs1 <- data.frame(Time = c(rnorm(10), rnorm(10) + 2), Categ1 = rep(c("G", "H"), each = 10), stringsAsFactors = TRUE) ; set.seed(NULL) ; obs1$Time[1:10] <- NA ; data1 = obs1 ; y = "Time" ; categ = c("Categ1") ; categ.class.order = NULL ; categ.color = NULL ; box.legend.name = NULL ; box.fill = FALSE ; box.width = 0.5 ; box.space = 0.1 ; box.line.size = 0.75 ; box.notch = FALSE ; box.alpha = 1 ; box.mean = TRUE ; box.whisker.kind = "std" ; box.whisker.width = 0 ; dot.color = grey(0.25) ; dot.categ = NULL ; dot.categ.class.order = NULL ; dot.legend.name = NULL ; dot.tidy = FALSE ; dot.tidy.bin.nb = 50 ; dot.jitter = 0.5 ; dot.seed = 2 ; dot.size = 3 ; dot.alpha = 0.5 ; dot.border.size = 0.5 ; dot.border.color = NULL ; x.lab = NULL ; x.angle = 0 ; y.lab = NULL ; y.lim = NULL ; y.log = "no" ; y.tick.nb = NULL ; y.second.tick.nb = 1 ; y.include.zero = FALSE ; y.top.extra.margin = 0.05 ; y.bottom.extra.margin = 0.05 ; stat.pos = "top" ; stat.mean = FALSE ; stat.size = 4 ; stat.dist = 5 ; stat.angle = 0 ; vertical = TRUE ; text.size = 12 ; title = "" ; title.text.size = 8 ; legend.show = TRUE ; legend.width = 0.5 ; article = TRUE ; grid = FALSE ; add = NULL ; return = FALSE ; return.ggplot = FALSE ; return.gtable = TRUE ; plot = TRUE ; warn.print = FALSE ; lib.path = NULL
+    # function name
+    function.name <- paste0(as.list(match.call(expand.dots = FALSE))[[1]], "()")
+    arg.names <- names(formals(fun = sys.function(sys.parent(n = 2)))) # names of all the arguments
+    arg.user.setting <- as.list(match.call(expand.dots = FALSE))[-1] # list of the argument settings (excluding default values not provided by the user)
+    # end function name
+    # required function checking
+    req.function <- c(
+        "fun_comp_2d", 
+        "fun_gg_just", 
+        "fun_gg_palette", 
+        "fun_name_change", 
+        "fun_pack", 
+        "fun_check", 
+        "fun_round", 
+        "fun_scale",
+        "fun_inter_ticks"
+    )
+    tempo <- NULL
+    for(i1 in req.function){
+        if(length(find(i1, mode = "function")) == 0L){
+            tempo <- c(tempo, i1)
+        }
+    }
+    if( ! is.null(tempo)){
+        tempo.cat <- paste0("ERROR IN ", function.name, "\nREQUIRED cute FUNCTION", ifelse(length(tempo) > 1, "S ARE", " IS"), " MISSING IN THE R ENVIRONMENT:\n", paste0(tempo, collapse = "()\n"))
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n"), call. = FALSE) # == in stop() to be able to add several messages between ==
+    }
+    # end required function checking
+    # reserved words to avoid bugs (names of dataframe columns used in this function)
+    reserved.words <- c("categ.check", "categ.color", "dot.color", "dot.categ", "dot.max", "dot.min", "group", "PANEL", "group.check", "MEAN", "tempo.categ1", "tempo.categ2", "text.max.pos", "text.min.pos", "x", "x.y", "y", "y.check", "y_from.dot.max", "ymax", "tidy_group", "binwidth")
+    # end reserved words to avoid bugs (used in this function)
+    # arg with no default values
+    mandat.args <- c(
+        "data1", 
+        "y", 
+        "categ"
+    )
+    tempo <- eval(parse(text = paste0("missing(", paste0(mandat.args, collapse = ") | missing("), ")")))
+    if(any(tempo)){ # normally no NA for missing() output
+        tempo.cat <- paste0("ERROR IN ", function.name, "\nFOLLOWING ARGUMENT", ifelse(length(mandat.args) > 1, "S HAVE", "HAS"), " NO DEFAULT VALUE AND REQUIRE ONE:\n", paste0(mandat.args, collapse = "\n"))
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n"), call. = FALSE) # == in stop() to be able to add several messages between ==
+    }
+    # end arg with no default values
+    # argument primary checking
+    arg.check <- NULL #
+    text.check <- NULL #
+    checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
+    ee <- expression(arg.check <- c(arg.check, tempo$problem) , text.check <- c(text.check, tempo$text) , checked.arg.names <- c(checked.arg.names, tempo$object.name))
+    tempo <- fun_check(data = data1, class = "data.frame", na.contain = TRUE, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = y, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = categ, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
+    if( ! is.null(categ.class.order)){
+        tempo <- fun_check(data = categ.class.order, class = "list", fun.name = function.name) ; eval(ee)
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = categ.class.order, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    if( ! is.null(box.legend.name)){
+        tempo <- fun_check(data = box.legend.name, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = box.legend.name, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    if( ! is.null(categ.color)){
+        tempo1 <- fun_check(data = categ.color, class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name)
+        tempo2 <- fun_check(data = categ.color, class = "factor", na.contain = TRUE, fun.name = function.name)
+        checked.arg.names <- c(checked.arg.names, tempo2$object.name)
+        if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+            tempo.check.color <- fun_check(data = categ.color, class = "integer", double.as.integer.allowed = TRUE, na.contain = TRUE, neg.values = FALSE, fun.name = function.name)$problem
+            if(tempo.check.color == TRUE){
+                tempo.cat <- paste0("ERROR IN ", function.name, "\ncateg.color ARGUMENT MUST BE A FACTOR OR CHARACTER VECTOR OR POSITVE INTEGER VECTOR") # integer possible because dealt above
+                text.check <- c(text.check, tempo.cat)
+                arg.check <- c(arg.check, TRUE)
+            }else if(any(categ.color == 0L, na.rm = TRUE)){
+                tempo.cat <- paste0("ERROR IN ", function.name, "\ncateg.color ARGUMENT MUST BE A FACTOR OR CHARACTER VECTOR OR POSITVE INTEGER VECTOR") # integer possible because dealt above
+                text.check <- c(text.check, tempo.cat)
+                arg.check <- c(arg.check, TRUE)
+            }
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = categ.color, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    tempo <- fun_check(data = box.fill, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = box.width, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = box.space, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = box.line.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = box.notch, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = box.alpha, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = box.mean, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = box.whisker.kind, options = c("no", "std", "max"), length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = box.whisker.width, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+    if( ! is.null(dot.color)){
+        tempo1 <- fun_check(data = dot.color, class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name)
+        tempo2 <- fun_check(data = dot.color, class = "factor", na.contain = TRUE, fun.name = function.name)
+        checked.arg.names <- c(checked.arg.names, tempo2$object.name)
+        if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+            tempo.check.color <- fun_check(data = dot.color, class = "integer", double.as.integer.allowed = TRUE, na.contain = TRUE, neg.values = FALSE, fun.name = function.name)$problem
+            if(tempo.check.color == TRUE){
+                tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.color MUST BE A FACTOR OR CHARACTER VECTOR OR POSITVE INTEGER VECTOR") # integer possible because dealt above
+                text.check <- c(text.check, tempo.cat)
+                arg.check <- c(arg.check, TRUE)
+            }else if(any(dot.color == 0L, na.rm = TRUE)){
+                tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.color ARGUMENT MUST BE A FACTOR OR CHARACTER VECTOR OR POSITVE INTEGER VECTOR") # integer possible because dealt above
+                text.check <- c(text.check, tempo.cat)
+                arg.check <- c(arg.check, TRUE)
+            }
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = dot.color, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    if( ! is.null(dot.categ)){
+        tempo <- fun_check(data = dot.categ, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = dot.categ, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    if( ! is.null(dot.categ.class.order)){
+        tempo <- fun_check(data = dot.categ.class.order, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = dot.categ.class.order, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    if( ! is.null(dot.legend.name)){
+        tempo <- fun_check(data = dot.legend.name, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = dot.legend.name, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    tempo <- fun_check(data = dot.tidy, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = dot.tidy.bin.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+    if(tempo$problem == FALSE){
+        if(dot.tidy.bin.nb == 0L){ # length and NA checked above
+            tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.tidy.bin.nb ARGUMENT MUST BE A NON-NULL AND POSITVE INTEGER VALUE") # integer possible because dealt above
+            text.check <- c(text.check, tempo.cat)
+            arg.check <- c(arg.check, TRUE)
+        }
+    }
+    tempo <- fun_check(data = dot.jitter, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+    if( ! is.null(dot.seed)){
+        tempo <- fun_check(data = dot.seed, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = TRUE, fun.name = function.name) ; eval(ee)
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = dot.seed, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    tempo <- fun_check(data = dot.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = dot.alpha, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = dot.border.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+    if( ! is.null(dot.border.color)){
+        tempo1 <- fun_check(data = dot.border.color, class = "vector", mode = "character", length = 1, fun.name = function.name)
+        tempo2 <- fun_check(data = dot.border.color, class = "vector", typeof = "integer", double.as.integer.allowed = TRUE, length = 1, fun.name = function.name)
+        checked.arg.names <- c(checked.arg.names, tempo2$object.name)
+        if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+            tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.border.color ARGUMENT MUST BE (1) A HEXADECIMAL COLOR STRING STARTING BY #, OR (2) A COLOR NAME GIVEN BY colors(), OR (3) AN INTEGER VALUE")
+            text.check <- c(text.check, tempo.cat)
+            arg.check <- c(arg.check, TRUE)
+        }else if(tempo1$problem == FALSE & tempo2$problem == TRUE){
+            if( ! all(dot.border.color %in% colors() | grepl(pattern = "^#", dot.border.color), na.rm = TRUE)){
+                tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.border.color ARGUMENT MUST BE (1) A HEXADECIMAL COLOR STRING STARTING BY #, OR (2) A COLOR NAME GIVEN BY colors(), OR (3) AN INTEGER VALUE")
+                text.check <- c(text.check, tempo.cat)
+                arg.check <- c(arg.check, TRUE)
+            }
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = dot.border.color, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    if( ! is.null(x.lab)){
+        tempo1 <- fun_check(data = x.lab, class = "expression", length = 1, fun.name = function.name)
+        tempo2 <- fun_check(data = x.lab,  class = "vector", mode = "character", length = 1, fun.name = function.name)
+        checked.arg.names <- c(checked.arg.names, tempo2$object.name)
+        if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+            tempo.cat <- paste0("ERROR IN ", function.name, "\nx.lab ARGUMENT MUST BE A SINGLE CHARACTER STRING OR EXPRESSION")
+            text.check <- c(text.check, tempo.cat)
+            arg.check <- c(arg.check, TRUE)
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = x.lab, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    tempo <- fun_check(data = x.angle, class = "vector", typeof = "integer", double.as.integer.allowed = TRUE, length = 1, neg.values = TRUE, fun.name = function.name) ; eval(ee)
+    if( ! is.null(y.lab)){
+        tempo1 <- fun_check(data = y.lab, class = "expression", length = 1, fun.name = function.name)
+        tempo2 <- fun_check(data = y.lab,  class = "vector", mode = "character", length = 1, fun.name = function.name)
+        checked.arg.names <- c(checked.arg.names, tempo2$object.name)
+        if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+            tempo.cat <- paste0("ERROR IN ", function.name, "\ny.lab ARGUMENT MUST BE A SINGLE CHARACTER STRING OR EXPRESSION")
+            text.check <- c(text.check, tempo.cat)
+            arg.check <- c(arg.check, TRUE)
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = y.lab, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    if( ! is.null(y.lim)){
+        tempo <- fun_check(data = y.lim, class = "vector", mode = "numeric", length = 2, fun.name = function.name) ; eval(ee)
+        if(tempo$problem == FALSE){
+            if(any(is.infinite(y.lim))){ # normally no NA for is.infinite() output
+                tempo.cat <- paste0("ERROR IN ", function.name, "\ny.lim ARGUMENT CANNOT CONTAIN -Inf OR Inf VALUES")
+                text.check <- c(text.check, tempo.cat)
+                arg.check <- c(arg.check, TRUE)
+            }
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = y.lim, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    tempo <- fun_check(data = y.log, options = c("no", "log2", "log10"), length = 1, fun.name = function.name) ; eval(ee)
+    if( ! is.null(y.tick.nb)){
+        tempo <- fun_check(data = y.tick.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
+        if(tempo$problem == FALSE){
+            if(y.tick.nb < 0){
+                tempo.cat <- paste0("ERROR IN ", function.name, "\ny.tick.nb ARGUMENT MUST BE A NON NULL POSITIVE INTEGER")
+                text.check <- c(text.check, tempo.cat)
+                arg.check <- c(arg.check, TRUE)
+            }
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = y.tick.nb, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    if( ! is.null(y.second.tick.nb)){
+        tempo <- fun_check(data = y.second.tick.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
+        if(tempo$problem == FALSE){
+            if(y.second.tick.nb <= 0){
+                tempo.cat <- paste0("ERROR IN ", function.name, "\ny.second.tick.nb ARGUMENT MUST BE A NON NULL POSITIVE INTEGER")
+                text.check <- c(text.check, tempo.cat)
+                arg.check <- c(arg.check, TRUE)
+            }
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = y.second.tick.nb, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    tempo <- fun_check(data = y.include.zero, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = y.top.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = y.bottom.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+    if( ! is.null(stat.pos)){
+        tempo <- fun_check(data = stat.pos, options = c("top", "above"), length = 1, fun.name = function.name) ; eval(ee)
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = stat.pos, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    tempo <- fun_check(data = stat.mean, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = stat.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = stat.dist, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = stat.angle, class = "vector", typeof = "integer", double.as.integer.allowed = TRUE, length = 1, neg.values = TRUE, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = vertical, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = text.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = title, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = title.text.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = legend.show, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    if( ! is.null(legend.width)){
+        tempo <- fun_check(data = legend.width, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = legend.width, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    tempo <- fun_check(data = article, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = grid, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    if( ! is.null(add)){
+        tempo <- fun_check(data = add, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = add, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    tempo <- fun_check(data = return, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = return.ggplot, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = return.gtable, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = plot, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = warn.print, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    if( ! is.null(lib.path)){
+        tempo <- fun_check(data = lib.path, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
+        if(tempo$problem == FALSE){
+            if( ! all(dir.exists(lib.path), na.rm = TRUE)){ # separation to avoid the problem of tempo$problem == FALSE and lib.path == NA
+                tempo.cat <- paste0("ERROR IN ", function.name, "\nDIRECTORY PATH INDICATED IN THE lib.path ARGUMENT DOES NOT EXISTS:\n", paste(lib.path, collapse = "\n"))
+                text.check <- c(text.check, tempo.cat)
+                arg.check <- c(arg.check, TRUE)
+            }
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = lib.path, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    if(any(arg.check) == TRUE){ # normally no NA
+        stop(paste0("\n\n================\n\n", paste(text.check[arg.check], collapse = "\n"), "\n\n================\n\n"), call. = FALSE) # == in stop() to be able to add several messages between == #
+    }
+    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.7/r_debugging_tools-v1.7.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+    # end argument primary checking
+    # second round of checking and data preparation
+    # management of NA arguments
+    tempo.arg <- names(arg.user.setting) # values provided by the user
+    tempo.log <- suppressWarnings(sapply(lapply(lapply(tempo.arg, FUN = get, env = sys.nframe(), inherit = FALSE), FUN = is.na), FUN = any)) & lapply(lapply(tempo.arg, FUN = get, env = sys.nframe(), inherit = FALSE), FUN = length) == 1L # no argument provided by the user can be just NA
+    if(any(tempo.log) == TRUE){ # normally no NA because is.na() used here
+        tempo.cat <- paste0("ERROR IN ", function.name, ":\n", ifelse(sum(tempo.log, na.rm = TRUE) > 1, "THESE ARGUMENTS\n", "THIS ARGUMENT\n"), paste0(tempo.arg[tempo.log], collapse = "\n"),"\nCANNOT JUST BE NA")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n"), call. = FALSE) # == in stop() to be able to add several messages between ==
+    }
+    # end management of NA arguments
+    # management of NULL arguments
+    tempo.arg <-c(
+        "data1", 
+        "y", 
+        "categ", 
+        "box.fill", 
+        "box.width", 
+        "box.space", 
+        "box.line.size", 
+        "box.notch", 
+        "box.alpha", 
+        "box.mean", 
+        "box.whisker.kind", 
+        "box.whisker.width", 
+        # "dot.color", # inactivated because can be null
+        "dot.tidy", 
+        "dot.tidy.bin.nb", 
+        "dot.jitter", 
+        # "dot.seed", # inactivated because can be null
+        "dot.size", 
+        "dot.alpha", 
+        "dot.border.size", 
+        "x.angle", 
+        "y.log", 
+        # "y.second.tick.nb", # inactivated because can be null
+        "y.include.zero", 
+        "y.top.extra.margin", 
+        "y.bottom.extra.margin", 
+        # "stat.pos", # inactivated because can be null
+        "stat.mean", 
+        "stat.size", 
+        "stat.dist", 
+        "stat.angle", 
+        "vertical", 
+        "text.size", 
+        "title", 
+        "title.text.size", 
+        "legend.show", 
+        # "legend.width", # inactivated because can be null
+        "article", 
+        "grid", 
+        "return", 
+        "return.ggplot", 
+        "return.gtable", 
+        "plot", 
+        "warn.print"
+    )
+    tempo.log <- sapply(lapply(tempo.arg, FUN = get, env = sys.nframe(), inherit = FALSE), FUN = is.null)
+    if(any(tempo.log) == TRUE){# normally no NA with is.null()
+        tempo.cat <- paste0("ERROR IN ", function.name, ":\n", ifelse(sum(tempo.log, na.rm = TRUE) > 1, "THESE ARGUMENTS\n", "THIS ARGUMENT\n"), paste0(tempo.arg[tempo.log], collapse = "\n"),"\nCANNOT BE NULL")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n"), call. = FALSE) # == in stop() to be able to add several messages between ==
+    }
+    # end management of NULL arguments
+    # code that protects set.seed() in the global environment
+    # see also Protocol 100-rev0 Parallelization in R.docx
+    if(exists(".Random.seed", envir = .GlobalEnv)){ # if .Random.seed does not exists, it means that no random operation has been performed yet in any R environment
+        tempo.random.seed <- .Random.seed
+        on.exit(assign(".Random.seed", tempo.random.seed, env = .GlobalEnv))
+    }else{
+        on.exit(set.seed(NULL)) # inactivate seeding -> return to complete randomness
+    }
+    set.seed(dot.seed)
+    # end code that protects set.seed() in the global environment
+    # warning initiation
+    ini.warning.length <- options()$warning.length
+    options(warning.length = 8170)
+    warn <- NULL
+    warn.count <- 0
+    # end warning initiation
+    # other checkings
+    if(any(duplicated(names(data1)), na.rm = TRUE)){
+        tempo.cat <- paste0("ERROR IN ", function.name, "\nDUPLICATED COLUMN NAMES OF data1 ARGUMENT NOT ALLOWED:\n", paste(names(data1)[duplicated(names(data1))], collapse = " "))
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+    }
+    if( ! (y %in% names(data1))){
+        tempo.cat <- paste0("ERROR IN ", function.name, "\ny ARGUMENT MUST BE A COLUMN NAME OF data1")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+    }else{
+        tempo <- fun_check(data = data1[, y], data.name = "y COLUMN OF data1", class = "vector", mode = "numeric", na.contain = TRUE, fun.name = function.name)
+        if(tempo$problem == TRUE){
+            tempo.cat <- paste0("ERROR IN ", function.name, "\ny ARGUMENT MUST BE NUMERIC COLUMN IN data1")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+        }
+    }
+    if(length(categ) > 2){
+        tempo.cat <- paste0("ERROR IN ", function.name, "\ncateg ARGUMENT CANNOT HAVE MORE THAN 2 COLUMN NAMES OF data1")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+    }else if( ! all(categ %in% names(data1))){ # all() without na.rm -> ok because categ cannot be NA (tested above)
+        tempo.cat <- paste0("ERROR IN ", function.name, "\ncateg ARGUMENT MUST BE COLUMN NAMES OF data1. HERE IT IS:\n", paste(categ, collapse = " "))
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+    }
+    if(length(dot.categ) > 1){
+        tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.categ ARGUMENT CANNOT HAVE MORE THAN 1 COLUMN NAMES OF data1")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+    }else if( ! all(dot.categ %in% names(data1))){ # all() without na.rm -> ok because dot.categ cannot be NA (tested above)
+        tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.categ ARGUMENT MUST BE COLUMN NAMES OF data1. HERE IT IS:\n", paste(dot.categ, collapse = " "))
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+    }
+    # reserved word checking
+    if(any(names(data1) %in% reserved.words, na.rm = TRUE)){
+        if(any(duplicated(names(data1)), na.rm = TRUE)){
+            tempo.cat <- paste0("ERROR IN ", function.name, "\nDUPLICATED COLUMN NAMES OF data1 ARGUMENT NOT ALLOWED:\n", paste(names(data1)[duplicated(names(data1))], collapse = " "))
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+        }
+        if( ! is.null(dot.categ)){
+            if(dot.categ %in% categ){
+                reserved.words <- c(reserved.words, paste0(dot.categ, "_DOT")) # paste0(dot.categ, "_DOT") is added to the reserved words because in such situation, a new column will be added to data1 that is named paste0(dot.categ, "_DOT")
+            }
+        }
+        tempo.output <- fun_name_change(names(data1), reserved.words)
+        for(i2 in 1:length(tempo.output$ini)){ # a loop to be sure to take the good ones
+            names(data1)[names(data1) == tempo.output$ini[i2]] <- tempo.output$post[i2]
+            if(any(y == tempo.output$ini[i2])){ # any() without na.rm -> ok because y cannot be NA (tested above)
+                y[y == tempo.output$ini[i2]] <- tempo.output$post[i2]
+                warn.count <- warn.count + 1
+                tempo.warn <- paste0("(", warn.count,") IN y ARGUMENT (COLUMN NAMES OF data1 ARGUMENT),\n", tempo.output$ini[i2], " HAS BEEN REPLACED BY ", tempo.output$post[i2], "\nBECAUSE RISK OF BUG AS SOME NAMES IN y ARGUMENT ARE RESERVED WORD USED BY THE ", function.name, " FUNCTION")
+                warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+            }
+            # WARNING: names of y argument potentially replaced
+            if(any(categ == tempo.output$ini[i2])){ # any() without na.rm -> ok because categ cannot be NA (tested above)
+                categ[categ == tempo.output$ini[i2]] <- tempo.output$post[i2]
+                warn.count <- warn.count + 1
+                tempo.warn <- paste0("(", warn.count,") IN categ ARGUMENT (COLUMN NAMES OF data1 ARGUMENT),\n", tempo.output$ini[i2], " HAS BEEN REPLACED BY ", tempo.output$post[i2], "\nBECAUSE RISK OF BUG AS SOME NAMES IN categ ARGUMENT ARE RESERVED WORD USED BY THE ", function.name, " FUNCTION")
+                warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+            }
+            # WARNING: names of categ argument potentially replaced
+            if( ! is.null(dot.categ)){
+                if(any(dot.categ == tempo.output$ini[i2])){ # any() without na.rm -> ok because dot.categ cannot be NA (tested above)
+                    dot.categ[dot.categ == tempo.output$ini[i2]] <- tempo.output$post[i2]
+                    warn.count <- warn.count + 1
+                    tempo.warn <- paste0("(", warn.count,") IN dot.categ ARGUMENT (COLUMN NAMES OF data1 ARGUMENT),\n", tempo.output$ini[i2], " HAS BEEN REPLACED BY ", tempo.output$post[i2], "\nBECAUSE RISK OF BUG AS SOME NAMES IN dot.categ ARGUMENT ARE RESERVED WORD USED BY THE ", function.name, " FUNCTION")
+                    warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                }
+            }
+            # WARNING: names of dot.categ argument potentially replaced
+        }
+        warn.count <- warn.count + 1
+        tempo.warn <- paste0("(", warn.count,") REGARDING COLUMN NAMES REPLACEMENT, THE NAMES\n", paste(tempo.output$ini, collapse = " "), "\nHAVE BEEN REPLACED BY\n", paste(tempo.output$post, collapse = " "))
+        warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        if( ! (is.null(add) | is.null(tempo.output$ini))){
+            if(grepl(x = add, pattern = paste(tempo.output$ini, collapse = "|"))){
+                tempo.cat <- paste0("ERROR IN ", function.name, "\nDETECTION OF COLUMN NAMES OF data1 IN THE add ARGUMENT STRING, THAT CORRESPOND TO RESERVED STRINGS FOR ", function.name, "\nCOLUMN NAMES HAVE TO BE CHANGED\nTHE PROBLEMATIC COLUMN NAMES ARE SOME OF THESE NAMES:\n", paste(tempo.output$ini, collapse = " "), "\nIN THE DATA FRAME OF data1 AND IN THE STRING OF add ARGUMENT, TRY TO REPLACE NAMES BY:\n", paste(tempo.output$post, collapse = " "), "\n\nFOR INFORMATION, THE RESERVED WORDS ARE:\n", paste(reserved.words, collapse = "\n"))
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+            }
+        }
+    }
+    if( ! (is.null(add))){
+        if(any(sapply(X = arg.names, FUN = grepl, x = add), na.rm = TRUE)){
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") NAMES OF ", function.name, " ARGUMENTS DETECTED IN THE add STRING:\n", paste(arg.names[sapply(X = arg.names, FUN = grepl, x = add)], collapse = "\n"), "\nRISK OF WRONG OBJECT USAGE INSIDE ", function.name)
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        }
+    }
+    # end reserved word checking
+    # verif of add
+    if( ! is.null(add)){
+        if( ! grepl(pattern = "^\\s*\\+", add)){ # check that the add string start by +
+            tempo.cat <- paste0("ERROR IN ", function.name, "\nadd ARGUMENT MUST START WITH \"+\": ", paste(unique(add), collapse = " "))
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+        }else if( ! grepl(pattern = "(ggplot2|lemon)\\s*::", add)){ #
+            tempo.cat <- paste0("ERROR IN ", function.name, "\nFOR EASIER FUNCTION DETECTION, add ARGUMENT MUST CONTAIN \"ggplot2::\" OR \"lemon::\" IN FRONT OF EACH GGPLOT2 FUNCTION: ", paste(unique(add), collapse = " "))
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+        }else if( ! grepl(pattern = ")\\s*$", add)){ # check that the add string finished by )
+            tempo.cat <- paste0("ERROR IN ", function.name, "\nadd ARGUMENT MUST FINISH BY \")\": ", paste(unique(add), collapse = " "))
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+        }
+    }
+    # end verif of add
+    # management of add containing facet
+    facet.categ <- NULL
+    if( ! is.null(add)){
+        facet.check <- TRUE
+        tempo <- unlist(strsplit(x = add, split = "\\s*\\+\\s*(ggplot2|lemon)\\s*::\\s*")) #
+        tempo <- sub(x = tempo, pattern = "^facet_wrap", replacement = "ggplot2::facet_wrap")
+        tempo <- sub(x = tempo, pattern = "^facet_grid", replacement = "ggplot2::facet_grid")
+        tempo <- sub(x = tempo, pattern = "^facet_rep", replacement = "lemon::facet_rep")
+        if(any(grepl(x = tempo, pattern = "ggplot2::facet_wrap|lemon::facet_rep_wrap"), na.rm = TRUE)){
+            tempo1 <- suppressWarnings(eval(parse(text = tempo[grepl(x = tempo, pattern = "ggplot2::facet_wrap|lemon::facet_rep_wrap")])))
+            facet.categ <- names(tempo1$params$facets)
+            tempo.text <- "facet_wrap OR facet_rep_wrap"
+            facet.check <- FALSE
+        }else if(grepl(x = add, pattern = "ggplot2::facet_grid|lemon::facet_rep_grid")){
+            tempo1 <- suppressWarnings(eval(parse(text = tempo[grepl(x = tempo, pattern = "ggplot2::facet_grid|lemon::facet_rep_grid")])))
+            facet.categ <- c(names(tempo1$params$rows), names(tempo1$params$cols))
+            tempo.text <- "facet_grid OR facet_rep_grid"
+            facet.check <- FALSE
+        }
+        if(facet.check == FALSE & ! all(facet.categ %in% names(data1))){ # WARNING: all(facet.categ %in% names(data1)) is TRUE when facet.categ is NULL # all() without na.rm -> ok because facet.categ cannot be NA (tested above)
+            tempo.cat <- paste0("ERROR IN ", function.name, "\nDETECTION OF \"", tempo.text, "\" STRING IN THE add ARGUMENT BUT PROBLEM OF VARIABLE DETECTION (COLUMN NAMES OF data1)\nTHE DETECTED VARIABLES ARE:\n", paste(facet.categ, collapse = " "), "\nTHE data1 COLUMN NAMES ARE:\n", paste(names(data1), collapse = " "), "\nPLEASE REWRITE THE add STRING AND RERUN")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+        }
+    }
+    # end management of add containing facet
+    # conversion of categ columns in data1 into factors
+    for(i1 in 1:length(categ)){
+        tempo1 <- fun_check(data = data1[, categ[i1]], data.name = paste0("categ NUMBER ", i1, " OF data1"), class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name)
+        tempo2 <- fun_check(data = data1[, categ[i1]], data.name = paste0("categ NUMBER ", i1, " OF data1"), class = "factor", na.contain = TRUE, fun.name = function.name)
+        if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+            tempo.cat <- paste0("ERROR IN ", function.name, "\n", paste0("categ NUMBER ", i1, " OF data1"), " MUST BE A FACTOR OR CHARACTER VECTOR")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+        }else if(tempo1$problem == FALSE){ # character vector
+            if(box.alpha != 0){
+                warn.count <- warn.count + 1
+                tempo.warn <- paste0("(", warn.count,") IN categ NUMBER ", i1, " IN data1, THE CHARACTER COLUMN HAS BEEN CONVERTED TO FACTOR, WITH LEVELS ACCORDING TO THE ALPHABETICAL ORDER")
+                warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+            }
+        }
+        data1[, categ[i1]] <- factor(data1[, categ[i1]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
+    }
+    # OK: all the categ columns of data1 are factors from here
+    # end conversion of categ columns in data1 into factors
+    
+    
+    
+    # management of log scale and Inf removal
+    if(any(( ! is.finite(data1[, y])) & ( ! is.na(data1[, y])))){ # is.finite also detects NA: ( ! is.finite(data1[, y])) & ( ! is.na(data1[, y])) detects only Inf  # normally no NA with is.finite0() and is.na()
+        warn.count <- warn.count + 1
+        tempo.warn <- paste0("(", warn.count,") PRESENCE OF -Inf OR Inf VALUES IN THE ", y, " COLUMN OF THE data1 ARGUMENT AND CORRESPONDING ROWS REMOVED (SEE $removed.row.nb AND $removed.rows)")
+        warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+    }
+    data1.ini <- data1 # strictly identical to data1 except that in data1 y is log converted if and only if y.log != "no"
+    if(y.log != "no"){
+        tempo1 <- ! is.finite(data1[, y]) # where are initial NA and Inf
+        data1[, y] <- suppressWarnings(get(y.log)(data1[, y]))# no env = sys.nframe(), inherit = FALSE in get() because look for function in the classical scope
+        if(any( ! (tempo1 | is.finite(data1[, y])))){ # normally no NA with is.finite
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") LOG CONVERSION INTRODUCED -Inf OR Inf OR NaN VALUES IN THE ", y, " COLUMN OF THE data1 ARGUMENT AND CORRESPONDING ROWS REMOVED (SEE $removed.row.nb AND $removed.rows)")
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        }
+    }
+    # Inf removal
+    if(any(( ! is.finite(data1[, y])) & ( ! is.na(data1[, y])))){ # is.finite also detects NA: ( ! is.finite(data1[, y])) & ( ! is.na(data1[, y])) detects only Inf # normally no NA with is.finite
+        removed.row.nb <- which(( ! is.finite(data1[, y])) & ( ! is.na(data1[, y])))
+        removed.rows <- data1.ini[removed.row.nb, ] # here data1.ini used to have the y = O rows that will be removed because of Inf creation after log transformation
+        data1 <- data1[-removed.row.nb, ] #
+        data1.ini <- data1.ini[-removed.row.nb, ] #
+    }else{
+        removed.row.nb <- NULL
+        removed.rows <- data.frame(stringsAsFactors = FALSE)
+    }
+    # From here, data1 and data.ini have no more Inf
+    # end Inf removal
+    if(y.log != "no" & ! is.null(y.lim)){
+        if(any(y.lim <= 0)){ # any() without na.rm -> ok because y.lim cannot be NA (tested above)
+            tempo.cat <- paste0("ERROR IN ", function.name, "\ny.lim ARGUMENT CANNOT HAVE ZERO OR NEGATIVE VALUES WITH THE y.log ARGUMENT SET TO ", y.log, ":\n", paste(y.lim, collapse = " "))
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+        }else if(any( ! is.finite(if(y.log == "log10"){log10(y.lim)}else{log2(y.lim)}))){ # normally no NA with is.finite
+            tempo.cat <- paste0("ERROR IN ", function.name, "\ny.lim ARGUMENT RETURNS INF/NA WITH THE y.log ARGUMENT SET TO ", y.log, "\nAS SCALE COMPUTATION IS ", ifelse(y.log == "log10", "log10", "log2"), ":\n", paste(if(y.log == "log10"){log10(y.lim)}else{log2(y.lim)}, collapse = " "))
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+        }
+    }
+    if(y.log != "no" & y.include.zero == TRUE){
+        warn.count <- warn.count + 1
+        tempo.warn <- paste0("(", warn.count,") y.log ARGUMENT SET TO ", y.log, " AND y.include.zero ARGUMENT SET TO TRUE -> y.include.zero ARGUMENT RESET TO FALSE BECAUSE 0 VALUE CANNOT BE REPRESENTED IN LOG SCALE")
+        warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        y.include.zero <- FALSE
+    }
+    if(y.log != "no" & vertical == FALSE){
+        vertical <- TRUE
+        warn.count <- warn.count + 1
+        tempo.warn <- paste0("(", warn.count,") BECAUSE OF A BUG IN ggplot2, CANNOT FLIP BOXES HORIZONTALLY WITH A Y.LOG SCALE -> vertical ARGUMENT RESET TO TRUE")
+        warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+    }
+    # end management of log scale and Inf removal
+    # na detection and removal (done now to be sure of the correct length of categ)
+    column.check <- unique(c(y, categ, if( ! is.null(dot.color) & ! is.null(dot.categ)){dot.categ}, if( ! is.null(facet.categ)){facet.categ})) # dot.categ because can be a 3rd column of data1, categ.color and dot.color will be tested later
+    if(any(is.na(data1[, column.check]))){ # data1 used here instead of data1.ini in case of new NaN created by log conversion (neg values) # normally no NA with is.na
+        warn.count <- warn.count + 1
+        tempo.warn <- paste0("(", warn.count,") NA DETECTED IN COLUMNS OF data1 AND CORRESPONDING ROWS REMOVED (SEE $removed.row.nb AND $removed.rows)")
+        warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        for(i2 in 1:length(column.check)){
+            if(any(is.na(data1[, column.check[i2]]))){ # normally no NA with is.na
+                tempo.warn <- paste0("NA REMOVAL DUE TO COLUMN ", column.check[i2], " OF data1")
+                warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n", tempo.warn)))
+            }
+        }
+        tempo <- unique(unlist(lapply(lapply(c(data1[column.check]), FUN = is.na), FUN = which)))
+        removed.row.nb <- c(removed.row.nb, tempo) # removed.row.nb created to remove Inf
+        removed.rows <- rbind(removed.rows, data1.ini[tempo, ], stringsAsFactors = FALSE) # here data1.ini used to have the non NA rows that will be removed because of NAN creation after log transformation (neg values for instance)
+        column.check <- column.check[ ! column.check == y] # remove y to keep quali columns
+        if(length(tempo) != 0){
+            data1 <- data1[-tempo, ] # WARNING tempo here and not removed.row.nb because the latter contain more numbers thant the former
+            data1.ini <- data1.ini[-tempo, ] # WARNING tempo here and not removed.row.nb because the latter contain more numbers than the former
+            for(i3 in 1:length(column.check)){
+                if(any( ! unique(removed.rows[, column.check[i3]]) %in% unique(data1[, column.check[i3]]), na.rm = TRUE)){
+                    warn.count <- warn.count + 1
+                    tempo.warn <- paste0("(", warn.count,") IN COLUMN ", column.check[i3], " OF data1, THE FOLLOWING CLASSES HAVE DISAPPEARED AFTER NA/Inf REMOVAL (IF COLUMN USED IN THE PLOT, THIS CLASS WILL NOT BE DISPLAYED):\n", paste(unique(removed.rows[, column.check[i3]])[ ! unique(removed.rows[, column.check[i3]]) %in% unique(data1[, column.check[i3]])], collapse = " "))
+                    warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                }
+            }
+        }
+        count.categ <- 0
+        for(i2 in 1:length(column.check)){
+            if(column.check[i2] %in% categ){
+                count.categ <- count.categ + 1
+            }
+            if(column.check[i2] == categ[count.categ]){
+                categ.class.order[count.categ] <- list(levels(data1[, column.check[i2]])[levels(data1[, column.check[i2]]) %in% unique(data1[, column.check[i2]])]) # remove the absent color in the character vector
+                data1[, column.check[i2]] <- factor(as.character(data1[, column.check[i2]]), levels = unique(categ.class.order[[count.categ]]))
+            }
+            if( ! is.null(dot.color) & ! is.null(dot.categ)){ # reminder : dot.categ cannot be a column name of categ anymore (because in that case dot.categ name is changed into "..._DOT"
+                if(column.check[i2] == dot.categ){
+                    dot.categ.class.order <- levels(data1[, column.check[i2]])[levels(data1[, column.check[i2]]) %in% unique(data1[, column.check[i2]])] # remove the absent color in the character vector
+                    data1[, column.check[i2]] <- factor(as.character(data1[, column.check[i2]]), levels = unique(dot.categ.class.order))
+                }
+            }
+            if(column.check[i2] %in% facet.categ){ # works if facet.categ == NULL this method should keep the order of levels when removing some levels
+                tempo.levels <- levels(data1[, column.check[i2]])[levels(data1[, column.check[i2]]) %in% unique(as.character(data1[, column.check[i2]]))]
+                data1[, column.check[i2]] <- factor(as.character(data1[, column.check[i2]]), levels = tempo.levels)
+            }
+        }
+    }
+    # end na detection and removal (done now to be sure of the correct length of categ)
+    # From here, data1 and data.ini have no more NA or NaN in y, categ, dot.categ (if dot.color != NULL) and facet.categ
+    
+    
+    
+    if( ! is.null(categ.class.order)){
+        if(length(categ.class.order) != length(categ)){
+            tempo.cat <- paste0("ERROR IN ", function.name, "\ncateg.class.order ARGUMENT MUST BE A LIST OF LENGTH EQUAL TO LENGTH OF categ\nHERE IT IS LENGTH: ", length(categ.class.order), " VERSUS ", length(categ))
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+        }else{
+            for(i3 in 1:length(categ.class.order)){
+                if(is.null(categ.class.order[[i3]])){
+                    warn.count <- warn.count + 1
+                    tempo.warn <- paste0("(", warn.count,") THE categ.class.order COMPARTMENT ", i3, " IS NULL. ALPHABETICAL ORDER WILL BE APPLIED")
+                    warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                    data1[, categ[i3]] <- factor(as.character(data1[, categ[i3]])) # if already a factor, change nothing, if characters, levels according to alphabetical order
+                    categ.class.order[[i3]] <- levels(data1[, categ[i3]]) # character vector that will be used later
+                }else{
+                    tempo <- fun_check(data = categ.class.order[[i3]], data.name = paste0("COMPARTMENT ", i3 , " OF categ.class.order ARGUMENT"), class = "vector", mode = "character", length = length(levels(data1[, categ[i3]])), fun.name = function.name) # length(data1[, categ[i1]) -> if data1[, categ[i1] was initially character vector, then conversion as factor after the NA removal, thus class number ok. If data1[, categ[i1] was initially factor, no modification after the NA removal, thus class number ok
+                    if(tempo$problem == TRUE){
+                        stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n"), call. = FALSE) # == in stop() to be able to add several messages between ==
+                    }
+                }
+                if(any(duplicated(categ.class.order[[i3]]), na.rm = TRUE)){
+                    tempo.cat <- paste0("ERROR IN ", function.name, "\nCOMPARTMENT ", i3, " OF categ.class.order ARGUMENT CANNOT HAVE DUPLICATED CLASSES: ", paste(categ.class.order[[i3]], collapse = " "))
+                    stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+                }else if( ! (all(categ.class.order[[i3]] %in% unique(data1[, categ[i3]]), na.rm = TRUE) & all(unique(data1[, categ[i3]]) %in% categ.class.order[[i3]], na.rm = TRUE))){
+                    tempo.cat <- paste0("ERROR IN ", function.name, "\nCOMPARTMENT ", i3, " OF categ.class.order ARGUMENT MUST BE CLASSES OF ELEMENT ", i3, " OF categ ARGUMENT\nHERE IT IS:\n", paste(categ.class.order[[i3]], collapse = " "), "\nFOR COMPARTMENT ", i3, " OF categ.class.order AND IT IS:\n", paste(unique(data1[, categ[i3]]), collapse = " "), "\nFOR COLUMN ", categ[i3], " OF data1")
+                    stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+                }else{
+                    data1[, categ[i3]] <- factor(data1[, categ[i3]], levels = categ.class.order[[i3]]) # reorder the factor
+                    
+                }
+                names(categ.class.order)[i3] <- categ[i3]
+            }
+        }
+    }else{
+        categ.class.order <- vector("list", length = length(categ))
+        tempo.categ.class.order <- NULL
+        for(i2 in 1:length(categ.class.order)){
+            categ.class.order[[i2]] <- levels(data1[, categ[i2]])
+            names(categ.class.order)[i2] <- categ[i2]
+            tempo.categ.class.order <- c(tempo.categ.class.order, ifelse(i2 != 1, "\n", ""), categ.class.order[[i2]])
+        }
+        if(box.alpha != 0){
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") THE categ.class.order SETTING IS NULL. ALPHABETICAL ORDER WILL BE APPLIED FOR BOX ORDERING:\n", paste(tempo.categ.class.order, collapse = " "))
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        }
+    }
+    # categ.class.order not NULL anymore (list)
+    if(is.null(box.legend.name) & box.alpha != 0){
+        warn.count <- warn.count + 1
+        tempo.warn <- paste0("(", warn.count,") THE box.legend.name SETTING IS NULL. NAMES OF categ WILL BE USED: ", paste(categ, collapse = " "))
+        warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        box.legend.name <- categ[length(categ)] # if only categ1, then legend name of categ1, if length(categ) == 2L, then legend name of categ2
+    }
+    # box.legend.name not NULL anymore (character string)
+    # management of categ.color
+    if( ! is.null(categ.color)){
+        # check the nature of color
+        # integer colors into gg_palette
+        tempo.check.color <- fun_check(data = categ.color, class = "integer", double.as.integer.allowed = TRUE, na.contain = TRUE, fun.name = function.name)$problem
+        if(tempo.check.color == FALSE){
+            # convert integers into colors
+            categ.color <- fun_gg_palette(max(categ.color, na.rm = TRUE))[categ.color]
+        }
+        # end integer colors into gg_palette
+        if( ! (all(categ.color %in% colors() | grepl(pattern = "^#", categ.color)))){ # check that all strings of low.color start by #, # all() without na.rm -> ok because categ.color cannot be NA (tested above)
+            tempo.cat <- paste0("ERROR IN ", function.name, "\ncateg.color ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # AND/OR COLOR NAMES GIVEN BY colors(): ", paste(unique(categ.color), collapse = " "))
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+        }
+        if(any(is.na(categ.color)) & box.alpha != 0){ # normally no NA with is.na
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") categ.color ARGUMENT CONTAINS NA")
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        }
+        # end check the nature of color
+        # check the length of color
+        categ.len <- length(categ) # if only categ1, then colors for classes of categ1, if length(categ) == 2L, then colors for classes of categ2
+        if(length(data1[, categ[categ.len]]) == length(levels(data1[, categ[categ.len]])) & length(categ.color) == length(data1[, categ[categ.len]])){
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") THE NUMBER OF CLASSES OF THE COLUMN ", categ[categ.len], " THE NUMBER OF ROWS OF THIS COLUMN AND THE NUMBER OF COLORS OF THE categ.color ARGUMENT ARE ALL EQUAL. BOX COLORS WILL BE ATTRIBUTED ACCORDING THE LEVELS OF ", categ[categ.len], ", NOT ACCORDING TO THE ROWS OF ", categ[categ.len])
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        }
+        if(length(categ.color) == length(levels(data1[, categ[categ.len]]))){ # here length(categ.color) is equal to the different number of categ
+            # data1[, categ[categ.len]] <- factor(data1[, categ[categ.len]]) # not required because sure that is is a factor
+            data1 <- data.frame(data1, categ.color = data1[, categ[categ.len]], stringsAsFactors = TRUE)  # no need stringsAsFactors here for stat.nolog as factors remain factors
+            data1$categ.color <- factor(data1$categ.color, labels = categ.color) # replace the characters of data1[, categ[categ.len]] put in the categ.color column by the categ.color (can be write like this because categ.color is length of levels of data1[, categ[categ.len]])
+            if(box.alpha != 0){
+                warn.count <- warn.count + 1
+                tempo.warn <- paste0("(", warn.count,") IN ", categ[categ.len], " OF categ ARGUMENT, THE FOLLOWING COLORS:\n", paste(categ.color, collapse = " "), "\nHAVE BEEN ATTRIBUTED TO THESE CLASSES:\n", paste(levels(factor(data1[, categ[categ.len]])), collapse = " "))
+                warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+            }
+        }else if(length(categ.color) == length(data1[, categ[categ.len]])){# here length(categ.color) is equal to nrow(data1) -> Modif to have length(categ.color) equal to the different number of categ (length(categ.color) == length(levels(data1[, categ[categ.len]])))
+            data1 <- data.frame(data1, categ.color = categ.color, stringsAsFactors = TRUE)
+            tempo.check <- unique(data1[ , c(categ[categ.len], "categ.color")])
+            if( ! (nrow(tempo.check) == length(unique(categ.color)) & nrow(tempo.check) == length(unique(data1[ , categ[categ.len]])))){
+                tempo.cat <- paste0("ERROR IN ", function.name, "\ncateg.color ARGUMENT HAS THE LENGTH OF data1 ROW NUMBER\nBUT IS INCORRECTLY ASSOCIATED TO EACH CLASS OF categ ", categ[categ.len], ":\n", paste(unique(mapply(FUN = "paste", data1[ ,categ[categ.len]], data1[ ,"categ.color"])), collapse = "\n"))
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+            }else{
+                # data1[, categ[categ.len]] <- factor(data1[, categ[categ.len]]) # not required because sure that is is a factor
+                categ.color <- unique(data1$categ.color[order(data1[, categ[categ.len]])]) # Modif to have length(categ.color) equal to the different number of categ (length(categ.color) == length(levels(data1[, categ[categ.len]])))
+                if(box.alpha != 0){
+                    warn.count <- warn.count + 1
+                    tempo.warn <- paste0("(", warn.count,") categ.color ARGUMENT HAS THE LENGTH OF data1 ROW NUMBER\nCOLORS HAVE BEEN RESPECTIVELY ASSOCIATED TO EACH CLASS OF categ ", categ[categ.len], " AS:\n", paste(levels(factor(data1[, categ[categ.len]])), collapse = " "), "\n", paste(categ.color, collapse = " "))
+                    warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                }
+            }
+        }else if(length(categ.color) == 1L){
+            # data1[, categ[categ.len]] <- factor(data1[, categ[categ.len]]) # not required because sure that is is a factor
+            data1 <- data.frame(data1, categ.color = categ.color, stringsAsFactors = TRUE)
+            categ.color <- rep(categ.color, length(levels(data1[, categ[categ.len]])))
+            if(box.alpha != 0){
+                warn.count <- warn.count + 1
+                tempo.warn <- paste0("(", warn.count,") categ.color ARGUMENT HAS LENGTH 1, MEANING THAT ALL THE DIFFERENT CLASSES OF ", categ[categ.len], "\n", paste(levels(factor(data1[, categ[categ.len]])), collapse = " "), "\nWILL HAVE THE SAME COLOR\n", paste(categ.color, collapse = " "))
+                warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+            }
+        }else{
+            tempo.cat <- paste0("ERROR IN ", function.name, "\ncateg.color ARGUMENT MUST BE (1) LENGTH 1, OR (2) THE LENGTH OF data1 NROWS AFTER NA/Inf REMOVAL, OR (3) THE LENGTH OF THE CLASSES IN THE categ ", categ[categ.len], " COLUMN. HERE IT IS COLOR LENGTH ", length(categ.color), " VERSUS CATEG LENGTH ", length(data1[, categ[categ.len]]), " AND CATEG CLASS LENGTH ", length(unique(data1[, categ[categ.len]])), "\nPRESENCE OF NA/Inf COULD BE THE PROBLEM")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+        }
+    }else{
+        categ.len <- length(categ) # if only categ1, then colors for classes of categ1, if length(categ) == 2L, then colors for classes of categ2
+        # data1[, categ[categ.len]] <- factor(data1[, categ[categ.len]]) # not required because sure that is is a factor
+        categ.color <- fun_gg_palette(length(levels(data1[, categ[categ.len]])))
+        data1 <- data.frame(data1, categ.color = data1[, categ[categ.len]], stringsAsFactors = TRUE)
+        data1$categ.color <- factor(data1$categ.color, labels = categ.color)  # replace the characters of data1[, categ[categ.len]] put in the categ.color column by the categ.color (can be write like this because categ.color is length of levels of data1[, categ[categ.len]])
+        if(box.alpha != 0){
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") NULL categ.color ARGUMENT -> COLORS RESPECTIVELY ATTRIBUTED TO EACH CLASS OF ", categ[categ.len], " IN data1:\n", paste(categ.color, collapse = " "), "\n", paste(levels(data1[, categ[categ.len]]), collapse = " "))
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        }
+    }
+    # categ.color not NULL anymore
+    categ.color <- as.character(categ.color)
+    # categ.color is a character string representing the diff classes
+    data1$categ.color <- factor(data1$categ.color, levels = unique(categ.color)) # ok because if categ.color is a character string, the order make class 1, class 2, etc. unique() because no duplicates allowed
+    # data1$categ.color is a factor with order of levels -> categ.color
+    # end management of categ.color
+    # management of dot.color
+    if( ! is.null(dot.color)){
+        # optional legend of dot colors
+        if( ! is.null(dot.categ)){
+            ini.dot.categ <- dot.categ
+            if( ! dot.categ %in% names(data1)){ # no need to use all() because length(dot.categ) = 1
+                tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.categ ARGUMENT MUST BE A COLUMN NAME OF data1. HERE IT IS:\n", dot.categ)
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+            }else if(dot.categ %in% categ){ # no need to use all() because length(dot.categ) = 1. Do not use dot.categ %in% categ[length(categ)] -> error
+                # management of dot legend if dot.categ %in% categ (because legends with the same name are joined in ggplot2) 
+                warn.count <- warn.count + 1
+                tempo.warn <- paste0("(", warn.count,") THE COLUMN NAME OF data1 INDICATED IN THE dot.categ ARGUMENT (", dot.categ, ") HAS BEEN REPLACED BY ", paste0(dot.categ, "_DOT"), " TO AVOID MERGED LEGEND BY GGPLOT2")
+                warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                data1 <- data.frame(data1, dot.categ = data1[, dot.categ], stringsAsFactors = TRUE) # dot.categ is not a column name of data1 (checked above with reserved words)
+                dot.categ <- paste0(dot.categ, "_DOT")
+                names(data1)[names(data1) == "dot.categ"] <- dot.categ # paste0(dot.categ, "_DOT") is not a column name of data1 (checked above with reserved words)
+                # tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.categ ARGUMENT CANNOT BE A COLUMN NAME OF data1 ALREADY SPECIFIED IN THE categ ARGUMENT:\n", dot.categ, "\nINDEED, dot.categ ARGUMENT IS MADE TO HAVE MULTIPLE DOT COLORS NOT RELATED TO THE BOXPLOT CATEGORIES")
+                # stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n"), call. = FALSE) # == in stop() to be able to add several messages between ==
+            }
+            tempo1 <- fun_check(data = data1[, dot.categ], data.name = paste0(dot.categ, " COLUMN OF data1"), class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name)
+            tempo2 <- fun_check(data = data1[, dot.categ], data.name = paste0(dot.categ, " COLUMN OF data1"), class = "factor", na.contain = TRUE, fun.name = function.name)
+            if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+                tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.categ COLUMN MUST BE A FACTOR OR CHARACTER VECTOR") #
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+            }
+            data1[, dot.categ] <- factor(data1[, dot.categ]) # if already a factor, change nothing, if characters, levels according to alphabetical order
+            # dot.categ column of data1 is factor from here
+            if( ! is.null(dot.categ.class.order)){
+                if(any(duplicated(dot.categ.class.order), na.rm = TRUE)){
+                    tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.categ.class.order ARGUMENT CANNOT HAVE DUPLICATED CLASSES: ", paste(dot.categ.class.order, collapse = " "))
+                    stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+                }else if( ! (all(dot.categ.class.order %in% levels(data1[, dot.categ])) & all(levels(data1[, dot.categ]) %in% dot.categ.class.order, na.rm = TRUE))){
+                    tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.categ.class.order ARGUMENT MUST BE CLASSES OF dot.categ ARGUMENT\nHERE IT IS:\n", paste(dot.categ.class.order, collapse = " "), "\nFOR dot.categ.class.order AND IT IS:\n", paste(levels(data1[, dot.categ]), collapse = " "), "\nFOR dot.categ COLUMN (", ini.dot.categ, ") OF data1")
+                    stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+                }else{
+                    data1[, dot.categ] <- factor(data1[, dot.categ], levels = dot.categ.class.order) # reorder the factor
+                }
+            }else{
+                if(all(dot.color == "same") & length(dot.color)== 1L){ # all() without na.rm -> ok because dot.color cannot be NA (tested above)
+                    dot.categ.class.order <- unlist(categ.class.order[length(categ)])
+                    data1[, dot.categ] <- factor(data1[, dot.categ], levels = dot.categ.class.order) # reorder the factor
+                    warn.count <- warn.count + 1
+                    tempo.warn <- paste0("(", warn.count,") THE dot.categ.class.order SETTING IS NULL AND dot.color IS \"same\". ORDER OF categ.class.order WILL BE APPLIED FOR LEGEND DISPLAY: ", paste(dot.categ.class.order, collapse = " "))
+                    warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                }else{
+                    dot.categ.class.order <- sort(levels(data1[, dot.categ]))
+                    data1[, dot.categ] <- factor(data1[, dot.categ], levels = dot.categ.class.order) # reorder the factor
+                    warn.count <- warn.count + 1
+                    tempo.warn <- paste0("(", warn.count,") THE dot.categ.class.order SETTING IS NULL. ALPHABETICAL ORDER WILL BE APPLIED FOR LEGEND DISPLAY: ", paste(dot.categ.class.order, collapse = " "))
+                    warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                }
+            }
+            # dot.categ.class.order not NULL anymore (character string) if dot.categ is not NULL
+            if(all(dot.color == "same") & length(dot.color)== 1L){ # all() without na.rm -> ok because dot.color cannot be NA (tested above)
+                if( ! identical(ini.dot.categ, categ[length(categ)])){
+                    tempo.cat <- paste0("ERROR IN ", function.name, "\nWHEN dot.color ARGUMENT IS \"same\", THE COLUMN NAME IN dot.categ ARGUMENT MUST BE IDENTICAL TO THE LAST COLUMN NAME IN categ ARGUMENT. HERE IT IS:\ndot.categ: ", paste(ini.dot.categ, collapse = " "), "\ncateg: ", paste(categ, collapse = " "))
+                    stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+                }else if( ! fun_comp_1d(unlist(categ.class.order[length(categ)]), dot.categ.class.order)$identical.content){
+                    tempo.cat <- paste0("ERROR IN ", function.name, "\nWHEN dot.color ARGUMENT IS \"same\",\nLAST COMPARTMENT OF categ.class.order ARGUMENT AND dot.categ.class.order ARGUMENT CANNOT BE DIFFERENT:\nLAST COMPARTMENT OF categ.class.order: ", paste(unlist(categ.class.order[length(categ)]), collapse = " "), "\ndot.categ.class.order: ", paste(dot.categ.class.order, collapse = " "))
+                    stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+                }
+            }
+            for(i3 in 1:length(categ)){
+                if(identical(categ[i3], ini.dot.categ) & ! identical(unlist(categ.class.order[i3]), dot.categ.class.order) & identical(sort(unlist(categ.class.order[i3])), sort(dot.categ.class.order))){
+                    warn.count <- warn.count + 1
+                    tempo.warn <- paste0("(", warn.count,") THE dot.categ ARGUMENT SETTING IS PRESENT IN THE categ ARGUMENT SETTING, BUT ORDER OF THE CLASSES IS NOT THE SAME:\ncateg.class.order: ", paste(unlist(categ.class.order[i3]), collapse = " "), "\ndot.categ.class.order: ", paste(dot.categ.class.order, collapse = " "), "\nNOTE THAT ORDER OF categ.class.order IS THE ONE USED FOR THE AXIS REPRESENTATION")
+                    warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                }
+            }
+            if(is.null(dot.legend.name)){
+                dot.legend.name <- if(ini.dot.categ %in% categ[length(categ)]){dot.categ}else{ini.dot.categ} #
+                warn.count <- warn.count + 1
+                tempo.warn <- paste0("(", warn.count,") THE dot.legend.name SETTING IS NULL -> ", dot.legend.name, " WILL BE USED AS LEGEND TITLE OF DOTS")
+                warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+            }
+            # dot.legend.name not NULL anymore (character string)
+        }else{
+            if( ! is.null(dot.categ.class.order)){
+                warn.count <- warn.count + 1
+                tempo.warn <- paste0("(", warn.count,") THE dot.categ.class.order ARGUMENT IS NOT NULL, BUT IS THE dot.categ ARGUMENT\n-> dot.categ.class.order NOT CONSIDERED AS NO LEGEND WILL BE DRAWN")
+                warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+            }
+            # But dot.categ.class.order will be converted to NULL below (not now)
+        }
+        # end optional legend of dot colors
+        # check the nature of color
+        # integer colors into gg_palette
+        tempo.check.color <- fun_check(data = dot.color, class = "integer", double.as.integer.allowed = TRUE, na.contain = TRUE, fun.name = function.name)$problem
+        if(tempo.check.color == FALSE){
+            # convert integers into colors
+            dot.color <- fun_gg_palette(max(dot.color, na.rm = TRUE))[dot.color]
+        }
+        # end integer colors into gg_palette
+        if(all(dot.color == "same") & length(dot.color)== 1L){# all() without na.rm -> ok because dot.color cannot be NA (tested above)
+            dot.color <- categ.color # same color of the dots as the corresponding box color
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") dot.color ARGUMENT HAS BEEN SET TO \"same\"\nTHUS, DOTS WILL HAVE THE SAME COLORS AS THE CORRESPONDING BOXPLOT")
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        }else if( ! (all(dot.color %in% colors() | grepl(pattern = "^#", dot.color)))){ # check that all strings of low.color start by #, # all() without na.rm -> ok because dot.color cannot be NA (tested above)
+            tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.color ARGUMENT MUST BE (1) A HEXADECIMAL COLOR VECTOR STARTING BY #, OR (2) COLOR NAMES GIVEN BY colors(), OR (3) INTEGERS, OR THE STRING \"same\"\nHERE IT IS: ", paste(unique(dot.color), collapse = " "))
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+        }
+        if(any(is.na(dot.color))){ # normally no NA with is.finite
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") dot.color ARGUMENT CONTAINS NA")
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        }
+        # end check the nature of color
+        # check the length of color
+        if( ! is.null(dot.categ)){
+            # optional legend of dot colors
+            if(length(data1[, dot.categ]) == length(levels(data1[, dot.categ])) & length(dot.color) == length(data1[, dot.categ])){
+                warn.count <- warn.count + 1
+                tempo.warn <- paste0("(", warn.count,") THE NUMBER OF CLASSES OF THE COLUMN ", dot.categ, " THE NUMBER OF ROWS OF THIS COLUMN AND THE NUMBER OF COLORS OF THE dot.color ARGUMENT ARE ALL EQUAL. DOT COLORS WILL BE ATTRIBUTED ACCORDING THE LEVELS OF ", dot.categ, ", NOT ACCORDING TO THE ROWS OF ", dot.categ)
+                warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+            }
+            if(length(dot.color) > 1 & ! (length(dot.color) == length(unique(data1[, dot.categ])) | length(dot.color) == length(data1[, dot.categ]))){
+                tempo.cat <- paste0("ERROR IN ", function.name, "\nWHEN LENGTH OF THE dot.color ARGUMENT IS MORE THAN 1, IT MUST BE EQUAL TO THE NUMBER OF 1) ROWS OR 2) LEVELS OF dot.categ COLUMN (", dot.categ, "):\ndot.color: ", paste(dot.color, collapse = " "), "\ndot.categ LEVELS: ", paste(levels(data1[, dot.categ]), collapse = " "))
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+            }else if(length(dot.color) > 1 & length(dot.color) == length(unique(data1[, dot.categ]))){
+                data1 <- data.frame(data1, dot.color = data1[, dot.categ], stringsAsFactors = TRUE)
+                data1$dot.color <- factor(data1$dot.color, labels = dot.color) # do not use labels = unique(dot.color). Otherwise, we can have green1 green2 when dot.color is c("green", "green")
+            }else if(length(dot.color) > 1 & length(dot.color) == length(data1[, dot.categ])){
+                data1 <- data.frame(data1, dot.color = dot.color, stringsAsFactors = TRUE)
+            }else if(length(dot.color)== 1L & length(dot.categ.class.order) > 1){ # to deal with single color
+                data1 <- data.frame(data1, dot.color = dot.color, stringsAsFactors = TRUE)
+            }
+            dot.color <- as.character(unique(data1$dot.color[order(data1[, dot.categ])])) # reorder the dot.color character vector
+            if(length(dot.color)== 1L & length(dot.categ.class.order) > 1){ # to deal with single color
+                dot.color <- rep(dot.color, length(dot.categ.class.order))
+            }
+            tempo.check <- unique(data1[ , c(dot.categ, "dot.color")])
+            if(length(unique(data1[ , "dot.color"])) > 1 & ( ! (nrow(tempo.check) == length(unique(data1[ , "dot.color"])) & nrow(tempo.check) == length(unique(data1[ , dot.categ]))))){ # length(unique(data1[ , "dot.color"])) > 1 because if only one color, can be attributed to each class of dot.categ
+                tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.color ARGUMENT IS INCORRECTLY ASSOCIATED TO EACH CLASS OF dot.categ (", dot.categ, ") COLUMN:\n", paste(unique(mapply(FUN = "paste", data1[ , dot.categ], data1[ ,"dot.color"])), collapse = "\n"))
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+            }else{
+                warn.count <- warn.count + 1
+                tempo.warn <- paste0("(", warn.count,") IN dot.categ ARGUMENT (", ini.dot.categ, "), THE FOLLOWING COLORS OF DOTS:\n", paste(dot.color, collapse = " "), "\nHAVE BEEN ATTRIBUTED TO THESE CLASSES:\n", paste(levels(data1[, dot.categ]), collapse = " "))
+                warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+            }
+            # dot.color is a character string representing the diff classes of dot.categ
+            # data1$dot.color is a factor with order of levels -> dot.categ
+            # end optional legend of dot colors
+        }else{
+            categ.len <- length(categ) # if only categ1, then colors for classes of categ1, if length(categ) == 2L, then colors for classes of categ2
+            if(length(dot.color) == length(levels(data1[, categ[categ.len]]))){ # here length(dot.color) is equal to the different number of categ
+                # data1[, categ[categ.len]] <- factor(data1[, categ[categ.len]]) # not required because sure that is is a factor
+                data1 <- data.frame(data1, dot.color = data1[, categ[categ.len]], stringsAsFactors = TRUE)
+                data1$dot.color <- factor(data1$dot.color, labels = dot.color)
+                if(box.alpha != 0){
+                    warn.count <- warn.count + 1
+                    tempo.warn <- paste0("(", warn.count,") IN ", categ[categ.len], " OF categ ARGUMENT, THE FOLLOWING COLORS:\n", paste(dot.color, collapse = " "), "\nHAVE BEEN ATTRIBUTED TO THESE CLASSES:\n", paste(levels(factor(data1[, categ[categ.len]])), collapse = " "))
+                    warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                }
+            }else if(length(dot.color) == length(data1[, categ[categ.len]])){# here length(dot.color) is equal to nrow(data1) -> Modif to have length(dot.color) equal to the different number of categ (length(dot.color) == length(levels(data1[, categ[categ.len]])))
+                data1 <- data.frame(data1, dot.color = dot.color, stringsAsFactors = TRUE)
+            }else if(length(dot.color)== 1L & ! all(dot.color == "same")){ # all() without na.rm -> ok because dot.color cannot be NA (tested above)
+                # data1[, categ[categ.len]] <- factor(data1[, categ[categ.len]]) # not required because sure that is is a factor
+                data1 <- data.frame(data1, dot.color = dot.color, stringsAsFactors = TRUE)
+                dot.color <- rep(dot.color, length(levels(data1[, categ[categ.len]])))
+                warn.count <- warn.count + 1
+                tempo.warn <- paste0("(", warn.count,") dot.color ARGUMENT HAS LENGTH 1, MEANING THAT ALL THE DIFFERENT CLASSES OF ", categ[categ.len], "\n", paste(levels(factor(data1[, categ[categ.len]])), collapse = " "), "\nWILL HAVE THE SAME COLOR\n", paste(dot.color, collapse = " "))
+                warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+            }else{
+                tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.color ARGUMENT MUST BE (1) LENGTH 1, OR (2) THE LENGTH OF data1 NROWS AFTER NA/Inf REMOVAL, OR (3) THE LENGTH OF THE CLASSES IN THE categ ", categ[categ.len], " COLUMN. HERE IT IS COLOR LENGTH ", length(dot.color), " VERSUS CATEG LENGTH ", length(data1[, categ[categ.len]]), " AND CATEG CLASS LENGTH ", length(unique(data1[, categ[categ.len]])), "\nPRESENCE OF NA/Inf COULD BE THE PROBLEM")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+            }
+            # end check the length of color
+            dot.color <- as.character(dot.color)
+            # dot.color is a character string representing the diff classes
+            data1$dot.color <- factor(data1$dot.color, levels = unique(dot.color)) # ok because if dot.color is a character string, the order make class 1, class 2, etc. If dot.color is a column of data1, then levels will be created, without incidence, except if dot.categ specified (see below). unique() because no duplicates allowed
+            # data1$dot.color is a factor with order of levels -> dot.color
+        }
+        # end optional legend of dot colors
+    }else if(is.null(dot.color) & ! (is.null(dot.categ) & is.null(dot.categ.class.order) & is.null(dot.legend.name))){
+        warn.count <- warn.count + 1
+        tempo.warn <- paste0("(", warn.count,") dot.categ OR dot.categ.class.order OR dot.legend.name ARGUMENT HAS BEEN SPECIFIED BUT dot.color ARGUMENT IS NULL (NO DOT PLOTTED)")
+        warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+    }
+    # dot.color either NULL (no dot plotted) or character string (potentially representing the diff classes of dot.categ)
+    # data1$dot.color is either NA or a factor (with order of levels -> depending on dot.categ or categ[length(categ)], or other
+    if(is.null(dot.categ)){
+        dot.categ.class.order <- NULL # because not used anyway
+    }
+    # dot.categ.class.order either NULL if dot.categ is NULL (no legend displayed) or character string (potentially representing the diff classes of dot.categ)
+    # end management of dot.color
+    if(is.null(dot.color) & box.fill == FALSE & dot.alpha <= 0.025){
+        warn.count <- warn.count + 1
+        tempo.warn <- paste0("(", warn.count,") THE FOLLOWING ARGUMENTS WERE SET AS:\ndot.color = NULL (NOT ALL DOTS BUT ONLY POTENTIAL OUTLIER DOTS DISPLAYED)\nbox.fill = FALSE (NO FILLING COLOR FOR BOTH BOXES AND POTENTIAL OUTLIER DOTS)\ndot.alpha = ", fun_round(dot.alpha, 4), "\n-> POTENTIAL OUTLIER DOTS MIGHT NOT BE VISIBLE BECAUSE ALMOST TRANSPARENT")
+        warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+    }
+    if(is.null(dot.color) & box.fill == FALSE & dot.border.size == 0){
+        tempo.cat <- paste0("ERROR IN ", function.name, "\nTHE FOLLOWING ARGUMENTS WERE SET AS:\ndot.color = NULL (NOT ALL DOTS BUT ONLY POTENTIAL OUTLIER DOTS DISPLAYED)\nbox.fill = FALSE (NO FILLING COLOR FOR BOTH BOXES AND POTENTIAL OUTLIER DOTS)\ndot.border.size = 0 (NO BORDER FOR POTENTIAL OUTLIER DOTS)\n-> THESE SETTINGS ARE NOT ALLOWED BECAUSE THE POTENTIAL OUTLIER DOTS WILL NOT BE VISIBLE")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+    }
+    # integer dot.border.color into gg_palette
+    if( ! is.null(dot.border.color)){
+        tempo <- fun_check(data = dot.border.color, class = "vector", typeof = "integer", double.as.integer.allowed = TRUE, length = 1, fun.name = function.name)
+        if(tempo$problem == FALSE){ # convert integers into colors
+            dot.border.color <- fun_gg_palette(max(dot.border.color, na.rm = TRUE))[dot.border.color]
+        }
+    }
+    # end integer dot.border.color into gg_palette
+    # na detection and removal (done now to be sure of the correct length of categ)
+    column.check <- c("categ.color", if( ! is.null(dot.color)){"dot.color"}) # 
+    if(any(is.na(data1[, column.check]))){ # data1 used here instead of data1.ini in case of new NaN created by log conversion (neg values) # normally no NA with is.na
+        warn.count <- warn.count + 1
+        tempo.warn <- paste0("(", warn.count,") NA DETECTED IN COLUMNS ", paste(column.check, collapse = " "), " OF data1 AND CORRESPONDING ROWS REMOVED (SEE $removed.row.nb AND $removed.rows)")
+        warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        for(i2 in 1:length(column.check)){
+            if(any(is.na(data1[, column.check[i2]]))){ # normally no NA with is.na
+                tempo.warn <- paste0("NA REMOVAL DUE TO COLUMN ", column.check[i2], " OF data1")
+                warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n", tempo.warn)))
+            }
+        }
+        tempo <- unique(unlist(lapply(lapply(c(data1[column.check]), FUN = is.na), FUN = which)))
+        removed.row.nb <- c(removed.row.nb, tempo)
+        removed.rows <- rbind(removed.rows, data1[tempo, ], stringsAsFactors = FALSE) # here data1 used because categorical columns tested
+        if(length(tempo) != 0){
+            data1 <- data1[-tempo, ] # WARNING tempo here and not removed.row.nb because the latter contain more numbers thant the former
+            data1.ini <- data1.ini[-tempo, ] # WARNING tempo here and not removed.row.nb because the latter contain more numbers thant the former
+            for(i3 in 1:length(column.check)){
+                if(any( ! unique(removed.rows[, column.check[i3]]) %in% unique(data1[, column.check[i3]]), na.rm = TRUE)){
+                    warn.count <- warn.count + 1
+                    tempo.warn <- paste0("(", warn.count,") IN COLUMN ", column.check[i3], " OF data1, THE FOLLOWING CLASSES HAVE DISAPPEARED AFTER NA/Inf REMOVAL (IF COLUMN USED IN THE PLOT, THIS CLASS WILL NOT BE DISPLAYED):\n", paste(unique(removed.rows[, column.check[i3]])[ ! unique(removed.rows[, column.check[i3]]) %in% unique(data1[, column.check[i3]])], collapse = " "))
+                    warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                }
+            }
+        }
+        for(i2 in 1:length(column.check)){
+            if(column.check[i2] == "categ.color"){
+                categ.color <- levels(data1[, column.check[i2]])[levels(data1[, column.check[i2]]) %in% unique(data1[, column.check[i2]])] # remove the absent color in the character vector
+                if(length(categ.color)== 1L & length(unlist(categ.class.order[length(categ)])) > 1){ # to deal with single color
+                    categ.color <- rep(categ.color, length(unlist(categ.class.order[length(categ)])))
+                }
+                data1[, column.check[i2]] <- factor(as.character(data1[, column.check[i2]]), levels = unique(categ.color))
+            }
+            if(column.check[i2] == "dot.color"){
+                dot.color <- levels(data1[, column.check[i2]])[levels(data1[, column.check[i2]]) %in% unique(data1[, column.check[i2]])] # remove the absent color in the character vector
+                if(length(dot.color)== 1L & length(dot.categ.class.order) > 1){ # to deal with single color. If dot.categ.class.order == NULL (which is systematically the case if dot.categ == NULL), no rep(dot.color, length(dot.categ.class.order)
+                    dot.color <- rep(dot.color, length(dot.categ.class.order))
+                }
+                data1[, column.check[i2]] <- factor(as.character(data1[, column.check[i2]]), levels = unique(dot.color))
+            }
+        }
+    }
+    # end na detection and removal (done now to be sure of the correct length of categ)
+    # From here, data1 and data.ini have no more NA or NaN
+    # end other checkings
+    # reserved word checking
+    #already done above
+    # end reserved word checking
+    # end second round of checking and data preparation
+    
+    
+    # package checking
+    fun_pack(req.package = c(
+        "ggplot2", 
+        "gridExtra", 
+        "lemon", 
+        "scales"
+    ), lib.path = lib.path)
+    # end package checking
+    
+    
+    
+    
+    
+    # main code
+    # y coordinates recovery (create ini.box.coord, dot.coord and modify data1)
+    if(length(categ)== 1L){
+        # width commputations
+        box.width2 <- box.width
+        box.space <- 0 # to inactivate the shrink that add space between grouped boxes, because no grouped boxes here
+        # end width commputations
+        # data1 check categ order for dots coordinates recovery
+        data1 <- data.frame(data1, categ.check = data1[, categ[1]], stringsAsFactors = TRUE)
+        data1$categ.check <- as.integer(data1$categ.check) # to check that data1[, categ[1]] and dot.coord$group are similar, during merging
+        # end data1 check categ order for dots coordinates recovery
+        # per box dots coordinates recovery
+        tempo.gg.name <- "gg.indiv.plot."
+        tempo.gg.count <- 0
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = paste0("ggplot2::ggplot()", if(is.null(add)){""}else{add})))) # add added here to have the facets
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_point(data = data1, mapping = ggplot2::aes_string(x = categ[1], y = y, color = categ[1]), stroke = dot.border.size, size = dot.size, alpha = dot.alpha, shape = 21))
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "color", name = box.legend.name, values = if(is.null(categ.color)){rep(NA, length(unique(data1[, categ[1]])))}else if(length(categ.color)== 1L){rep(categ.color, length(unique(data1[, categ[1]])))}else{categ.color})) # categ.color used for dot colors because at that stage, we do not care about colors
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_boxplot(data = data1, mapping = ggplot2::aes_string(x = categ[1], y = y, fill = categ[1]), coef = if(box.whisker.kind == "no"){0}else if(box.whisker.kind == "std"){1.5}else if(box.whisker.kind == "max"){Inf})) # fill because this is what is used with geom_box # to easily have the equivalent of the grouped boxes
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "fill", name = box.legend.name, values = if(length(categ.color)== 1L){rep(categ.color, length(unique(data1[, categ[1]])))}else{categ.color}))
+        # end per box dots coordinates recovery
+    }else if(length(categ) == 2L){
+        # width commputations
+        box.width2 <- box.width / length(unique(data1[, categ[length(categ)]])) # real width of each box in x-axis unit, among the set of grouped box. Not relevant if no grouped boxes length(categ)== 1L
+        # end width commputations
+        # data1 check categ order for dots coordinates recovery
+        tempo.factor <- paste0(data1[order(data1[, categ[2]], data1[, categ[1]]), categ[2]], "_", data1[order(data1[, categ[2]], data1[, categ[1]]), categ[1]])
+        data1 <- data.frame(data1[order(data1[, categ[2]], data1[, categ[1]]), ], categ.check = factor(tempo.factor, levels = unique(tempo.factor)), stringsAsFactors = TRUE)
+        data1$categ.check <- as.integer(data1$categ.check)
+        # end data1 check categ order for dots coordinates recovery
+        # per box dots coordinates recovery
+        tempo.gg.name <- "gg.indiv.plot."
+        tempo.gg.count <- 0
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = paste0("ggplot2::ggplot()", if(is.null(add)){""}else{add})))) # add added here to have the facets
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_point(data = data1, mapping = ggplot2::aes_string(x = categ[1], y = y, color = categ[2]), stroke = dot.border.size, size = dot.size, alpha = dot.alpha, shape = 21))
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "color", name = box.legend.name, values = if(is.null(categ.color)){rep(NA, length(unique(data1[, categ[2]])))}else if(length(categ.color)== 1L){rep(categ.color, length(unique(data1[, categ[2]])))}else{categ.color})) # categ.color used for dot colors because at that stage, we do not care about colors
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_boxplot(data = data1, mapping = ggplot2::aes_string(x = categ[1], y = y, fill = categ[2]), coef = if(box.whisker.kind == "no"){0}else if(box.whisker.kind == "std"){1.5}else if(box.whisker.kind == "max"){Inf})) # fill because this is what is used with geom_box # to easily have the equivalent of the grouped boxes
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "fill", name = box.legend.name, values = if(length(categ.color)== 1L){rep(categ.color, length(unique(data1[, categ[2]])))}else{categ.color}))
+        # end per box dots coordinates recovery
+    }else{
+        tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nCODE INCONSISTENCY 1")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+    }
+    if( ! is.null(stat.pos)){
+        stat.just <- fun_gg_just(
+            angle = stat.angle, 
+            pos = ifelse(
+                vertical == TRUE, 
+                ifelse(stat.pos == "top", "bottom", "top"), # "bottom" because we want justification for text that are below the ref point which is the top of the graph. The opposite for "above"
+                ifelse(stat.pos == "top", "left", "right") # "left" because we want justification for text that are on the left of the ref point which is the right border of the graph. The opposite for "above"
+            ), 
+            kind = "text"
+        )
+    }
+    # has in fact no interest because ggplot2 does not create room for geom_text()
+    tempo.data.max <- data1[which.max(data1[, y]), ]
+    tempo.data.max <- data.frame(tempo.data.max, label = formatC(tempo.data.max[, y], digit = 2, drop0trailing = TRUE, format = "f"), stringsAsFactors = TRUE)
+    # end has in fact no interest because ggplot2 does not create room for geom_text()
+    tempo.graph.info.ini <- ggplot2::ggplot_build(eval(parse(text = paste(paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "), if( ! is.null(stat.pos)){' + ggplot2::geom_text(data = tempo.data.max, mapping = ggplot2::aes_string(x = 1, y = y, label = "label"), size = stat.size, color = "black", angle = stat.angle, hjust = stat.just$hjust, vjust = stat.just$vjust)'})))) # added here to have room for annotation
+    dot.coord <- tempo.graph.info.ini$data[[1]]
+    dot.coord$x <- as.numeric(dot.coord$x) # because weird class
+    dot.coord$PANEL <- as.numeric(dot.coord$PANEL) # because numbers as levels. But may be a problem is facet are reordered ?
+    tempo.mean <- aggregate(x = dot.coord$y, by = list(dot.coord$group, dot.coord$PANEL), FUN = mean, na.rm = TRUE)
+    names(tempo.mean)[names(tempo.mean) == "x"] <- "MEAN"
+    names(tempo.mean)[names(tempo.mean) == "Group.1"] <- "BOX"
+    names(tempo.mean)[names(tempo.mean) == "Group.2"] <- "PANEL"
+    dot.coord <- data.frame(
+        dot.coord[order(dot.coord$group, dot.coord$y), ], # dot.coord$PANEL deals below
+        y.check = as.double(data1[order(data1$categ.check, data1[, y]), y]), 
+        categ.check = data1[order(data1$categ.check, data1[, y]), "categ.check"], 
+        dot.color = if(is.null(dot.color)){NA}else{data1[order(data1$categ.check, data1[, y]), "dot.color"]}, 
+        data1[order(data1$categ.check, data1[, y]), ][categ], # avoid the renaming below
+        stringsAsFactors = TRUE
+    ) # y.check to be sure that the order is the same between the y of data1 and the y of dot.coord
+    # names(dot.coord)[names(dot.coord) == "tempo.categ1"] <- categ[1]
+    if( ! is.null(dot.categ)){
+        dot.coord <- data.frame(dot.coord, data1[order(data1$categ.check, data1[, y]), ][dot.categ], stringsAsFactors = TRUE) # avoid the renaming
+    }
+    if( ! is.null(facet.categ)){
+        dot.coord <- data.frame(dot.coord, data1[order(data1$categ.check, data1[, y]), ][facet.categ], stringsAsFactors = TRUE) # for facet panels
+        tempo.test <- NULL
+        for(i2 in 1:length(facet.categ)){
+            tempo.test <- paste0(tempo.test, ".", formatC(as.numeric(dot.coord[, facet.categ[i2]]), width = nchar(max(as.numeric(dot.coord[, facet.categ[i2]]), na.rm = TRUE)), flag = "0")) # convert factor into numeric with leading zero for proper ranking # merge the formatC() to create a new factor. The convertion to integer should recreate the correct group number. Here as.numeric is used and not as.integer in case of numeric in facet.categ (because comes from add and not checked by fun_check, contrary to categ)
+        }
+        tempo.test <- as.integer(factor(tempo.test))
+        if( ! identical(as.integer(dot.coord$PANEL), tempo.test)){
+            tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nas.integer(dot.coord$PANEL) AND tempo.test MUST BE IDENTICAL. CODE HAS TO BE MODIFIED")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+        }
+    }
+    if(dot.tidy == TRUE){
+        if( ! is.null(dot.categ)){
+            dot.coord <- data.frame(dot.coord, tidy_group = data1[order(data1$categ.check, data1[, y]), ][, dot.categ], stringsAsFactors = TRUE) # avoid the renaming
+            # tidy_group_coord is to be able to fuse table when creating the table for dot coordinates
+            if(dot.categ %in% categ){
+                dot.coord <- data.frame(dot.coord, tidy_group_coord = dot.coord$group, stringsAsFactors = TRUE)
+            }else{
+                dot.coord <- data.frame(dot.coord, tidy_group_coord = as.integer(factor(paste0(
+                    formatC(as.integer(dot.coord[, categ[1]]), width = nchar(max(as.integer(dot.coord[, categ[1]]), na.rm = TRUE)), flag = "0"), # convert factor into numeric with leading zero for proper ranking
+                    ".", 
+                    if(length(categ) == 2L){formatC(as.integer(dot.coord[, categ[2]]), width = nchar(max(as.integer(dot.coord[, categ[2]]), na.rm = TRUE)), flag = "0")}, # convert factor into numeric with leading zero for proper ranking
+                    if(length(categ) == 2L){"."}, 
+                    formatC(as.integer(dot.coord[, dot.categ]), width = nchar(max(as.integer(dot.coord[, dot.categ]), na.rm = TRUE)), flag = "0") # convert factor into numeric with leading zero for proper ranking
+                )), stringsAsFactors = TRUE) # merge the 2 or 3 formatC() to create a new factor. The convertion to integer should recreate the correct group number
+                ) # for tidy dot plots
+            }
+        }else{
+            dot.coord <- data.frame(dot.coord, tidy_group = if(length(categ)== 1L){
+                dot.coord[, categ]}else{as.integer(factor(paste0(
+                    formatC(as.integer(dot.coord[, categ[1]]), width = nchar(max(as.integer(dot.coord[, categ[1]]), na.rm = TRUE)), flag = "0"), # convert factor into numeric with leading zero for proper ranking
+                    ".", 
+                    formatC(as.integer(dot.coord[, categ[2]]), width = nchar(max(as.integer(dot.coord[, categ[2]]), na.rm = TRUE)), flag = "0")# convert factor into numeric with leading zero for proper ranking
+                )), stringsAsFactors = TRUE) # merge the 2 formatC() to create a new factor. The convertion to integer should recreate the correct group number
+                }) # for tidy dot plots
+            # tidy_group_coord is to be able to fuse table when creating the table for dot coordinates
+            dot.coord <- data.frame(dot.coord, tidy_group_coord = dot.coord$group, stringsAsFactors = TRUE)
+        }
+    }
+    if( ! (identical(dot.coord$y, dot.coord$y.check) & identical(dot.coord$group, dot.coord$categ.check))){
+        tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\n(dot.coord$y AND dot.coord$y.check) AS WELL AS (dot.coord$group AND dot.coord$categ.check) MUST BE IDENTICAL. CODE HAS TO BE MODIFIED")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+    }else{
+        if( ! identical(tempo.mean[order(tempo.mean$BOX, tempo.mean$PANEL), ]$BOX, unique(dot.coord[order(dot.coord$group, dot.coord$PANEL), c("group", "PANEL")])$group)){
+            tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\n(tempo.mean$BOX, tempo.mean$PANEL) AND (dot.coord$group, dot.coord$PANEL) MUST BE IDENTICAL. CODE HAS TO BE MODIFIED")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+        }else{
+            tempo <- unique(dot.coord[order(dot.coord$group, dot.coord$PANEL), c(categ, if( ! is.null(dot.color) & ! is.null(dot.categ)){if(dot.categ != ini.dot.categ){dot.categ}}, if( ! is.null(facet.categ)){facet.categ}), drop = FALSE])
+            # names(tempo) <- paste0(names(tempo), ".mean")
+            tempo.mean <- data.frame(tempo.mean[order(tempo.mean$BOX, tempo.mean$PANEL), ], tempo, stringsAsFactors = TRUE)
+        }
+    }
+    # at that stage, categ color and dot color are correctly attributed in data1, box.coord and dot.coord
+    # end y dot coordinates recovery (create ini.box.coord, dot.coord and modify data1)
+    # ylim range
+    if(is.null(y.lim)){
+        y.lim <- tempo.graph.info.ini$layout$panel_params[[1]]$y.range # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
+        if(any(( ! is.finite(y.lim)) | is.na(y.lim)) | length(y.lim) != 2){ # kept but normally no more Inf in data1 # normally no NA with is.finite, etc.
+            tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\ntempo.graph.info.ini$layout$panel_params[[1]]$y.range[1] CONTAINS NA OR Inf OR HAS LENGTH 1")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+        }
+    }else if(y.log != "no"){
+        y.lim <- get(y.log)(y.lim) # no env = sys.nframe(), inherit = FALSE in get() because look for function in the classical scope
+    }
+    if(y.log != "no"){
+        # normally this control is not necessary anymore
+        if(any( ! is.finite(y.lim))){ # normally no NA with is.finite
+            tempo.cat <- paste0("ERROR IN ", function.name, "\ny.lim ARGUMENT CANNOT HAVE ZERO OR NEGATIVE VALUES WITH THE y.log ARGUMENT SET TO ", y.log, ":\n", paste(y.lim, collapse = " "), "\nPLEASE, CHECK DATA VALUES (PRESENCE OF ZERO OR INF VALUES)")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+        }
+    }
+    if(suppressWarnings(all(y.lim %in% c(Inf, -Inf)))){ # all() without na.rm -> ok because y.lim cannot be NA (tested above)
+        # normally this control is not necessary anymore
+        tempo.cat <- paste0("ERROR IN ", function.name, " y.lim CONTAINS Inf VALUES, MAYBE BECAUSE VALUES FROM data1 ARGUMENTS ARE NA OR Inf ONLY OR BECAUSE OF LOG SCALE REQUIREMENT")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+    }
+    if(suppressWarnings(any(is.na(y.lim)))){ # normally no NA with is.na
+        # normally this control is not necessary anymore
+        tempo.cat <- paste0("ERROR IN ", function.name, " y.lim CONTAINS NA OR NaN VALUES, MAYBE BECAUSE VALUES FROM data1 ARGUMENTS ARE NA OR Inf ONLY OR BECAUSE OF LOG SCALE REQUIREMENT")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+    }
+    y.lim.order <- order(y.lim) # to deal with inverse axis
+    y.lim <- sort(y.lim)
+    y.lim[1] <- y.lim[1] - abs(y.lim[2] - y.lim[1]) * ifelse(diff(y.lim.order) > 0, y.bottom.extra.margin, y.top.extra.margin) # diff(y.lim.order) > 0 medians not inversed axis
+    y.lim[2] <- y.lim[2] + abs(y.lim[2] - y.lim[1]) * ifelse(diff(y.lim.order) > 0, y.top.extra.margin, y.bottom.extra.margin) # diff(y.lim.order) > 0 medians not inversed axis
+    if(y.include.zero == TRUE){ # no need to check y.log != "no" because done before
+        y.lim <- range(c(y.lim, 0), na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
+    }
+    y.lim <- y.lim[y.lim.order]
+    if(any(is.na(y.lim))){ # normally no NA with is.na
+        tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nCODE INCONSISTENCY 2")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+    }
+    # end ylim range
+    
+    
+    
+    
+    
+    
+    # drawing
+    # constant part
+    tempo.gg.name <- "gg.indiv.plot."
+    tempo.gg.count <- 0
+    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = paste0("ggplot2::ggplot()", if(is.null(add)){""}else{add})))) # add is directly put here to deal with additional variable of data, like when using facet_grid. No problem if add is a theme, will be dealt below
+    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::xlab(if(is.null(x.lab)){categ[1]}else{x.lab}))
+    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ylab(if(is.null(y.lab)){y}else{y.lab}))
+    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ggtitle(title))
+    # text angle management
+    axis.just <- fun_gg_just(angle = x.angle, pos = ifelse(vertical == TRUE, "bottom", "left"), kind = "axis")
+    # end text angle management
+    add.check <- TRUE
+    if( ! is.null(add)){ # if add is NULL, then = 0
+        if(grepl(pattern = "ggplot2\\s*::\\s*theme", add) == TRUE){
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") \"ggplot2::theme\" STRING DETECTED IN THE add ARGUMENT\n-> INTERNAL GGPLOT2 THEME FUNCTIONS theme() AND theme_classic() HAVE BEEN INACTIVATED, TO BE USED BY THE USER\n-> article ARGUMENT WILL BE IGNORED")
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+            add.check <- FALSE
+        }
+    }
+    if(add.check == TRUE & article == TRUE){
+        # WARNING: not possible to add theme()several times. NO message but the last one overwrites the others
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::theme_classic(base_size = text.size))
+        if(grid == TRUE){
+            assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
+                text = ggplot2::element_text(size = text.size), 
+                plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
+                line = ggplot2::element_line(size = 0.5), 
+                legend.key = ggplot2::element_rect(color = "white", size = 1.5), # size of the frame of the legend
+                axis.line.y.left = ggplot2::element_line(colour = "black"), # draw lines for the y axis
+                axis.line.x.bottom = ggplot2::element_line(colour = "black"), # draw lines for the x axis
+                panel.grid.major.x = if(vertical == TRUE){NULL}else{ggplot2::element_line(colour = "grey85", size = 0.75)},
+                panel.grid.major.y = if(vertical == TRUE){ggplot2::element_line(colour = "grey85", size = 0.75)}else{NULL},
+                panel.grid.minor.y = if(vertical == TRUE){ggplot2::element_line(colour = "grey90", size = 0.25)}else{NULL},
+                axis.text.x = if(vertical == TRUE){ggplot2::element_text(angle = axis.just$angle, hjust = axis.just$hjust, vjust = axis.just$vjust)}else{NULL},
+                axis.text.y = if(vertical == TRUE){NULL}else{ggplot2::element_text(angle = axis.just$angle, hjust = axis.just$hjust, vjust = axis.just$vjust)},
+                strip.background = ggplot2::element_rect(fill = NA, colour = NA) # for facet background
+            ))
+        }else{
+            assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
+                text = ggplot2::element_text(size = text.size), 
+                plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
+                line = ggplot2::element_line(size = 0.5), 
+                legend.key = ggplot2::element_rect(color = "white", size = 1.5), # size of the frame of the legend
+                axis.line.y.left = ggplot2::element_line(colour = "black"), 
+                axis.line.x.bottom = ggplot2::element_line(colour = "black"),
+                axis.text.x = if(vertical == TRUE){ggplot2::element_text(angle = axis.just$angle, hjust = axis.just$hjust, vjust = axis.just$vjust)}else{NULL},
+                axis.text.y = if(vertical == TRUE){NULL}else{ggplot2::element_text(angle = axis.just$angle, hjust = axis.just$hjust, vjust = axis.just$vjust)},
+                strip.background = ggplot2::element_rect(fill = NA, colour = NA)
+            ))
+        }
+    }else if(add.check == TRUE & article == FALSE){
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
+            text = ggplot2::element_text(size = text.size), 
+            plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
+            line = ggplot2::element_line(size = 0.5), 
+            legend.key = ggplot2::element_rect(color = "white", size = 1.5), # size of the frame of the legend
+            panel.background = ggplot2::element_rect(fill = "grey95"), 
+            axis.line.y.left = ggplot2::element_line(colour = "black"), 
+            axis.line.x.bottom = ggplot2::element_line(colour = "black"), 
+            panel.grid.major.x = ggplot2::element_line(colour = "grey85", size = 0.75), 
+            panel.grid.major.y = ggplot2::element_line(colour = "grey85", size = 0.75), 
+            panel.grid.minor.x = ggplot2::element_blank(), 
+            panel.grid.minor.y = ggplot2::element_line(colour = "grey90", size = 0.25), 
+            strip.background = ggplot2::element_rect(fill = NA, colour = NA),
+            axis.text.x = if(vertical == TRUE){ggplot2::element_text(angle = axis.just$angle, hjust = axis.just$hjust, vjust = axis.just$vjust)}else{NULL},
+            axis.text.y = if(vertical == TRUE){NULL}else{ggplot2::element_text(angle = axis.just$angle, hjust = axis.just$hjust, vjust = axis.just$vjust)}
+        ))
+    }
+    # Contrary to fun_gg_bar(), cannot plot the boxplot right now, because I need the dots plotted first
+    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_boxplot(data = data1, mapping = ggplot2::aes_string(x = categ[1], y = y, group = categ[length(categ)]), position = ggplot2::position_dodge(width = NULL), color = NA, width = box.width, fill = NA)) # this is to set the graph (i.e., a blanck boxplot to be able to use x coordinates to plot dots before boxes)
+    # end constant part
+    
+    
+    
+    
+    # graphic info recovery (including means)
+    tempo.graph.info <- ggplot2::ggplot_build(eval(parse(text = paste0(paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "), ' + ggplot2::geom_boxplot(data = data1, mapping = ggplot2::aes_string(x = categ[1], y = y, fill = categ[length(categ)]), position = ggplot2::position_dodge(width = NULL), width = box.width, notch = box.notch, coef = if(box.whisker.kind == "no"){0}else if(box.whisker.kind == "std"){1.5}else if(box.whisker.kind == "max"){Inf}) + ggplot2::scale_discrete_manual(aesthetics = "fill", name = box.legend.name, values = if(length(categ.color)== 1L){rep(categ.color, length(unique(data1[, categ[length(categ)]])))}else{categ.color})')))) # will be recovered later again, when ylim will be considered
+    tempo.yx.ratio <- (tempo.graph.info$layout$panel_params[[1]]$y.range[2] - tempo.graph.info$layout$panel_params[[1]]$y.range[1]) / (tempo.graph.info$layout$panel_params[[1]]$x.range[2] - tempo.graph.info$layout$panel_params[[1]]$x.range[1])
+    box.coord <- tempo.graph.info$data[[2]] # to have the summary statistics of the plot. Contrary to ini.box.plot, now integrates ylim Here because can be required for stat.pos when just box are plotted
+    box.coord$x <- as.numeric(box.coord$x) # because x is of special class that block comparison of values using identical
+    box.coord$PANEL <- as.numeric(box.coord$PANEL) # because numbers as levels. But may be a problem is facet are reordered ?
+    box.coord <- box.coord[order(box.coord$group, box.coord$PANEL), ]
+    if( ! (identical(tempo.mean$BOX, box.coord$group) & identical(tempo.mean$PANEL, box.coord$PANEL))){
+        tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nidentical(tempo.mean$BOX, box.coord$group) & identical(tempo.mean$PANEL, box.coord$PANEL) DO NOT HAVE THE SAME VALUE ORDER")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+    }else{
+        # tempo <- c(categ, if( ! is.null(dot.color) & ! is.null(dot.categ)){if(dot.categ != ini.dot.categ){dot.categ}}, if( ! is.null(facet.categ)){facet.categ})
+        if(any(names(tempo.mean) %in% names(box.coord), na.rm = TRUE)){
+            names(tempo.mean)[names(tempo.mean) %in% names(box.coord)] <- paste0(names(tempo.mean)[names(tempo.mean) %in% names(box.coord)], ".mean")
+        }
+        box.coord <- data.frame(box.coord, tempo.mean, stringsAsFactors = TRUE)
+    }
+    # end graphic info recovery (including means)
+    
+    
+    
+    # stat output (will also serve for boxplot and mean display)
+    # x not added know to do not have them in stat.nolog
+    stat <- data.frame(
+        MIN = box.coord$ymin_final, 
+        QUART1 = box.coord$lower, 
+        MEDIAN = box.coord$middle, 
+        MEAN = box.coord$MEAN, 
+        QUART3 = box.coord$upper, 
+        MAX = box.coord$ymax_final, 
+        WHISK_INF = box.coord$ymin, 
+        BOX_INF = box.coord$lower, 
+        NOTCH_INF = box.coord$notchlower, 
+        NOTCH_SUP = box.coord$notchupper, 
+        BOX_SUP = box.coord$upper, 
+        WHISK_SUP = box.coord$ymax, 
+        OUTLIERS = box.coord["outliers"], 
+        tempo.mean[colnames(tempo.mean) != "MEAN"], 
+        COLOR = box.coord$fill, 
+        stringsAsFactors = TRUE
+    ) # box.coord["outliers"] written like this because it is a list. X coordinates not put now because several features to set
+    names(stat)[names(stat) == "outliers"] <- "OUTLIERS"
+    stat.nolog <- stat # stat.nolog ini will serve for outputs
+    if(y.log != "no"){
+        stat.nolog[c("MIN", "QUART1", "MEDIAN", "MEAN", "QUART3", "MAX", "WHISK_INF", "BOX_INF", "NOTCH_INF", "NOTCH_SUP", "BOX_SUP", "WHISK_SUP")] <- ifelse(y.log == "log2", 2, 10)^(stat.nolog[c("MIN", "QUART1", "MEDIAN", "MEAN", "QUART3", "MAX", "WHISK_INF", "BOX_INF", "NOTCH_INF", "NOTCH_SUP", "BOX_SUP", "WHISK_SUP")])
+        stat.nolog$OUTLIERS <- lapply(stat.nolog$OUTLIERS, FUN = function(X){ifelse(y.log == "log2", 2, 10)^X})
+    }
+    # end stat output (will also serve for boxplot and mean display)
+    
+    
+    
+    
+    
+    
+    # x coordinates management (for random plotting and for stat display)
+    # width commputations
+    width.ini <- c(box.coord$xmax - box.coord$xmin)[1] # all the box widths are equal here. Only the first one taken
+    width.correct <- width.ini * box.space / 2
+    if( ! (identical(stat$BOX, box.coord$group) & identical(stat$PANEL, box.coord$PANEL))){
+        tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nidentical(stat$BOX, box.coord$group) & identical(stat$PANEL, box.coord$PANEL) MUST BE IDENTICAL. CODE HAS TO BE MODIFIED")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+    }else{
+        stat <- data.frame(
+            stat, 
+            X = box.coord$x, 
+            X_BOX_INF = box.coord$xmin + width.correct, 
+            X_BOX_SUP = box.coord$xmax - width.correct, 
+            X_NOTCH_INF = box.coord$x - (box.coord$x - (box.coord$xmin + width.correct)) / 2, 
+            X_NOTCH_SUP = box.coord$x + (box.coord$x - (box.coord$xmin + width.correct)) / 2, 
+            X_WHISK_INF = box.coord$x - (box.coord$x - (box.coord$xmin + width.correct)) * box.whisker.width, 
+            X_WHISK_SUP = box.coord$x + (box.coord$x - (box.coord$xmin + width.correct)) * box.whisker.width, 
+            # tempo.mean[colnames(tempo.mean) != "MEAN"], # already added above
+            stringsAsFactors = TRUE
+        )
+        stat$COLOR <- factor(stat$COLOR, levels = unique(categ.color))
+        if( ! all(stat$NOTCH_SUP < stat$BOX_SUP & stat$NOTCH_INF > stat$BOX_INF, na.rm = TRUE) & box.notch == TRUE){
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") SOME NOTCHES ARE BEYOND BOX HINGES. TRY ARGUMENT box.notch = FALSE")
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        }
+    }
+    dot.jitter <- c((box.coord$xmax - width.correct) - (box.coord$xmin + width.correct))[1] * dot.jitter # real dot.jitter. (box.coord$xmin + width.correct) - (box.coord$xmax - width.correct))[1] is the width of the box. Is equivalent to (box.coord$x - (box.coord$xmin + width.correct))[1] * 2
+    # end width commputations
+    if( ! is.null(dot.color)){
+        # random dots
+        if(dot.tidy == FALSE){
+            dot.coord.rd1 <- merge(dot.coord, box.coord[c("fill", "PANEL", "group", "x")], by = c("PANEL", "group"), sort = FALSE) # rd for random. Send the coord of the boxes into the coord data.frame of the dots (in the column x.y). WARNING: by = c("PANEL", "group") without fill column because PANEL & group columns are enough as only one value of x column per group number in box.coord. Thus, no need to consider fill column
+            if(nrow(dot.coord.rd1) != nrow(dot.coord)){
+                tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nTHE merge() FUNCTION DID NOT RETURN A CORRECT dot.coord.rd1 DATA FRAME. CODE HAS TO BE MODIFIED")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+            }
+            sampled.dot.jitter <- if(nrow(dot.coord.rd1)== 1L){runif(n = nrow(dot.coord.rd1), min = - dot.jitter / 2, max = dot.jitter / 2)}else{sample(x = runif(n = nrow(dot.coord.rd1), min = - dot.jitter / 2, max = dot.jitter / 2), size = nrow(dot.coord.rd1), replace = FALSE)}
+            dot.coord.rd2 <- data.frame(dot.coord.rd1, dot.x = dot.coord.rd1$x.y + sampled.dot.jitter, stringsAsFactors = TRUE) # set the dot.jitter thanks to runif and dot.jitter range. Then, send the coord of the boxes into the coord data.frame of the dots (in the column x.y)
+            if(length(categ)== 1L){
+                tempo.data1 <- unique(data.frame(data1[categ[1]], group = as.integer(data1[, categ[1]]), stringsAsFactors = TRUE)) # categ[1] is factor
+                names(tempo.data1)[names(tempo.data1) == categ[1]] <- paste0(categ[1], ".check")
+                verif <- paste0(categ[1], ".check")
+            }else if(length(categ) == 2L){
+                tempo.data1 <- unique(
+                    data.frame(
+                        data1[c(categ[1], categ[2])], 
+                        group = as.integer(factor(paste0(
+                            formatC(as.integer(data1[, categ[2]]), width = nchar(max(as.integer(data1[, categ[2]]), na.rm = TRUE)), flag = "0"), # convert factor into numeric with leading zero for proper ranking
+                            ".", 
+                            formatC(as.integer(data1[, categ[1]]), width = nchar(max(as.integer(data1[, categ[1]]), na.rm = TRUE)), flag = "0")# convert factor into numeric with leading zero for proper ranking
+                        )), stringsAsFactors = TRUE) # merge the 2 formatC() to create a new factor. The convertion to integer should recreate the correct group number
+                    )
+                ) # categ[2] first if categ[2] is used to make the categories in ggplot and categ[1] is used to make the x-axis
+                names(tempo.data1)[names(tempo.data1) == categ[1]] <- paste0(categ[1], ".check")
+                names(tempo.data1)[names(tempo.data1) == categ[2]] <- paste0(categ[2], ".check")
+                verif <- c(paste0(categ[1], ".check"), paste0(categ[2], ".check"))
+            }else{
+                tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nCODE INCONSISTENCY 3")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+            }
+            dot.coord.rd3 <- merge(dot.coord.rd2, tempo.data1, by = intersect("group", "group"), sort = FALSE) # send the factors of data1 into coord. WARNING: I have replaced by = "group" by intersect("group", "group") because of an error due to wrong group group merging in dot.coord.rd3
+            if(nrow(dot.coord.rd3) != nrow(dot.coord) | ( ! fun_comp_2d(dot.coord.rd3[categ], dot.coord.rd3[verif])$identical.content)){
+                tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nTHE merge() FUNCTION DID NOT RETURN A CORRECT dot.coord.rd3 DATA FRAME. CODE HAS TO BE MODIFIED")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+            }
+            # end random dots
+        }
+        # tidy dots
+        # coordinates are recovered during plotting (see dot.coord.tidy1 below)
+        # end tidy dots
+    }
+    # end x coordinates management (for random plotting and for stat display)
+    
+    
+    
+    
+    
+    # boxplot display before dot display if box.fill = TRUE
+    coord.names <- NULL
+    # creation of the data frame for (main box + legend) and data frame for means
+    if(box.notch == FALSE){
+        for(i3 in 1:length(categ)){
+            if(i3== 1L){
+                tempo.polygon <- data.frame(GROUPX = c(t(stat[, rep(categ[i3], 5)])), stringsAsFactors = TRUE)
+            }else{
+                tempo.polygon <- cbind(tempo.polygon, c(t(stat[, rep(categ[i3], 5)])), stringsAsFactors = TRUE)
+            }
+        }
+        names(tempo.polygon) <- categ
+        tempo.polygon <- data.frame(X = c(t(stat[, c("X_BOX_INF", "X_BOX_SUP", "X_BOX_SUP", "X_BOX_INF", "X_BOX_INF")])), Y = c(t(stat[, c("BOX_INF", "BOX_INF", "BOX_SUP", "BOX_SUP", "BOX_INF")])), COLOR = c(t(stat[, c("COLOR", "COLOR", "COLOR", "COLOR", "COLOR")])), BOX = as.character(c(t(stat[, c("BOX", "BOX", "BOX", "BOX", "BOX")]))), tempo.polygon, stringsAsFactors = TRUE)
+        if( ! is.null(facet.categ)){
+            for(i4 in 1:length(facet.categ)){
+                tempo.polygon <- data.frame(tempo.polygon, c(t(stat[, c(facet.categ[i4], facet.categ[i4], facet.categ[i4], facet.categ[i4], facet.categ[i4])])), stringsAsFactors = TRUE)
+                names(tempo.polygon)[length(names(tempo.polygon))] <- facet.categ[i4]
+            }
+        }
+    }else{
+        for(i3 in 1:length(categ)){
+            if(i3== 1L){
+                tempo.polygon <- data.frame(GROUPX = c(t(stat[, rep(categ[i3], 11)])), stringsAsFactors = TRUE)
+            }else{
+                tempo.polygon <- cbind(tempo.polygon, c(t(stat[, rep(categ[i3], 11)])), stringsAsFactors = TRUE)
+            }
+        }
+        names(tempo.polygon) <- categ
+        tempo.polygon <- data.frame(X = c(t(stat[, c("X_BOX_INF", "X_BOX_SUP", "X_BOX_SUP", "X_NOTCH_SUP", "X_BOX_SUP", "X_BOX_SUP", "X_BOX_INF", "X_BOX_INF", "X_NOTCH_INF", "X_BOX_INF", "X_BOX_INF")])), Y = c(t(stat[, c("BOX_INF", "BOX_INF", "NOTCH_INF", "MEDIAN", "NOTCH_SUP", "BOX_SUP", "BOX_SUP", "NOTCH_SUP", "MEDIAN", "NOTCH_INF", "BOX_INF")])), COLOR = c(t(stat[, c("COLOR", "COLOR", "COLOR", "COLOR", "COLOR", "COLOR", "COLOR", "COLOR", "COLOR", "COLOR", "COLOR")])), BOX = as.character(c(t(stat[, c("BOX", "BOX", "BOX", "BOX", "BOX", "BOX", "BOX", "BOX", "BOX", "BOX", "BOX")]))), tempo.polygon, stringsAsFactors = TRUE)
+        if( ! is.null(facet.categ)){
+            for(i4 in 1:length(facet.categ)){
+                tempo.polygon <- data.frame(tempo.polygon, c(t(stat[, c(facet.categ[i4], facet.categ[i4], facet.categ[i4], facet.categ[i4], facet.categ[i4], facet.categ[i4], facet.categ[i4], facet.categ[i4], facet.categ[i4], facet.categ[i4], facet.categ[i4])])), stringsAsFactors = TRUE)
+                names(tempo.polygon)[length(names(tempo.polygon))] <- facet.categ[i4]
+            }
+        }
+    }
+    tempo.polygon$COLOR <- factor(tempo.polygon$COLOR, levels = unique(categ.color))
+    if( ! is.null(categ.class.order)){
+        for(i3 in 1:length(categ)){
+            tempo.polygon[, categ[i3]] <- factor(tempo.polygon[, categ[i3]], levels = categ.class.order[[i3]])
+        }
+    }
+    # modified name of dot.categ column (e.g., "Categ1_DOT") must be included for boxplot using ridy dots
+    if( ! is.null(dot.color) & ! is.null(dot.categ)){
+        if(dot.categ != ini.dot.categ){
+            tempo.polygon <- data.frame(tempo.polygon, GROUPX = tempo.polygon[, ini.dot.categ], stringsAsFactors = TRUE)
+            names(tempo.polygon)[names(tempo.polygon) == "GROUPX"] <- dot.categ
+            
+        }
+    }
+    tempo.diamon.mean <- data.frame(X = c(t(stat[, c("X", "X_NOTCH_INF", "X", "X_NOTCH_SUP", "X")])), Y = c(t(cbind(stat["MEAN"] - (stat[, "X"] - stat[, "X_NOTCH_INF"]) * tempo.yx.ratio, stat["MEAN"], stat["MEAN"] + (stat[, "X"] - stat[, "X_NOTCH_INF"]) * tempo.yx.ratio, stat["MEAN"], stat["MEAN"] - (stat[, "X"] - stat[, "X_NOTCH_INF"]) * tempo.yx.ratio, stringsAsFactors = TRUE))), COLOR = c(t(stat[, c("COLOR", "COLOR", "COLOR", "COLOR", "COLOR")])), GROUP = c(t(stat[, c("BOX", "BOX", "BOX", "BOX", "BOX")])), stringsAsFactors = TRUE) # stringsAsFactors = TRUE for cbind() because stat["MEAN"] is a data frame. Otherwise, stringsAsFactors is not an argument for cbind() on vectors
+    if( ! is.null(facet.categ)){
+        for(i3 in 1:length(facet.categ)){
+            tempo.diamon.mean <- data.frame(tempo.diamon.mean, c(t(stat[, c(facet.categ[i3], facet.categ[i3], facet.categ[i3], facet.categ[i3], facet.categ[i3])])), stringsAsFactors = TRUE)
+            names(tempo.diamon.mean)[length(names(tempo.diamon.mean))] <- facet.categ[i3]
+        }
+    }
+    tempo.diamon.mean$COLOR <- factor(tempo.diamon.mean$COLOR, levels = unique(categ.color))
+    # end creation of the data frame for (main box + legend) and data frame for means
+    if(box.fill == TRUE){
+        # assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_boxplot(data = data1, mapping = ggplot2::aes_string(x = categ[1], y = y, color = categ[length(categ)], fill = categ[length(categ)]), position = ggplot2::position_dodge(width = NULL), width = box.width, size = box.line.size, notch = box.notch, coef = if(box.whisker.kind == "no"){0}else if(box.whisker.kind == "std"){1.5}else if(box.whisker.kind == "max"){Inf}, alpha = box.alpha, outlier.shape = if( ! is.null(dot.color)){NA}else{21}, outlier.color = if( ! is.null(dot.color)){NA}else{dot.border.color}, outlier.fill = if( ! is.null(dot.color)){NA}else{NULL}, outlier.size = if( ! is.null(dot.color)){NA}else{dot.size}, outlier.stroke = if( ! is.null(dot.color)){NA}else{dot.border.size}, outlier.alpha = if( ! is.null(dot.color)){NA}else{dot.alpha})) # the color, size, etc. of the outliers are dealt here. outlier.color = NA to do not plot outliers when dots are already plotted. Finally, boxplot redrawn (see below)
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_polygon(
+            data = tempo.polygon, 
+            mapping = ggplot2::aes_string(x = "X", y = "Y", group = "BOX", fill = categ[length(categ)], color = categ[length(categ)]), 
+            size = box.line.size, 
+            alpha = box.alpha # works only for fill, not for color
+        ))
+        coord.names <- c(coord.names, "main.box")
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_segment(data = stat, mapping = ggplot2::aes(x = X, xend = X, y = BOX_SUP, yend = WHISK_SUP, group = categ[length(categ)]), color = "black", size = box.line.size, alpha = box.alpha)) # 
+        coord.names <- c(coord.names, "sup.whisker")
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_segment(data = stat, mapping = ggplot2::aes(x = X, xend = X, y = BOX_INF, yend = WHISK_INF, group = categ[length(categ)]), color = "black", size = box.line.size, alpha = box.alpha)) # 
+        coord.names <- c(coord.names, "inf.whisker")
+        if(box.whisker.width > 0){
+            assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_segment(data = stat, mapping = ggplot2::aes(x = X_WHISK_INF, xend = X_WHISK_SUP, y = WHISK_SUP, yend = WHISK_SUP, group = categ[length(categ)]), color = "black", size = box.line.size, alpha = box.alpha, lineend = "round")) # 
+            coord.names <- c(coord.names, "sup.whisker.edge")
+            assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_segment(data = stat, mapping = ggplot2::aes(x = X_WHISK_INF, xend = X_WHISK_SUP, y = WHISK_INF, yend = WHISK_INF, group = categ[length(categ)]), color = "black", size = box.line.size, alpha = box.alpha, lineend = "round")) # 
+            coord.names <- c(coord.names, "inf.whisker.edge")
+        }
+        if(box.mean == TRUE){
+            # assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_point(data = stat, mapping = ggplot2::aes_string(x = "X", y = "MEAN", group = categ[length(categ)]), shape = 23, stroke = box.line.size * 2, fill = stat$COLOR, size = box.mean.size, color = "black", alpha = box.alpha)) # group used in aesthetic to do not have it in the legend
+            assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_polygon(
+                data = tempo.diamon.mean, 
+                mapping = ggplot2::aes(x = X, y = Y, group = GROUP), 
+                fill = tempo.diamon.mean[, "COLOR"], 
+                color = hsv(0, 0, 0, alpha = box.alpha), # outline of the polygon in black but with alpha
+                size = box.line.size, 
+                alpha = box.alpha
+            ))
+            coord.names <- c(coord.names, "mean")
+        }
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_segment(data = stat, mapping = ggplot2::aes(x = if(box.notch == FALSE){X_BOX_INF}else{X_NOTCH_INF}, xend = if(box.notch == FALSE){X_BOX_SUP}else{X_NOTCH_SUP}, y = MEDIAN, yend = MEDIAN, group = categ[length(categ)]), color = "black", size = box.line.size * 2, alpha = box.alpha)) # 
+        coord.names <- c(coord.names, "median")
+    }
+    # end boxplot display before dot display if box.fill = TRUE
+    
+    
+    
+    
+    
+    
+    # dot display
+    if( ! is.null(dot.color)){
+        if(dot.tidy == FALSE){
+            if(is.null(dot.categ)){
+                if(dot.border.size == 0){
+                    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_point(
+                        data = dot.coord.rd3, 
+                        mapping = ggplot2::aes_string(x = "dot.x", y = "y", group = categ[length(categ)]), 
+                        size = dot.size, 
+                        shape = 19, 
+                        color = dot.coord.rd3$dot.color, 
+                        alpha = dot.alpha
+                    )) # group used in aesthetic to do not have it in the legend. Here ggplot2::scale_discrete_manual() cannot be used because of the group easthetic
+                }else{
+                    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_point(
+                        data = dot.coord.rd3, 
+                        mapping = ggplot2::aes_string(x = "dot.x", y = "y", group = categ[length(categ)]), 
+                        shape = 21, 
+                        stroke = dot.border.size, 
+                        color = if(is.null(dot.border.color)){dot.coord.rd3$dot.color}else{rep(dot.border.color, nrow(dot.coord.rd3))}, 
+                        size = dot.size, 
+                        fill = dot.coord.rd3$dot.color, 
+                        alpha = dot.alpha
+                    )) # group used in aesthetic to do not have it in the legend. Here ggplot2::scale_discrete_manual() cannot be used because of the group easthetic
+                }
+            }else{
+                if(dot.border.size == 0){
+                    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_point(
+                        data = dot.coord.rd3, 
+                        mapping = ggplot2::aes_string(x = "dot.x", y = "y", alpha = dot.categ), 
+                        size = dot.size, 
+                        shape = 19, 
+                        color = dot.coord.rd3$dot.color
+                    )) # group used in aesthetic to do not have it in the legend. Here ggplot2::scale_discrete_manual() cannot be used because of the group easthetic
+                }else{
+                    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_point(
+                        data = dot.coord.rd3, 
+                        mapping = ggplot2::aes_string(x = "dot.x", y = "y", alpha = dot.categ), 
+                        size = dot.size, 
+                        shape = 21, 
+                        stroke = dot.border.size, 
+                        color = if(is.null(dot.border.color)){dot.coord.rd3$dot.color}else{rep(dot.border.color, nrow(dot.coord.rd3))}, 
+                        fill = dot.coord.rd3$dot.color
+                    )) # group used in aesthetic to do not have it in the legend. Here ggplot2::scale_discrete_manual() cannot be used because of the group easthetic
+                }
+                assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "alpha", name = dot.legend.name, values = rep(dot.alpha, length(dot.categ.class.order)), guide = ggplot2::guide_legend(override.aes = list(fill = dot.color, color = if(is.null(dot.border.color)){dot.color}else{dot.border.color}, stroke = dot.border.size, alpha = dot.alpha)))) # values are the values of color (which is the border color in geom_box. WARNING: values = categ.color takes the numbers to make the colors if categ.color is a factor
+            }
+            coord.names <- c(coord.names, "dots")
+        }else if(dot.tidy == TRUE){
+            # here plot using group -> no scale
+            assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_dotplot(
+                data = dot.coord, 
+                mapping = ggplot2::aes_string(x = categ[1], y = "y", group = "group"), # not dot.categ here because the classes of dot.categ create new separations
+                position = ggplot2::position_dodge(width = box.width), 
+                binpositions = "all", 
+                binaxis = "y", 
+                stackdir = "center", 
+                alpha = dot.alpha, 
+                fill = dot.coord$dot.color, 
+                stroke = dot.border.size, 
+                color = if(is.null(dot.border.color)){dot.coord$dot.color}else{rep(dot.border.color, nrow(dot.coord))}, 
+                show.legend = FALSE, # WARNING: do not use show.legend = TRUE because it uses the arguments outside aes() as aesthetics (here color and fill). Thus I must find a way using ggplot2::scale_discrete_manual()
+                binwidth = (y.lim[2] - y.lim[1]) / dot.tidy.bin.nb
+            )) # geom_dotplot ggplot2 v3.3.0: I had to remove rev() in fill and color # very weird behavior of geom_dotplot ggplot2 v3.2.1, (1) because with aes group = (to avoid legend), the dot plotting is not good in term of coordinates, and (2) because data1 seems reorderer according to x = categ[1] before plotting. Thus, I have to use fill = dot.coord[rev(order(dot.coord[, categ[1]], decreasing = TRUE)), "dot.color"] to have the good corresponding colors # show.legend option do not remove the legend, only the aesthetic of the legend (dot, line, etc.)
+            coord.names <- c(coord.names, "dots")
+            if( ! is.null(dot.categ)){
+                assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_dotplot(
+                    data = dot.coord, 
+                    mapping = ggplot2::aes_string(x = categ[1], y = "y", alpha = dot.categ), # not dot.categ here because the classes of dot.categ create new separations
+                    position = ggplot2::position_dodge(width = box.width), 
+                    binpositions = "all", 
+                    binaxis = "y", 
+                    stackdir = "center", 
+                    fill = NA, 
+                    stroke = NA, 
+                    color = NA, 
+                    # WARNING: do not use show.legend = TRUE because it uses the arguments outside aes() as aesthetics (here color and fill). Thus I must find a way using ggplot2::scale_discrete_manual()
+                    binwidth = (y.lim[2] - y.lim[1]) / dot.tidy.bin.nb
+                )) # geom_dotplot ggplot2 v3.3.0: I had to remove rev() in fill and color # very weird behavior of geom_dotplot ggplot2 v3.2.1, (1) because with aes group = (to avoid legend), the dot plotting is not good in term of coordinates, and (2) because data1 seems reorderer according to x = categ[1] before plotting. Thus, I have to use fill = dot.coord[rev(order(dot.coord[, categ[1]], decreasing = TRUE)), "dot.color"] to have the good corresponding colors # show.legend option do not remove the legend, only the aesthetic of the legend (dot, line, etc.)
+                # assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "linetype", name = dot.legend.name, values = rep(1, length(categ.color)))) # values = rep("black", length(categ.color)) are the values of color (which is the border color of dots), and this modify the border color on the plot. WARNING: values = categ.color takes the numbers to make the colors if categ.color is a factor
+                coord.names <- c(coord.names, "bad_remove")
+                assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "alpha", name = dot.legend.name, values = rep(dot.alpha, length(dot.categ.class.order)), labels = dot.categ.class.order, guide = ggplot2::guide_legend(title = if(ini.dot.categ == categ[length(categ)]){dot.categ}else{ini.dot.categ}, override.aes = list(fill = levels(dot.coord$dot.color), color = if(is.null(dot.border.color)){levels(dot.coord$dot.color)}else{dot.border.color}, stroke = dot.border.size, alpha = dot.alpha)))) # values are the values of color (which is the border color in geom_box. WARNING: values = categ.color takes the numbers to make the colors if categ.color is a factor
+            }
+            # coordinates of tidy dots
+            tempo.coord <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))$data # to have the tidy dot coordinates
+            if(length(which(sapply(X = tempo.coord, FUN = function(X){any(names(X) == "binwidth", na.rm = TRUE)}))) != 1){ # detect the compartment of tempo.coord which is the binned data frame
+                # if(length(which(sapply(tempo.coord, FUN = nrow) == nrow(data1))) > if(is.null(dot.categ)){1}else{2}){ # this does not work if only one dot per class, thus replaced by above # if(is.null(dot.categ)){1}else{2} because 1 dotplot if dot.categ is NULL and 2 dotplots if not, with the second being a blank dotplot with wrong coordinates. Thus take the first in that situation
+                tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nEITHER MORE THAN 1 OR NO COMPARTMENT HAVING A DATA FRAME WITH binwidth AS COLUMN NAME IN THE tempo.coord LIST (FOR TIDY DOT COORDINATES). CODE HAS TO BE MODIFIED")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+            }else{
+                # dot.coord.tidy1 <- tempo.coord[[which(sapply(tempo.coord, FUN = nrow) == nrow(data1))[1]]] # this does not work if only one dot per class, thus replaced by above # the second being a blank dotplot with wrong coordinates. Thus take the first whatever situation
+                dot.coord.tidy1 <- tempo.coord[[which(sapply(X = tempo.coord, FUN = function(X){any(names(X) == "binwidth", na.rm = TRUE)}))]] # detect the compartment of tempo.coord which is the binned data frame
+                dot.coord.tidy1$x <- as.numeric(dot.coord.tidy1$x) # because weird class
+                dot.coord.tidy1$PANEL <- as.numeric(dot.coord.tidy1$PANEL) # because numbers as levels. But may be a problem is facet are reordered ?
+            }
+            # tempo.box.coord <- merge(box.coord, unique(dot.coord[, c("PANEL", "group", categ)]), by = c("PANEL", "group"), sort = FALSE) # not required anymore because box.coord already contains categ do not add dot.categ and tidy_group_coord here because the coordinates are for stats. Add the categ in box.coord. WARNING: by = c("PANEL", "group") without fill column because PANEL & group columns are enough as only one value of x column per group number in box.coord. Thus, no need to consider fill column
+            # below inactivated because not true when dealing with dot.categ different from categ
+            # if(nrow(tempo.box.coord) != nrow(box.coord)){
+            # tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nTHE merge() FUNCTION DID NOT RETURN A CORRECT tempo.box.coord DATA FRAME. CODE HAS TO BE MODIFIED")
+            # stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n"), call. = FALSE) # == in stop() to be able to add several messages between ==
+            # }
+            dot.coord.tidy2 <- merge(dot.coord.tidy1, box.coord[c("fill", "PANEL", "group", "x", categ)], by = c("PANEL", "group"), sort = FALSE) # send the coord of the boxes into the coord data.frame of the dots (in the column x.y).WARNING: by = c("PANEL", "group") without fill column because PANEL & group columns are enough as only one value of x column per group number in tempo.box.coord. Thus, no need to consider fill colum # DANGER: from here the fill.y and x.y (from tempo.box.coord) are not good in dot.coord.tidy2. It is ok because Categ1 Categ2 from tempo.box.coord are ok with the group column from dot.coord.tidy1. This is due to the fact that dot.coord.tidy resulting from geom_dotplot does not make the same groups as the other functions
+            if(nrow(dot.coord.tidy2) != nrow(dot.coord)){
+                tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nTHE merge() FUNCTION DID NOT RETURN A CORRECT dot.coord.tidy2 DATA FRAME. CODE HAS TO BE MODIFIED")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+            }
+            # From here, check for dot.coord.tidy3 which wil be important for stat over the plot. WARNING: dot.categ has nothing to do here for stat coordinates. Thus, not in tempo.data1
+            if(length(categ)== 1L){
+                tempo.data1 <- unique(data.frame(data1[categ[1]], group = as.integer(data1[, categ[1]]), stringsAsFactors = TRUE)) # categ[1] is factor
+                names(tempo.data1)[names(tempo.data1) == categ[1]] <- paste0(categ[1], ".check")
+                verif <- paste0(categ[1], ".check")
+            }else if(length(categ) == 2L){
+                tempo.data1 <- unique(
+                    data.frame(
+                        data1[c(categ[1], categ[2])], 
+                        group = as.integer(factor(paste0(
+                            formatC(as.integer(data1[, categ[2]]), width = nchar(max(as.integer(data1[, categ[2]]), na.rm = TRUE)), flag = "0"), # convert factor into numeric with leading zero for proper ranking
+                            ".", 
+                            formatC(as.integer(data1[, categ[1]]), width = nchar(max(as.integer(data1[, categ[1]]), na.rm = TRUE)), flag = "0")# convert factor into numeric with leading zero for proper ranking
+                        )), stringsAsFactors = TRUE) # merge the 2 formatC() to create a new factor. The convertion to integer should recreate the correct group number
+                    )
+                ) # categ[2] first if categ[2] is used to make the categories in ggplot and categ[1] is used to make the x-axis
+                names(tempo.data1)[names(tempo.data1) == categ[1]] <- paste0(categ[1], ".check")
+                names(tempo.data1)[names(tempo.data1) == categ[2]] <- paste0(categ[2], ".check")
+                verif <- c(paste0(categ[1], ".check"), paste0(categ[2], ".check"))
+            }else{
+                tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nCODE INCONSISTENCY 4")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+            }
+            dot.coord.tidy3 <- merge(dot.coord.tidy2, tempo.data1, by = intersect("group", "group"), sort = FALSE) # send the factors of data1 into coord. WARNING: I have tested intersect("group", "group") instead of by = "group". May be come back to by = "group" in case of error. But I did this because of an error in dot.coord.rd3 above
+            if(nrow(dot.coord.tidy3) != nrow(dot.coord) | ( ! fun_comp_2d(dot.coord.tidy3[categ], dot.coord.tidy3[verif])$identical.content)){
+                tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nTHE merge() FUNCTION DID NOT RETURN A CORRECT dot.coord.tidy3 DATA FRAME. CODE HAS TO BE MODIFIED")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+            }
+            # end coordinates of tidy dots
+        }
+    }
+    # end dot display
+    
+    
+    
+    # boxplot display (if box.fill = FALSE, otherwise, already plotted above)
+    if(box.fill == TRUE){
+        # overcome "work only for the filling of boxes, not for the frame. See https://github.com/tidyverse/ggplot2/issues/252"
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "fill", name = box.legend.name, values = if(length(categ.color)== 1L){rep(categ.color, length(unique(data1[, categ[length(categ)]])))}else{categ.color}, guide = ggplot2::guide_legend(order = 1))) #, guide = ggplot2::guide_legend(override.aes = list(fill = levels(tempo.polygon$COLOR), color = "black")))) # values are the values of color (which is the border color in geom_box. WARNING: values = categ.color takes the numbers to make the colors if categ.color is a factor
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "color", name = box.legend.name, values = rep(hsv(0, 0, 0, alpha = box.alpha), length(unique(data1[, categ[length(categ)]]))), guide = ggplot2::guide_legend(order = 1))) # , guide = ggplot2::guide_legend(override.aes = list(color = "black", alpha = box.alpha)))) # values are the values of color (which is the border color in geom_box. WARNING: values = categ.color takes the numbers to make the colors if categ.color is a factor # outline of the polygon in black but with alpha
+    }else{
+        # assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_boxplot(data = data1, mapping = ggplot2::aes_string(x = categ[1], y = y, color = categ[length(categ)], fill = categ[length(categ)]), position = ggplot2::position_dodge(width = NULL), width = box.width, size = box.line.size, notch = box.notch, alpha = box.alpha, coef = if(box.whisker.kind == "no"){0}else if(box.whisker.kind == "std"){1.5}else if(box.whisker.kind == "max"){Inf}, outlier.shape = if( ! is.null(dot.color)){NA}else{21}, outlier.color = if( ! is.null(dot.color)){NA}else{if(dot.border.size == 0){NA}else{dot.border.color}}, outlier.fill = if( ! is.null(dot.color)){NA}else{NULL}, outlier.size = if( ! is.null(dot.color)){NA}else{dot.size}, outlier.stroke = if( ! is.null(dot.color)){NA}else{dot.border.size}, outlier.alpha = if( ! is.null(dot.color)){NA}else{dot.alpha})) # the color, size, etc. of the outliers are dealt here. outlier.color = NA to do not plot outliers when dots are already plotted
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_path(
+            data = tempo.polygon, 
+            mapping = ggplot2::aes_string(x = "X", y = "Y", group = "BOX", color = categ[length(categ)]), 
+            size = box.line.size, 
+            alpha = box.alpha, 
+            lineend = "round", 
+            linejoin = "round"
+        ))
+        coord.names <- c(coord.names, "main.box")
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_segment(data = stat, mapping = ggplot2::aes(x = if(box.notch == FALSE){X_BOX_INF}else{X_NOTCH_INF}, xend = if(box.notch == FALSE){X_BOX_SUP}else{X_NOTCH_SUP}, y = MEDIAN, yend = MEDIAN, group = categ[length(categ)]), color = stat$COLOR, size = box.line.size * 2, alpha = box.alpha)) # 
+        coord.names <- c(coord.names, "median")
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_segment(data = stat, mapping = ggplot2::aes(x = X, xend = X, y = BOX_SUP, yend = WHISK_SUP, group = categ[length(categ)]), color = stat$COLOR, size = box.line.size, alpha = box.alpha)) # 
+        coord.names <- c(coord.names, "sup.whisker")
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_segment(data = stat, mapping = ggplot2::aes(x = X, xend = X, y = BOX_INF, yend = WHISK_INF, group = categ[length(categ)]), color = stat$COLOR, size = box.line.size, alpha = box.alpha)) # 
+        coord.names <- c(coord.names, "inf.whisker")
+        if(box.whisker.width > 0){
+            assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_segment(data = stat, mapping = ggplot2::aes(x = X_WHISK_INF, xend = X_WHISK_SUP, y = WHISK_SUP, yend = WHISK_SUP, group = categ[length(categ)]), color = stat$COLOR, size = box.line.size, alpha = box.alpha, lineend = "round")) # 
+            coord.names <- c(coord.names, "sup.whisker.edge")
+            assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_segment(data = stat, mapping = ggplot2::aes(x = X_WHISK_INF, xend = X_WHISK_SUP, y = WHISK_INF, yend = WHISK_INF, group = categ[length(categ)]), color = stat$COLOR, size = box.line.size, alpha = box.alpha, lineend = "round")) # 
+            coord.names <- c(coord.names, "inf.whisker.edge")
+        }
+        if(box.mean == TRUE){
+            # assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_point(data = stat, mapping = ggplot2::aes_string(x = "X", y = "MEAN", group = categ[length(categ)]), shape = 23, stroke = box.line.size * 2, color = stat$COLOR, size = box.mean.size, fill = NA, alpha = box.alpha)) # group used in aesthetic to do not have it in the legend. Here ggplot2::scale_discrete_manual() cannot be used because of the group easthetic
+            assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_path(
+                data = tempo.diamon.mean, 
+                mapping = ggplot2::aes(x = X, y = Y, group = GROUP), 
+                color = tempo.diamon.mean[, "COLOR"], 
+                size = box.line.size, 
+                alpha = box.alpha, 
+                lineend = "round", 
+                linejoin = "round"
+            ))
+            coord.names <- c(coord.names, "mean")
+        }
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "fill", name = box.legend.name, values = rep(NA, length(unique(data1[, categ[length(categ)]]))))) #, guide = ggplot2::guide_legend(override.aes = list(color = categ.color)))) # values are the values of color (which is the border color in geom_box. WARNING: values = categ.color takes the numbers to make the colors if categ.color is a factor
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "color", name = box.legend.name, values = if(length(categ.color)== 1L){rep(categ.color, length(unique(data1[, categ[length(categ)]])))}else{categ.color}, guide = ggplot2::guide_legend(override.aes = list(alpha = if(plot == TRUE & ((length(dev.list()) > 0 & names(dev.cur()) == "windows") | (length(dev.list()) == 0L & Sys.info()["sysname"] == "Windows"))){1}else{box.alpha})))) # , guide = ggplot2::guide_legend(override.aes = list(color = as.character(categ.color))))) # values are the values of color (which is the border color in geom_box. WARNING: values = categ.color takes the numbers to make the colors if categ.color is a factor
+        if(plot == TRUE & ((length(dev.list()) > 0 & names(dev.cur()) == "windows") | (length(dev.list()) == 0L & Sys.info()["sysname"] == "Windows"))){ # if any Graph device already open and this device is "windows", or if no Graph device opened yet and we are on windows system -> prevention of alpha legend bug on windows using value 1
+            # to avoid a bug on windows: if alpha argument is different from 1 for lines (transparency), then lines are not correctly displayed in the legend when using the R GUI (bug https://github.com/tidyverse/ggplot2/issues/2452). No bug when using a pdf
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") GRAPHIC DEVICE USED ON A WINDOWS SYSTEM ->\nTRANSPARENCY OF THE LINES IS INACTIVATED IN THE LEGEND TO PREVENT A WINDOWS DEPENDENT BUG (SEE https://github.com/tidyverse/ggplot2/issues/2452)\nTO OVERCOME THIS ON WINDOWS, USE ANOTHER DEVICE (pdf() FOR INSTANCE)")
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        }
+    }
+    if(box.alpha == 0){ # remove box legend because no boxes drawn
+        # add this after the scale_xxx_manual() for boxplots
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::guides(fill = FALSE, color = FALSE)) # inactivate the legend
+    }
+    # end boxplot display (if box.fill = FALSE, otherwise, already plotted above)
+    
+    
+    
+    
+    # stat display
+    # layer after dots but ok, behind dots on the plot
+    if( ! is.null(stat.pos)){
+        warn.count <- warn.count + 1
+        tempo.warn <- paste0("(", warn.count,") NUMBERS DISPLAYED ARE ", ifelse(stat.mean == FALSE, "MEDIANS", "MEANS"))
+        warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        if(stat.pos == "top"){
+            tempo.stat <- data.frame(stat, Y = y.lim[2], stringsAsFactors = TRUE) # I had to create a data frame for geom_tex() so that facet is taken into account, (ggplot2::annotate() does not deal with facet because no data and mapping arguments). Of note, facet.categ is in tempo.stat, via tempo.mean, via dot.coord
+            if(stat.mean == FALSE){tempo.stat$MEDIAN <- formatC(stat.nolog$MEDIAN, digit = 2, drop0trailing = TRUE, format = "f")}else{tempo.stat$MEAN <- formatC(stat.nolog$MEAN, digit = 2, drop0trailing = TRUE, format = "f")}
+            assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_text(
+                data = tempo.stat, 
+                mapping = ggplot2::aes_string(x = "X", y = "Y", label = ifelse(stat.mean == FALSE, "MEDIAN", "MEAN")),
+                size = stat.size, 
+                color = "black", 
+                angle = stat.angle, 
+                hjust = stat.just$hjust, 
+                vjust = stat.just$vjust
+            )) # stat$X used here because identical to stat.nolog but has the X. WARNING: no need of order() for labels because box.coord$x set the order. For justification, see https://stackoverflow.com/questions/7263849/what-do-hjust-and-vjust-do-when-making-a-plot-using-ggplot
+            coord.names <- c(coord.names, "stat.pos")
+        }else if(stat.pos == "above"){
+            # stat coordinates
+            if( ! is.null(dot.color)){ # for text just above max dot
+                if(dot.tidy == FALSE){
+                    tempo.stat.ini <- dot.coord.rd3
+                }else if(dot.tidy == TRUE){
+                    tempo.stat.ini <- dot.coord.tidy3
+                    tempo.stat.ini$x.y <- tempo.stat.ini$x.x # this is just to be able to use tempo.stat.ini$x.y for untidy or tidy dots (remember that dot.coord.tidy3$x.y is not good, see above)
+                }
+                stat.coord1 <- aggregate(x = tempo.stat.ini["y"], by = {x.env <- if(length(categ)== 1L){list(tempo.stat.ini$group, tempo.stat.ini$PANEL, tempo.stat.ini$x.y, tempo.stat.ini[, categ[1]])}else if(length(categ) == 2L){list(tempo.stat.ini$group, tempo.stat.ini$PANEL, tempo.stat.ini$x.y, tempo.stat.ini[, categ[1]], tempo.stat.ini[, categ[2]])} ; names(x.env) <- if(length(categ)== 1L){c("group", "PANEL", "x.y", categ[1])}else if(length(categ) == 2L){c("group", "PANEL", "x.y", categ[1], categ[2])} ; x.env}, FUN = min, na.rm = TRUE)
+                names(stat.coord1)[names(stat.coord1) == "y"] <- "dot.min"
+                stat.coord2 <- aggregate(x = tempo.stat.ini["y"], by = {x.env <- if(length(categ)== 1L){list(tempo.stat.ini$group, tempo.stat.ini$PANEL, tempo.stat.ini$x.y, tempo.stat.ini[, categ[1]])}else if(length(categ) == 2L){list(tempo.stat.ini$group, tempo.stat.ini$PANEL, tempo.stat.ini$x.y, tempo.stat.ini[, categ[1]], tempo.stat.ini[, categ[2]])} ; names(x.env) <- if(length(categ)== 1L){c("group", "PANEL", "x.y", categ[1])}else if(length(categ) == 2L){c("group", "PANEL", "x.y", categ[1], categ[2])} ; x.env}, FUN = max, na.rm = TRUE)
+                names(stat.coord2) <- paste0(names(stat.coord2), "_from.dot.max")
+                names(stat.coord2)[names(stat.coord2) == "y_from.dot.max"] <- "dot.max"
+                stat.coord3 <- cbind(box.coord[order(box.coord$group, box.coord$PANEL), ], stat.coord1[order(stat.coord1$group, stat.coord1$x.y), ], stat.coord2[order(stat.coord2$group, stat.coord2$x.y), ], stringsAsFactors = TRUE) # 
+                if( ! all(identical(round(stat.coord3$x, 9), round(as.numeric(stat.coord3$x.y), 9)), na.rm = TRUE)){ # as.numeric() because stat.coord3$x is class "mapped_discrete" "numeric"
+                    tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nFUSION OF box.coord, stat.coord1 AND stat.coord2 ACCORDING TO box.coord$x, stat.coord1$x.y AND stat.coord2$x.y IS NOT CORRECT. CODE HAS TO BE MODIFIED")
+                    stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+                }
+                # text.coord <- stat.coord3[, c("x", "group", "dot.min", "dot.max")]
+                # names(text.coord)[names(text.coord) == "dot.min"] <- "text.min.pos"
+                #names(text.coord)[names(text.coord) == "dot.max"] <- "text.max.pos"
+                box.coord <- box.coord[order(box.coord$x, box.coord$group, box.coord$PANEL), ]
+                # text.coord <- text.coord[order(text.coord$x), ] # to be sure to have the two objects in the same order for x. WARNING: cannot add identical(as.integer(text.coord$group), as.integer(box.coord$group)) because with error, the correspondence between x and group is not the same
+                stat.coord3 <- stat.coord3[order(stat.coord3$x, stat.coord3$group, stat.coord3$PANEL), ] # to be sure to have the two objects in the same order for x. WARNING: cannot add identical(as.integer(text.coord$group), as.integer(box.coord$group)) because with error, the correspondence between x and group is not the same
+                if( ! (identical(box.coord$x, stat.coord3$x) & identical(box.coord$group, stat.coord3$group) & identical(box.coord$PANEL, stat.coord3$PANEL))){
+                    tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\ntext.coord AND box.coord DO NOT HAVE THE SAME x, group AND PANEL COLUMN CONTENT")
+                    stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+                }
+            }else{
+                stat.coord3 <- box.coord
+            }
+            stat.coord3 <- data.frame(
+                stat.coord3, 
+                Y = stat.coord3[, ifelse(
+                    is.null(dot.color), 
+                    ifelse(diff(y.lim) > 0, "ymax", "ymin"), 
+                    ifelse(diff(y.lim) > 0, "ymax_final", "ymin_final")
+                )], 
+                stringsAsFactors = TRUE
+            ) # ymax is top whisker, ymax_final is top dot
+            # stat.coord3 <- data.frame(stat.coord3, Y = vector("numeric", length = nrow(stat.coord3)), stringsAsFactors = TRUE)
+            # check.Y <- as.logical(stat.coord3$Y) # convert everything in Y into FALSE (because Y is full of zero)
+            # end stat coordinates
+            # stat display
+            # performed twice: first for y values >=0, then y values < 0, because only a single value allowed for hjust anf vjust
+            if(stat.mean == FALSE){
+                tempo.center.ref <- "middle"
+            }else{
+                tempo.center.ref <- "MEAN"
+            }
+            # if(is.null(dot.color)){
+            # tempo.low.ref <- "ymin"
+            # tempo.high.ref <- "ymax"
+            # }else{
+            # tempo.low.ref <- "ymin_final"
+            # tempo.high.ref <- "ymax_final"
+            # }
+            # tempo.log.high <- if(diff(y.lim) > 0){stat.coord3[, tempo.center.ref] >= 0}else{stat.coord3[, tempo.center.ref] < 0}
+            # tempo.log.low <- if(diff(y.lim) > 0){stat.coord3[, tempo.center.ref] < 0}else{stat.coord3[, tempo.center.ref] >= 0}
+            # stat.coord3$Y[tempo.log.high] <- stat.coord3[tempo.log.high, tempo.high.ref]
+            # stat.coord3$Y[tempo.log.low] <- stat.coord3[tempo.log.low, tempo.low.ref]
+            # add distance
+            stat.coord3$Y <- stat.coord3$Y + diff(y.lim) * stat.dist / 100
+            # end add distance
+            # correct median or mean text format
+            if(y.log != "no"){
+                stat.coord3[, tempo.center.ref] <- ifelse(y.log == "log2", 2, 10)^(stat.coord3[, tempo.center.ref])
+            }
+            stat.coord3[, tempo.center.ref] <- formatC(stat.coord3[, tempo.center.ref], digit = 2, drop0trailing = TRUE, format = "f")
+            # end correct median or mean text format
+            # if(any(tempo.log.high) == TRUE){
+            # tempo.stat <- stat.coord3[tempo.log.high,]
+            assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_text(
+                data = stat.coord3, 
+                mapping = ggplot2::aes_string(x = "x", y = "Y", label = tempo.center.ref),
+                size = stat.size, 
+                color = "black", 
+                angle = stat.angle, 
+                hjust = stat.just$hjust, 
+                vjust = stat.just$vjust
+            )) # WARNING: no need of order() for labels because box.coord$x set the order
+            coord.names <- c(coord.names, "stat.pos")
+            # }
+            # if(any(tempo.log.low) == TRUE){
+            # tempo.stat <- stat.coord3[tempo.log.low,]
+            # assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_text(
+            # data = tempo.stat, 
+            # mapping = ggplot2::aes_string(x = "x", y = "Y", label = tempo.center.ref),
+            # size = stat.size, 
+            # color = "black", 
+            # hjust = ifelse(vertical == TRUE, 0.5, 0.5 + stat.dist), 
+            # vjust = ifelse(vertical == TRUE, 0.5 + stat.dist, 0.5)
+            # )) # WARNING: no need of order() for labels because box.coord$x set the order
+            # coord.names <- c(coord.names, "stat.pos.negative")
+            # }
+            # end stat display
+        }else{
+            tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nCODE INCONSISTENCY 5")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+        }
+    }
+    # end stat display
+    # legend management
+    if(legend.show == FALSE){ # must be here because must be before bef.final.plot <- 
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::guides(fill = FALSE, color = FALSE, alpha = FALSE)) # inactivate the initial legend
+    }
+    # end legend management
+    
+    
+    
+    # y scale management (cannot be before dot plot management)
+    # the rescaling aspect is complicated and not intuitive. See:
+    # explaination: https://github.com/tidyverse/ggplot2/issues/3948
+    # the oob argument of scale_y_continuous() https://ggplot2.tidyverse.org/reference/scale_continuous.html
+    # see also https://github.com/rstudio/cheatsheets/blob/master/data-visualization-2.1.pdf
+    # secondary ticks
+    bef.final.plot <- ggplot2::ggplot_build(eval(parse(text = paste(paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "), ' + if(vertical == TRUE){ggplot2::scale_y_continuous(expand = c(0, 0), limits = sort(y.lim), oob = scales::rescale_none)}else{ggplot2::coord_flip(ylim = y.lim)}')))) # here I do not need the x-axis and y-axis orientation, I just need the number of main ticks and the legend. I DI NOT UNDERSTAND THE COMMENT HERE BECAUSE WE NEED COORD_FLiP
+    tempo.coord <- bef.final.plot$layout$panel_params[[1]]
+    # y.second.tick.positions: coordinates of secondary ticks (only if y.second.tick.nb argument is non NULL or if y.log argument is different from "no")
+    if(y.log != "no"){ # integer main ticks for log2 and log10
+        tempo.scale <- (as.integer(min(y.lim, na.rm = TRUE)) - 1):(as.integer(max(y.lim, na.rm = TRUE)) + 1)
+    }else{
+        tempo <- if(is.null(attributes(tempo.coord$y$breaks))){tempo.coord$y$breaks}else{unlist(attributes(tempo.coord$y$breaks))}
+        if(all(is.na(tempo))){# all() without na.rm -> ok because is.na() cannot be NA
+            tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nONLY NA IN tempo.coord$y$breaks")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+        }
+        tempo.scale <- fun_scale(lim = y.lim, n = ifelse(is.null(y.tick.nb), length(tempo[ ! is.na(tempo)]), y.tick.nb)) # in ggplot 3.3.0, tempo.coord$y.major_source replaced by tempo.coord$y$breaks. If fact: n = ifelse(is.null(y.tick.nb), length(tempo[ ! is.na(tempo)]), y.tick.nb)) replaced by n = ifelse(is.null(y.tick.nb), 4, y.tick.nb))
+    }
+    y.second.tick.values <- NULL
+    y.second.tick.pos <- NULL
+    if(y.log != "no"){
+        tempo <- fun_inter_ticks(lim = y.lim, log = y.log)
+        y.second.tick.values <- tempo$values
+        y.second.tick.pos <- tempo$coordinates
+        # if(vertical == TRUE){ # do not remove in case the bug is fixed
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", y = y.second.tick.pos, yend = y.second.tick.pos, x = tempo.coord$x.range[1], xend = tempo.coord$x.range[1] + diff(tempo.coord$x.range) / 80))
+        # }else{ # not working because of the ggplot2 bug
+        # assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", x = y.second.tick.pos, xend = y.second.tick.pos, y = tempo.coord$y.range[1], yend = tempo.coord$y.range[1] + diff(tempo.coord$y.range) / 80))
+        # }
+        coord.names <- c(coord.names, "y.second.tick.positions")
+    }else if(( ! is.null(y.second.tick.nb)) & y.log == "no"){
+        # if(y.second.tick.nb > 0){ #inactivated because already checked before
+        if(length(tempo.scale) < 2){
+            tempo.cat1 <- c("y.tick.nb", "y.second.tick.nb")
+            tempo.cat2 <- sapply(list(y.tick.nb, y.second.tick.nb), FUN = paste0, collapse = " ")
+            tempo.sep <- sapply(mapply(" ", max(nchar(tempo.cat1)) - nchar(tempo.cat1) + 3, FUN = rep, SIMPLIFY = FALSE), FUN = paste0, collapse = "")
+            tempo.cat <- paste0("ERROR IN ", function.name, "\nTHE NUMBER OF GENERATED TICKS FOR THE Y-AXIS IS NOT CORRECT: ", length(tempo.scale), "\nUSING THESE ARGUMENT SETTINGS (NO DISPLAY MEANS NULL VALUE):\n", paste0(tempo.cat1, tempo.sep, tempo.cat2, collapse = "\n"), "\nPLEASE, TEST OTHER VALUES")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+        }else{
+            tempo <- fun_inter_ticks(lim = y.lim, log = y.log, breaks = tempo.scale, n = y.second.tick.nb)
+        }
+        y.second.tick.values <- tempo$values
+        y.second.tick.pos <- tempo$coordinates
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(
+            geom = "segment", 
+            y = y.second.tick.pos, 
+            yend = y.second.tick.pos, 
+            x = if(vertical == TRUE){tempo.coord$x.range[1]}else{tempo.coord$y.range[1]}, 
+            xend = if(vertical == TRUE){tempo.coord$x.range[1] + diff(tempo.coord$x.range) / 80}else{tempo.coord$y.range[1] + diff(tempo.coord$y.range) / 80}
+        ))
+        coord.names <- c(coord.names, "y.second.tick.positions")
+    }
+    # end y.second.tick.positions
+    # for the ggplot2 bug with y.log, this does not work: eval(parse(text = ifelse(vertical == FALSE & y.log == "log10", "ggplot2::scale_x_continuous", "ggplot2::scale_y_continuous")))
+    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_y_continuous(
+        breaks = tempo.scale, 
+        minor_breaks = y.second.tick.pos, 
+        labels = if(y.log == "log10"){scales::trans_format("identity", scales::math_format(10^.x))}else if(y.log == "log2"){scales::trans_format("identity", scales::math_format(2^.x))}else if(y.log == "no"){ggplot2::waiver()}else{tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nCODE INCONSISTENCY 6") ; stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)}, # == in stop() to be able to add several messages between ==
+        expand = c(0, 0), # remove space after after axis limits
+        limits = sort(y.lim), # NA indicate that limits must correspond to data limits but ylim() already used
+        oob = scales::rescale_none, 
+        trans = ifelse(diff(y.lim) < 0, "reverse", "identity") # equivalent to ggplot2::scale_y_reverse() but create the problem of y-axis label disappearance with y.lim decreasing. Thus, do not use. Use ylim() below and after this
+    ))
+    if(vertical == TRUE){
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::coord_cartesian(ylim = y.lim)) # problem of ggplot2::ylim() is that it redraws new breaks # coord_cartesian(ylim = y.lim)) not used because bug -> y-axis label disappearance with y.lim decreasing I DO NOT UNDERSTAND THIS MESSAGE WHILE I USE COORD_CARTESIAN # clip = "off" to have secondary ticks outside plot region does not work
+    }else{
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::coord_flip(ylim = y.lim)) # clip = "off" to have secondary ticks outside plot region does not work # create the problem of y-axis label disappearance with y.lim decreasing. IDEM ABOVE
+        
+    }
+    # end y scale management (cannot be before dot plot management)
+    
+    
+    # legend management
+    if( ! is.null(legend.width)){
+        legend.final <- fun_gg_get_legend(ggplot_built = bef.final.plot, fun.name = function.name, lib.path = lib.path) # get legend
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::guides(fill = FALSE, color = FALSE, alpha = FALSE)) # inactivate the initial legend
+        if(is.null(legend.final) & plot == TRUE){ # even if any(unlist(legend.disp)) is TRUE
+            legend.final <- ggplot2::ggplot()+ggplot2::theme_void() # empty graph instead of legend
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") LEGEND REQUESTED (NON NULL categ ARGUMENT OR legend.show ARGUMENT SET TO TRUE)\nBUT IT SEEMS THAT THE PLOT HAS NO LEGEND -> EMPTY LEGEND SPACE CREATED BECAUSE OF THE NON NULL legend.width ARGUMENT\n")
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        }
+    }
+    # end legend management
+    
+    
+    # drawing
+    fin.plot <- suppressMessages(suppressWarnings(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + ")))))
+    grob.save <- NULL
+    if(plot == TRUE){
+        # following lines inactivated because of problem in warn.recov and message.recov
+        # assign("env_fun_get_message", new.env())
+        # assign("tempo.gg.name", tempo.gg.name, envir = env_fun_get_message)
+        # assign("tempo.gg.count", tempo.gg.count, envir = env_fun_get_message)
+        # assign("add", add, envir = env_fun_get_message)
+        # two next line: for the moment, I cannot prevent the warning printing
+        # warn.recov <- fun_get_message(paste(paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "), if(is.null(add)){NULL}else{add}), kind = "warning", header = FALSE, print.no = FALSE, env = env_fun_get_message) # for recovering warnings printed by ggplot() functions
+        # message.recov <- fun_get_message('print(eval(parse(text = paste(paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "), if(is.null(add)){NULL}else{add}))))', kind = "message", header = FALSE, print.no = FALSE, env = env_fun_get_message) # for recovering messages printed by ggplot() functions
+        # if( ! (return == TRUE & return.ggplot == TRUE)){ # because return() plots when return.ggplot is TRUE # finally not used -> see return.ggplot description
+        if(is.null(legend.width)){
+            grob.save <- suppressMessages(suppressWarnings(gridExtra::grid.arrange(fin.plot)))
+        }else{
+            grob.save <-suppressMessages(suppressWarnings(gridExtra::grid.arrange(fin.plot, legend.final, ncol=2, widths=c(1, legend.width))))
+        }
+        # }
+        # suppressMessages(suppressWarnings(print(eval(parse(text = paste(paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "), if(is.null(add)){NULL}else{add}))))))
+    }else{
+        # following lines inactivated because of problem in warn.recov and message.recov
+        # message.recov <- NULL
+        # warn.recov <- NULL
+        warn.count <- warn.count + 1
+        tempo.warn <- paste0("(", warn.count,") PLOT NOT SHOWN AS REQUESTED")
+        warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+    }
+    # end drawing
+    
+    
+    
+    # output
+    # following lines inactivated because of problem in warn.recov and message.recov
+    # if( ! (is.null(warn) & is.null(warn.recov) & is.null(message.recov))){
+    # warn <- paste0(warn, "\n\n", if(length(warn.recov) > 0 | length(message.recov) > 0){paste0(paste0("MESSAGES FROM ggplot2 FUNCTIONS: ", ifelse( ! is.null(warn.recov), unique(message.recov), ""), ifelse( ! is.null(message.recov), unique(message.recov), ""), collapse = "\n\n"), "\n\n")})
+    # }else if( ! (is.null(warn) & is.null(warn.recov)) & is.null(message.recov)){
+    # warn <- paste0(warn, "\n\n", if(length(warn.recov) > 0){paste0(paste0("MESSAGES FROM ggplot2 FUNCTIONS: ", unique(warn.recov), collapse = "\n\n"), "\n\n")})
+    # }else if( ! (is.null(warn) & is.null(message.recov)) & is.null(warn.recov)){
+    # warn <- paste0(warn, "\n\n", if(length(message.recov) > 0){paste0(paste0("MESSAGES FROM ggplot2 FUNCTIONS: ", unique(message.recov), collapse = "\n\n"), "\n\n")})
+    # }
+    if(warn.print == TRUE & ! is.null(warn)){
+        on.exit(warning(paste0("FROM ", function.name, ":\n\n", warn), call. = FALSE))
+    }
+    on.exit(exp = options(warning.length = ini.warning.length), add = TRUE)
+    if(return == TRUE){
+        tempo.output <- ggplot2::ggplot_build(fin.plot)
+        tempo.output$data <- tempo.output$data[-1] # remove the first data because corresponds to the initial empty boxplot
+        if(length(tempo.output$data) != length(coord.names)){
+            tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nlength(tempo.output$data) AND length(coord.names) MUST BE IDENTICAL. CODE HAS TO BE MODIFIED")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+        }else{
+            names(tempo.output$data) <- coord.names
+            tempo.output$data <- tempo.output$data[coord.names != "bad_remove"]
+        }
+        tempo <- tempo.output$layout$panel_params[[1]]
+        output <- list(
+            data = data1.ini, 
+            stat = stat.nolog, 
+            removed.row.nb = removed.row.nb, 
+            removed.rows = removed.rows, 
+            plot = c(tempo.output$data, y.second.tick.values = list(y.second.tick.values)), 
+            panel = facet.categ, 
+            axes = list(
+                x.range = tempo$x.range, 
+                x.labels = if(is.null(attributes(tempo$x$breaks))){tempo$x$breaks}else{tempo$x$scale$get_labels()}, # is.null(attributes(tempo$x$breaks)) test if it is number (TRUE) or character (FALSE)
+                x.positions = if(is.null(attributes(tempo$x$breaks))){tempo$x$breaks}else{unlist(attributes(tempo$x$breaks))}, 
+                y.range = tempo$y.range, 
+                y.labels = if(is.null(attributes(tempo$y$breaks))){tempo$y$breaks}else{tempo$y$scale$get_labels()}, 
+                y.positions = if(is.null(attributes(tempo$y$breaks))){tempo$y$breaks}else{unlist(attributes(tempo$y$breaks))}
+            ), 
+            warn = paste0("\n", warn, "\n\n"), 
+            ggplot = if(return.ggplot == TRUE){fin.plot}else{NULL}, # fin.plot plots the graph if return == TRUE
+            gtable = if(return.gtable == TRUE){grob.save}else{NULL} 
+        )
+        return(output) # this plots the graph if return.ggplot is TRUE and if no assignment
+    }
+    # end output
+    # end main code
 }
-# end conversion of geom_hline and geom_vline
-
-
 
 
-# kind of geom_point (vectorial or raster)
-scatter.kind <- vector("list", length = length(data1)) # list of same length as data1, that will be used to use either ggplot2::geom_point() (vectorial dot layer) or fun_gg_point_rast() (raster dot layer)
-fix.ratio <- FALSE
-if(is.null(raster.threshold)){
-if(raster == TRUE){
-scatter.kind[] <- "fun_gg_point_rast" # not important to fill everything: will be only used when geom == "geom_point"
-fix.ratio <- TRUE
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") RASTER PLOT GENERATED -> ASPECT RATIO OF THE PLOT REGION SET BY THE raster.ratio ARGUMENT (", fun_round(raster.ratio, 2), ") TO AVOID A BUG OF ELLIPSOID DOT DRAWING")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}else{
-scatter.kind[] <- "ggplot2::geom_point"
-}
-}else{
-for(i2 in 1:length(data1)){
-if(geom[[i2]] == "geom_point"){
-if(nrow(data1[[i2]]) <= raster.threshold){
-scatter.kind[[i2]] <- "ggplot2::geom_point"
-}else{
-scatter.kind[[i2]] <- "fun_gg_point_rast"
-fix.ratio <- TRUE
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i2, " OF data1 ARGUMENT")), " LAYER AS RASTER (NOT VECTORIAL)")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-}
-if(any(unlist(scatter.kind) == "fun_gg_point_rast")){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") RASTER PLOT GENERATED -> ASPECT RATIO OF THE PLOT REGION SET BY THE raster.ratio ARGUMENT (", fun_round(raster.ratio, 2), ") TO AVOID A BUG OF ELLIPSOID DOT DRAWING")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}
-# end kind of geom_point (vectorial or raster)
-
-
-
-
-# no need loop part
-coord.names <- NULL
-tempo.gg.name <- "gg.indiv.plot."
-tempo.gg.count <- 0
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = paste0("ggplot2::ggplot()", if(is.null(add)){""}else{add})))) # add added here to have the facets
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::xlab(if(is.null(x.lab)){x[[1]]}else{x.lab}))
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ylab(if(is.null(y.lab)){y[[1]]}else{y.lab}))
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ggtitle(title))
-# text angle management
-x.tempo.just <- fun_gg_just(angle = x.text.angle, pos = "bottom", kind = "axis")
-y.tempo.just <- fun_gg_just(angle = y.text.angle, pos = "left", kind = "axis")
-# end text angle management
-add.check <- TRUE
-if( ! is.null(add)){ # if add is NULL, then = 0
-if(grepl(pattern = "ggplot2::theme", add) == TRUE){
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") \"ggplot2::theme\" STRING DETECTED IN THE add ARGUMENT\n-> INTERNAL GGPLOT2 THEME FUNCTIONS theme() AND theme_classic() HAVE BEEN INACTIVATED, TO BE USED BY THE USER\n-> article ARGUMENT WILL BE IGNORED\nIT IS RECOMMENDED TO USE \"+ theme(aspect.ratio = raster.ratio)\" IF RASTER MODE IS ACTIVATED")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-add.check <- FALSE
-}
-}
-if(add.check == TRUE & article == TRUE){
-# WARNING: not possible to add several times theme(). NO message but the last one overwrites the others
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::theme_classic(base_size = text.size))
-if(grid == TRUE){
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
-text = ggplot2::element_text(size = text.size), 
-plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
-legend.key = ggplot2::element_rect(color = "white", size = 1.5), # size of the frame of the legend
-line = ggplot2::element_line(size = 0.5), 
-axis.line.y.left = ggplot2::element_line(colour = "black"), # draw lines for the y axis
-axis.line.x.bottom = ggplot2::element_line(colour = "black"), # draw lines for the x axis
-panel.grid.major.x = ggplot2::element_line(colour = "grey85", size = 0.75), 
-panel.grid.minor.x = ggplot2::element_line(colour = "grey90", size = 0.25), 
-panel.grid.major.y = ggplot2::element_line(colour = "grey85", size = 0.75), 
-panel.grid.minor.y = ggplot2::element_line(colour = "grey90", size = 0.25), 
-axis.text.x = ggplot2::element_text(angle = x.tempo.just$angle, hjust = x.tempo.just$hjust, vjust = x.tempo.just$vjust),
-axis.text.y = ggplot2::element_text(angle = y.tempo.just$angle, hjust = y.tempo.just$hjust, vjust = y.tempo.just$vjust), 
-aspect.ratio = if(fix.ratio == TRUE){raster.ratio}else{NULL} # for raster
-))
-}else{
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
-text = ggplot2::element_text(size = text.size), 
-plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
-line = ggplot2::element_line(size = 0.5), 
-legend.key = ggplot2::element_rect(color = "white", size = 1.5), # size of the frame of the legend
-axis.line.y.left = ggplot2::element_line(colour = "black"), 
-axis.line.x.bottom = ggplot2::element_line(colour = "black"), 
-axis.text.x = ggplot2::element_text(angle = x.tempo.just$angle, hjust = x.tempo.just$hjust, vjust = x.tempo.just$vjust),
-axis.text.y = ggplot2::element_text(angle = y.tempo.just$angle, hjust = y.tempo.just$hjust, vjust = y.tempo.just$vjust), 
-aspect.ratio = if(fix.ratio == TRUE){raster.ratio}else{NULL} # for raster
-))
-}
-}else if(add.check == TRUE & article == FALSE){
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
-text = ggplot2::element_text(size = text.size), 
-plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
-line = ggplot2::element_line(size = 0.5), 
-legend.key = ggplot2::element_rect(color = "white", size = 1.5), # size of the frame of the legend
-panel.background = ggplot2::element_rect(fill = "grey95"), 
-axis.line.y.left = ggplot2::element_line(colour = "black"), 
-axis.line.x.bottom = ggplot2::element_line(colour = "black"), 
-panel.grid.major.x = ggplot2::element_line(colour = "grey85", size = 0.75), 
-panel.grid.minor.x = ggplot2::element_line(colour = "grey90", size = 0.25), 
-panel.grid.major.y = ggplot2::element_line(colour = "grey85", size = 0.75), 
-panel.grid.minor.y = ggplot2::element_line(colour = "grey90", size = 0.25), 
-strip.background = ggplot2::element_rect(fill = "white", colour = "black"), 
-axis.text.x = ggplot2::element_text(angle = x.tempo.just$angle, hjust = x.tempo.just$hjust, vjust = x.tempo.just$vjust),
-axis.text.y = ggplot2::element_text(angle = y.tempo.just$angle, hjust = y.tempo.just$hjust, vjust = y.tempo.just$vjust), 
-aspect.ratio = if(fix.ratio == TRUE){raster.ratio}else{NULL} # for raster
-# do not work -> legend.position = "none" # to remove the legend completely: https://www.datanovia.com/en/blog/how-to-remove-legend-from-a-ggplot/
-))
-}
-# end no need loop part
-
-
-# loop part
-point.count <- 0
-line.count <- 0
-lg.order <- vector(mode = "list", length = 6) # order of the legend
-lg.order <- lapply(lg.order, as.numeric) # order of the legend
-lg.color <- vector(mode = "list", length = 6) # color of the legend
-lg.dot.shape <- vector(mode = "list", length = 6) # etc.
-lg.dot.size <- vector(mode = "list", length = 6) # etc.
-lg.dot.size <- lapply(lg.dot.size, as.numeric) # etc.
-lg.dot.border.size <- vector(mode = "list", length = 6) # etc.
-lg.dot.border.size <- lapply(lg.dot.border.size, as.numeric) # etc.
-lg.dot.border.color <- vector(mode = "list", length = 6) # etc.
-lg.line.size <- vector(mode = "list", length = 6) # etc.
-lg.line.size <- lapply(lg.line.size, as.numeric) # etc.
-lg.line.type <- vector(mode = "list", length = 6) # etc.
-lg.alpha <- vector(mode = "list", length = 6) # etc.
-lg.alpha <- lapply(lg.alpha, as.numeric) # etc.
-for(i1 in 1:length(data1)){
-if(geom[[i1]] == "geom_point"){
-point.count <- point.count + 1
-if(point.count== 1L){
-fin.lg.disp[[1]] <- legend.disp[[point.count + line.count]]
-lg.order[[1]] <- point.count + line.count
-lg.color[[1]] <- color[[i1]] # if color == NULL -> NULL
-lg.dot.shape[[1]] <- dot.shape[[i1]]
-lg.dot.size[[1]] <- dot.size[[i1]]
-lg.dot.border.size[[1]] <- dot.border.size[[i1]]
-lg.dot.border.color[[1]] <- dot.border.color[[i1]] # if dot.border.color == NULL -> NULL
-if(plot == TRUE & fin.lg.disp[[1]] == TRUE & dot.shape[[1]] %in% 0:14 & ((length(dev.list()) > 0 & names(dev.cur()) == "windows") | (length(dev.list())== 0L & Sys.info()["sysname"] == "Windows"))){ # if any Graph device already open and this device is "windows", or if no Graph device opened yet and we are on windows system -> prevention of alpha legend bug on windows using value 1
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") GRAPHIC DEVICE USED ON A WINDOWS SYSTEM ->\nTRANSPARENCY OF THE DOTS (DOT LAYER NUMBER ", point.count, ") IS INACTIVATED IN THE LEGEND TO PREVENT A WINDOWS DEPENDENT BUG (SEE https://github.com/tidyverse/ggplot2/issues/2452)\nTO OVERCOME THIS ON WINDOWS, USE ANOTHER DEVICE (pdf() FOR INSTANCE)")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-lg.alpha[[1]] <- 1 # to avoid a bug on windows: if alpha argument is different from 1 for lines (transparency), then lines are not correctly displayed in the legend when using the R GUI (bug https://github.com/tidyverse/ggplot2/issues/2452). No bug when using a pdf
-}else{
-lg.alpha[[1]] <- alpha[[i1]]
-}
-class.categ <- levels(factor(data1[[i1]][, categ[[i1]]]))
-for(i5 in 1:length(color[[i1]])){ # or length(class.categ). It is the same because already checked that lengths are the same
-tempo.data.frame <- data1[[i1]][data1[[i1]][, categ[[i1]]] == class.categ[i5], ]
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = scatter.kind[[i1]]))(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], fill = categ[[i1]]), shape = dot.shape[[i1]], size = dot.size[[i1]], stroke = dot.border.size[[i1]], color = if(dot.shape[[i1]] %in% 21:24 & ! is.null(dot.border.color)){dot.border.color[[i1]]}else{color[[i1]][i5]}, alpha = alpha[[i1]], show.legend = if(i5== 1L){TRUE}else{FALSE})) # WARNING: a single color allowed for color argument outside aesthetic, but here a single color for border --> loop could be inactivated but kept for commodity # legend.show option do not remove the legend, only the aesthetic of the legend (dot, line, etc.). Used here to avoid multiple layers of legend which corrupt transparency
-coord.names <- c(coord.names, paste0(geom[[i1]], ".", class.categ[i5]))
-}
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_fill_manual(name = if(is.null(legend.name)){NULL}else{legend.name[[i1]]}, values = as.character(color[[i1]]), breaks = class.categ)) # values are the values of fill, breaks reorder the classes according to class.categ in the legend, order argument of guide_legend determines the order of the different aesthetics in the legend (not order of classes). See guide_legend settings of scale_..._manual below
-}
-if(point.count== 2L){
-fin.lg.disp[[2]] <- legend.disp[[point.count + line.count]]
-lg.order[[2]] <- point.count + line.count
-lg.color[[2]] <- color[[i1]] # if color == NULL -> NULL
-lg.dot.shape[[2]] <- dot.shape[[i1]]
-lg.dot.size[[2]] <- dot.size[[i1]]
-lg.dot.border.size[[2]] <- dot.border.size[[i1]]
-lg.dot.border.color[[2]] <- dot.border.color[[i1]] # if dot.border.color == NULL -> NULL
-if(plot == TRUE & fin.lg.disp[[2]] == TRUE & dot.shape[[2]] %in% 0:14 & ((length(dev.list()) > 0 & names(dev.cur()) == "windows") | (length(dev.list())== 0L & Sys.info()["sysname"] == "Windows"))){ # if any Graph device already open and this device is "windows", or if no Graph device opened yet and we are on windows system -> prevention of alpha legend bug on windows using value 1
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") GRAPHIC DEVICE USED ON A WINDOWS SYSTEM ->\nTRANSPARENCY OF THE DOTS (DOT LAYER NUMBER ", point.count, ") IS INACTIVATED IN THE LEGEND TO PREVENT A WINDOWS DEPENDENT BUG (SEE https://github.com/tidyverse/ggplot2/issues/2452)\nTO OVERCOME THIS ON WINDOWS, USE ANOTHER DEVICE (pdf() FOR INSTANCE)")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-lg.alpha[[2]] <- 1 # to avoid a bug on windows: if alpha argument is different from 1 for lines (transparency), then lines are not correctly displayed in the legend when using the R GUI (bug https://github.com/tidyverse/ggplot2/issues/2452). No bug when using a pdf
-}else{
-lg.alpha[[2]] <- alpha[[i1]]
-}
-class.categ <- levels(factor(data1[[i1]][, categ[[i1]]]))
-for(i5 in 1:length(color[[i1]])){ # or length(class.categ). It is the same because already checked that lengths are the same
-tempo.data.frame <- data1[[i1]][data1[[i1]][, categ[[i1]]] == class.categ[i5], ]
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = scatter.kind[[i1]]))(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], shape = categ[[i1]]), size = dot.size[[i1]], stroke = dot.border.size[[i1]], fill = color[[i1]][i5], color = if(dot.shape[[i1]] %in% 21:24 & ! is.null(dot.border.color)){dot.border.color[[i1]]}else{color[[i1]][i5]}, alpha = alpha[[i1]], show.legend = FALSE)) # WARNING: a single color allowed for fill argument outside aesthetic, hence the loop # legend.show option do not remove the legend, only the aesthetic of the legend (dot, line, etc.). Used here to avoid multiple layers of legend which corrupt transparency
-coord.names <- c(coord.names, paste0(geom[[i1]], ".", class.categ[i5]))
-}
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_shape_manual(name = if(is.null(legend.name)){NULL}else{legend.name[[i1]]}, values = rep(dot.shape[[i1]], length(color[[i1]])), breaks = class.categ)) # values are the values of shape, breaks reorder the classes according to class.categ in the legend. See guide_legend settings of scale_..._manual below
-
-}
-if(point.count== 3L){
-fin.lg.disp[[3]] <- legend.disp[[point.count + line.count]]
-lg.order[[3]] <- point.count + line.count
-lg.color[[3]] <- color[[i1]] # if color == NULL -> NULL
-lg.dot.shape[[3]] <- dot.shape[[i1]]
-lg.dot.size[[3]] <- dot.size[[i1]]
-lg.dot.border.size[[3]] <- dot.border.size[[i1]]
-lg.dot.border.color[[3]] <- dot.border.color[[i1]] # if dot.border.color == NULL -> NULL
-if(plot == TRUE & fin.lg.disp[[3]] == TRUE & dot.shape[[3]] %in% 0:14 & ((length(dev.list()) > 0 & names(dev.cur()) == "windows") | (length(dev.list())== 0L & Sys.info()["sysname"] == "Windows"))){ # if any Graph device already open and this device is "windows", or if no Graph device opened yet and we are on windows system -> prevention of alpha legend bug on windows using value 1
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") GRAPHIC DEVICE USED ON A WINDOWS SYSTEM ->\nTRANSPARENCY OF THE DOTS (DOT LAYER NUMBER ", point.count, ") IS INACTIVATED IN THE LEGEND TO PREVENT A WINDOWS DEPENDENT BUG (SEE https://github.com/tidyverse/ggplot2/issues/2452)\nTO OVERCOME THIS ON WINDOWS, USE ANOTHER DEVICE (pdf() FOR INSTANCE)")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-lg.alpha[[3]] <- 1 # to avoid a bug on windows: if alpha argument is different from 1 for lines (transparency), then lines are not correctly displayed in the legend when using the R GUI (bug https://github.com/tidyverse/ggplot2/issues/2452). No bug when using a pdf
-}else{
-lg.alpha[[3]] <- alpha[[i1]]
-}
-class.categ <- levels(factor(data1[[i1]][, categ[[i1]]]))
-for(i5 in 1:length(color[[i1]])){ # or length(class.categ). It is the same because already checked that lengths are the same
-tempo.data.frame <- data1[[i1]][data1[[i1]][, categ[[i1]]] == class.categ[i5], ]
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = scatter.kind[[i1]]))(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], stroke = categ[[i1]]), shape = dot.shape[[i1]], size = dot.size[[i1]], fill = color[[i1]][i5], stroke = dot.border.size[[i1]], color = if(dot.shape[[i1]] %in% 21:24 & ! is.null(dot.border.color)){dot.border.color[[i1]]}else{color[[i1]][i5]}, alpha = alpha[[i1]], show.legend = FALSE)) # WARNING: a single color allowed for color argument outside aesthetic, hence the loop # legend.show option do not remove the legend, only the aesthetic of the legend (dot, line, etc.). Used here to avoid multiple layers of legend which corrupt transparency
-coord.names <- c(coord.names, paste0(geom[[i1]], ".", class.categ[i5]))
-}
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "stroke", name = if(is.null(legend.name)){NULL}else{legend.name[[i1]]}, values = rep(dot.border.size[[i1]], length(color[[i1]])), breaks = class.categ)) # values are the values of stroke, breaks reorder the classes according to class.categ in the legend. See guide_legend settings of scale_..._manual below
 
-}
-}else{
-line.count <- line.count + 1
-if(line.count== 1L){
-fin.lg.disp[[4]] <- legend.disp[[point.count + line.count]]
-lg.order[[4]] <- point.count + line.count
-lg.color[[4]] <- color[[i1]] # if color == NULL -> NULL
-lg.line.size[[4]] <- line.size[[i1]]
-lg.line.type[[4]] <- line.type[[i1]]
-if(plot == TRUE & fin.lg.disp[[4]] == TRUE & ((length(dev.list()) > 0 & names(dev.cur()) == "windows") | (length(dev.list())== 0L & Sys.info()["sysname"] == "Windows"))){ # if any Graph device already open and this device is "windows", or if no Graph device opened yet and we are on windows system -> prevention of alpha legend bug on windows using value 1
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") GRAPHIC DEVICE USED ON A WINDOWS SYSTEM ->\nTRANSPARENCY OF THE LINES (LINE LAYER NUMBER ", line.count, ") IS INACTIVATED IN THE LEGEND TO PREVENT A WINDOWS DEPENDENT BUG (SEE https://github.com/tidyverse/ggplot2/issues/2452)\nTO OVERCOME THIS ON WINDOWS, USE ANOTHER DEVICE (pdf() FOR INSTANCE)")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-lg.alpha[[4]] <- 1 # to avoid a bug on windows: if alpha argument is different from 1 for lines (transparency), then lines are not correctly displayed in the legend when using the R GUI (bug https://github.com/tidyverse/ggplot2/issues/2452). No bug when using a pdf
-}else{
-lg.alpha[[4]] <- alpha[[i1]]
-}
-class.categ <- levels(factor(data1[[i1]][, categ[[i1]]]))
-for(i5 in 1:length(color[[i1]])){ # or length(class.categ). It is the same because already checked that lengths are the same
-tempo.data.frame <- data1[[i1]][data1[[i1]][, categ[[i1]]] == class.categ[i5], ]
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = paste0("ggplot2::", # no CR here te0("ggpl
-ifelse(geom[[i1]] == 'geom_stick', 'geom_segment', geom[[i1]]), # geom_segment because geom_stick converted to geom_segment for plotting
-"(data = tempo.data.frame, mapping = ggplot2::aes(x = ", 
-x[[i1]], 
-ifelse(geom[[i1]] == 'geom_stick', ", yend = ", ", y = "), 
-y[[i1]], 
-if(geom[[i1]] == 'geom_stick'){paste0(', xend = ', x[[i1]], ', y = ', ifelse(is.null(geom.stick.base), y.lim[1], geom.stick.base[[i1]]))}, 
-", linetype = ", 
-categ[[i1]], 
-"), color = \"", 
-color[[i1]][i5], 
-"\", size = ", 
-line.size[[i1]], 
-ifelse(geom[[i1]] == 'geom_path', ', lineend = \"round\"', ''), 
-ifelse(geom[[i1]] == 'geom_step', paste0(', direction = \"', geom.step.dir[[i1]], '\"'), ''), 
-", alpha = ", 
-alpha[[i1]], 
-", show.legend = ", 
-ifelse(i5== 1L, TRUE, FALSE), 
-")"
-)))) # WARNING: a single color allowed for color argument outside aesthetic, hence the loop # legend.show option do not remove the legend, only the aesthetic of the legend (dot, line, etc.). Used here to avoid multiple layers of legend which corrupt transparency
-coord.names <- c(coord.names, paste0(geom[[i1]], ".", class.categ[i5]))
-}
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "linetype", name = if(is.null(legend.name)){NULL}else{legend.name[[i1]]}, values = rep(line.type[[i1]], length(color[[i1]])), breaks = class.categ)) # values are the values of linetype. 1 means solid. Regarding the alpha bug, I have tried different things without success: alpha in guide alone, in geom alone, in both, with different values, breaks reorder the classes according to class.categ in the legend
-}
-if(line.count== 2L){
-fin.lg.disp[[5]] <- legend.disp[[point.count + line.count]]
-lg.order[[5]] <- point.count + line.count
-lg.color[[5]] <- color[[i1]] # if color == NULL -> NULL
-lg.line.size[[5]] <- line.size[[i1]]
-lg.line.type[[5]] <- line.type[[i1]]
-if(plot == TRUE & fin.lg.disp[[5]] == TRUE & ((length(dev.list()) > 0 & names(dev.cur()) == "windows") | (length(dev.list())== 0L & Sys.info()["sysname"] == "Windows"))){ # if any Graph device already open and this device is "windows", or if no Graph device opened yet and we are on windows system -> prevention of alpha legend bug on windows using value 1
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") GRAPHIC DEVICE USED ON A WINDOWS SYSTEM ->\nTRANSPARENCY OF THE LINES (LINE LAYER NUMBER ", line.count, ") IS INACTIVATED IN THE LEGEND TO PREVENT A WINDOWS DEPENDENT BUG (SEE https://github.com/tidyverse/ggplot2/issues/2452)\nTO OVERCOME THIS ON WINDOWS, USE ANOTHER DEVICE (pdf() FOR INSTANCE)")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-lg.alpha[[5]] <- 1 # to avoid a bug on windows: if alpha argument is different from 1 for lines (transparency), then lines are not correctly displayed in the legend when using the R GUI (bug https://github.com/tidyverse/ggplot2/issues/2452). No bug when using a pdf
-}else{
-lg.alpha[[5]] <- alpha[[i1]]
-}
-class.categ <- levels(factor(data1[[i1]][, categ[[i1]]]))
-for(i5 in 1:length(color[[i1]])){ # or length(class.categ). It is the same because already checked that lengths are the same
-tempo.data.frame <- data1[[i1]][data1[[i1]][, categ[[i1]]] == class.categ[i5], ]
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = paste0("ggplot2::", # no CR here te0("ggpl
-ifelse(geom[[i1]] == 'geom_stick', 'geom_segment', geom[[i1]]), # geom_segment because geom_stick converted to geom_segment for plotting
-"(data = tempo.data.frame, mapping = ggplot2::aes(x = ", 
-x[[i1]], 
-ifelse(geom[[i1]] == 'geom_stick', ", yend = ", ", y = "), 
-y[[i1]], 
-if(geom[[i1]] == 'geom_stick'){paste0(', xend = ', x[[i1]], ', y = ', ifelse(is.null(geom.stick.base), y.lim[1], geom.stick.base[[i1]]))}, 
-", alpha = ", 
-categ[[i1]], 
-"), color = \"", 
-color[[i1]][i5], 
-"\", size = ", 
-line.size[[i1]], 
-", linetype = ", 
-ifelse(is.numeric(line.type[[i1]]), "", "\""), 
-line.type[[i1]], 
-ifelse(is.numeric(line.type[[i1]]), "", "\""), 
-ifelse(geom[[i1]] == 'geom_path', ', lineend = \"round\"', ''), 
-ifelse(geom[[i1]] == 'geom_step', paste0(', direction = \"', geom.step.dir[[i1]], '\"'), ''), 
-", show.legend = FALSE)"
-)))) # WARNING: a single color allowed for color argument outside aesthetic, hence the loop # legend.show option do not remove the legend, only the aesthetic of the legend (dot, line, etc.). Used here to avoid multiple layers of legend which corrupt transparency
-coord.names <- c(coord.names, paste0(geom[[i1]], ".", class.categ[i5]))
-}
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "alpha", name = if(is.null(legend.name)){NULL}else{legend.name[[i1]]}, values = rep(alpha[[i1]], length(color[[i1]])), breaks = class.categ)) # values are the values of linetype. 1 means solid. Regarding the alpha bug, I have tried different things without success: alpha in guide alone, in geom alone, in both, with different values, breaks reorder the classes according to class.categ in the legend
-}
-if(line.count== 3L){
-fin.lg.disp[[6]] <- legend.disp[[point.count + line.count]]
-lg.order[[6]] <- point.count + line.count
-lg.color[[6]] <- color[[i1]] # if color == NULL -> NULL
-lg.line.size[[6]] <- line.size[[i1]]
-lg.line.type[[6]] <- line.type[[i1]]
-if(plot == TRUE & fin.lg.disp[[6]] == TRUE & ((length(dev.list()) > 0 & names(dev.cur()) == "windows") | (length(dev.list())== 0L & Sys.info()["sysname"] == "Windows"))){ # if any Graph device already open and this device is "windows", or if no Graph device opened yet and we are on windows system -> prevention of alpha legend bug on windows using value 1
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") GRAPHIC DEVICE USED ON A WINDOWS SYSTEM ->\nTRANSPARENCY OF THE LINES (LINE LAYER NUMBER ", line.count, ") IS INACTIVATED IN THE LEGEND TO PREVENT A WINDOWS DEPENDENT BUG (SEE https://github.com/tidyverse/ggplot2/issues/2452)\nTO OVERCOME THIS ON WINDOWS, USE ANOTHER DEVICE (pdf() FOR INSTANCE)")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-lg.alpha[[6]] <- 1 # to avoid a bug on windows: if alpha argument is different from 1 for lines (transparency), then lines are not correctly displayed in the legend when using the R GUI (bug https://github.com/tidyverse/ggplot2/issues/2452). No bug when using a pdf
-}else{
-lg.alpha[[6]] <- alpha[[i1]]
-}
-class.categ <- levels(factor(data1[[i1]][, categ[[i1]]]))
-for(i5 in 1:length(color[[i1]])){ # or length(class.categ). It is the same because already checked that lengths are the same
-tempo.data.frame <- data1[[i1]][data1[[i1]][, categ[[i1]]] == class.categ[i5], ]
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = paste0("ggplot2::", # no CR here te0("ggpl
-ifelse(geom[[i1]] == 'geom_stick', 'geom_segment', geom[[i1]]), # geom_segment because geom_stick converted to geom_segment for plotting
-"(data = tempo.data.frame, mapping = ggplot2::aes(x = ", 
-x[[i1]], 
-ifelse(geom[[i1]] == 'geom_stick', ", yend = ", ", y = "), 
-y[[i1]], 
-if(geom[[i1]] == 'geom_stick'){paste0(', xend = ', x[[i1]], ', y = ', ifelse(is.null(geom.stick.base), y.lim[1], geom.stick.base[[i1]]))}, 
-", size = ", 
-categ[[i1]], 
-"), color = \"", 
-color[[i1]][i5], 
-"\", linetype = ", 
-ifelse(is.numeric(line.type[[i1]]), "", "\""), 
-line.type[[i1]], 
-ifelse(is.numeric(line.type[[i1]]), "", "\""), 
-ifelse(geom[[i1]] == 'geom_path', ', lineend = \"round\"', ''), 
-ifelse(geom[[i1]] == 'geom_step', paste0(', direction = \"', geom.step.dir[[i1]], '\"'), ''), 
-", alpha = ", 
-alpha[[i1]], 
-", show.legend = FALSE)"
-)))) # WARNING: a single color allowed for color argument outside aesthetic, hence the loop # legend.show option do not remove the legend, only the aesthetic of the legend (dot, line, etc.). Used here to avoid multiple layers of legend which corrupt transparency
-coord.names <- c(coord.names, paste0(geom[[i1]], ".", class.categ[i5]))
-}
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "size", name = if(is.null(legend.name)){NULL}else{legend.name[[i1]]}, values = rep(line.size[[i1]], length(color[[i1]])), breaks = class.categ)) # values are the values of linetype. 1 means solid. Regarding the alpha bug, I have tried different things without success: alpha in guide alone, in geom alone, in both, breaks reorder the classes according to class.categ in the legend
-}
-}
-}
-# end loop part
 
 
 
+# add density
+# rasterise all kind: https://cran.r-project.org/web/packages/ggrastr/vignettes/Raster_geoms.html
+# log not good: do not convert as in boxplot
 
-# legend display
-tempo.legend.final <- 'ggplot2::guides(
+fun_gg_scatter <- function(
+    data1, 
+    x, 
+    y, 
+    categ = NULL, 
+    categ.class.order = NULL, 
+    color = NULL, 
+    geom = "geom_point", 
+    geom.step.dir = "hv", 
+    geom.stick.base = NULL, 
+    alpha = 0.5, 
+    dot.size = 2, 
+    dot.shape = 21, 
+    dot.border.size = 0.5, 
+    dot.border.color = NULL, 
+    line.size = 0.5, 
+    line.type = "solid", 
+    x.lim = NULL, 
+    x.lab = NULL, 
+    x.log = "no", 
+    x.tick.nb = NULL, 
+    x.second.tick.nb = NULL, 
+    x.include.zero = FALSE, 
+    x.left.extra.margin = 0.05, 
+    x.right.extra.margin = 0.05, 
+    x.text.angle = 0, 
+    y.lim = NULL, 
+    y.lab = NULL, 
+    y.log = "no", 
+    y.tick.nb = NULL, 
+    y.second.tick.nb = NULL, 
+    y.include.zero = FALSE, 
+    y.top.extra.margin = 0.05, 
+    y.bottom.extra.margin = 0.05, 
+    y.text.angle = 0, 
+    raster = FALSE, 
+    raster.ratio = 1, 
+    raster.threshold = NULL, 
+    text.size = 12, 
+    title = "", 
+    title.text.size = 12, 
+    legend.show = TRUE, 
+    legend.width = 0.5, 
+    legend.name = NULL, 
+    article = TRUE, 
+    grid = FALSE, 
+    add = NULL, 
+    return = FALSE, 
+    return.ggplot = FALSE,
+    return.gtable = TRUE,
+    plot = TRUE, 
+    warn.print = FALSE, 
+    lib.path = NULL
+){
+    # AIM
+    # Plot ggplot2 scatterplot with the possibility to overlay dots from up to 3 different data frames (-> three different legends) and lines from up to 3 different data frames (-> three different legends) -> up to 6 overlays totally
+    # For ggplot2 specifications, see: https://ggplot2.tidyverse.org/articles/ggplot2-specs.html
+    # WARNINGS
+    # Rows containing NA in data1[, c(x, y, categ)] will be removed before processing, with a warning (see below)
+    # Size arguments (dot.size, dot.border.size, line.size, text.size and title.text.size) are in mm. See Hadley comment in https://stackoverflow.com/questions/17311917/ggplot2-the-unit-of-size. See also http://sape.inf.usi.ch/quick-reference/ggplot2/size). Unit object are not accepted, but conversion can be used (e.g., grid::convertUnit(grid::unit(0.2, "inches"), "mm", valueOnly = TRUE))
+    # ARGUMENTS
+    # data1: a dataframe compatible with ggplot2, or a list of data frames. Order matters for the order of the legend and for the layer staking (starting from below to top)
+    # x: single character string of the data1 column name for x-axis coordinates. If data1 is a list, then x must be a list of single character strings, of same size as data1, with compartment 1 related to compartment 1 of data1, etc. Write NULL for each "geom_hline" in geom argument
+    # y: single character string of the data1 column name for y-axis coordinates. If data1 is a list, then y must be a list of single character strings, of same size as data1, with compartment 1 related to compartment 1 of data1, etc. Write NULL for each "geom_vline" in geom argument
+    # categ: either NULL or a single character string or a list of single character strings, indicating the data1 column names to use for categories which creates legend display
+    # If categ == NULL, no categories -> no legend displayed
+    # If data1 is a data frame, categ must be a single character string of the data1 column name for categories
+    # If data1 is a list, then categ must be a list of single character strings, of same size as data1, with compartment 1 related to compartment 1 of data1, etc. Some of the list compartments can be NULL (no legend display for these compartments), and other not
+    # categ.class.order: either (1) NULL or (2) a vector of character strings or (3) a list of these vectors, setting the order of the classes of categ in the legend display
+    # If categ.class.order is NULL, classes are represented according to the alphabetical order
+    # If data1 is a data frame, categ.class.order must be a vector of character strings specifying the different classes in the categ column name of data1
+    # If data1 is a list, then categ.class.order must be a list of vector of character strings, of same size as data1, with compartment 1 related to compartment 1 of data1, etc. Some of the list compartments can be NULL (alphabetical order for these compartments), and other not
+    # color: either (1) NULL, or (2) a vector of character strings or integers, or (3) a list of vectors of character strings or integers
+    # If color is NULL, default colors of ggplot2
+    # If data1 is a data frame, color argument can be either:
+    # (1) a single color string. All the dots of the corresponding data1 will have this color, whatever the categ value (NULL or not)
+    # (2) if categ is non-null, a vector of string colors, one for each class of categ. Each color will be associated according to the categ.class.order argument if specified, or to the alphabetical order of categ classes otherwise
+    # (3) if categ is non-null, a vector or factor of string colors, like if it was one of the column of data1 data frame. WARNING: a single color per class of categ and a single class of categ per color must be respected
+    # Positive integers are also accepted instead of character strings, as long as above rules about length are respected. Integers will be processed by fun_gg_palette() using the max integer value among all the integers in color (see fun_gg_palette())
+    # If data1 is a list, then color argument must be either: 
+    # (1) a list of character strings or integers, of same size as data1, with compartment 1 related to compartment 1 of data1, etc.
+    # (2) a single character string or a single integer
+    # With a list (first possibility), the rules described for when data1 is a data frame apply to each compartment of the list. Some of the compartments can be NULL. In that case, a different grey color will be used for each NULL compartment. With a single value (second possibility), the same color will be used for all the dots and lines, whatever the data1 list
+    # geom: single character string of the kind of plot, or a list of single character strings
+    # Either:
+    # "geom_point" (scatterplot)
+    # "geom_line" (coordinates plotted then line connection, from the lowest to highest x coordinates first and from the lowest to highest y coordinates thenafter)
+    # "geom_path" (coordinates plotted then line connection respecting the row order in data1)
+    # "geom_step" coordinates plotted then line connection respecting the row order in data1 but drawn in steps). See the geom.step.dir argument
+    # "geom_hline" (horizontal line, no x value provided)
+    # "geom_vline" (vertical line, no y value provided)
+    # "geom_stick" (dots as vertical bars)
+    # If data1 is a list, then geom must be either:
+    # (1) a list of single character strings, of same size as data1, with compartment 1 related to compartment 1 of data1, etc.
+    # (2) a single character string. In that case the same kind of plot will apply for the different compartments of the data1 list
+    # WARNING concerning "geom_hline" or "geom_vline":
+    # (1) x or y argument must be NULL, respectively
+    # (2) x.lim or y.lim argument must NOT be NULL, respectively, if only these kind of lines are drawn (if other geom present, then x.lim = NULL and y.lim = NULL will generate x.lim and y.lim defined by these other geom, which is not possible with "geom_hline" or "geom_vline" alone)
+    # (3) the function will draw n lines for n values in the x argument column name of the data1 data frame. If several colors required, the categ argument must be specified and the corresponding categ column name must exist in the data1 data frame with a different class name for each row
+    # geom.step.dir: single character string indicating the direction when using "geom_step" of the geom argument, or a list of single character strings
+    # Either:
+    # "vh" (vertical then horizontal)
+    # "hv" (horizontal then vertical)
+    # "mid" (step half-way between adjacent x-values)
+    # See https://ggplot2.tidyverse.org/reference/geom_path.html
+    # If data1 is a list, then geom.step.dir must be either:
+    # (1) a list of single character strings, of same size as data1, with compartment 1 related to compartment 1 of data1, etc. The value in compartments related to other geom values than "geom_step" will be ignored
+    # (2) a single character string, which will be used for all the "geom_step" values of the geom argument, whatever the data1 list
+    # geom.stick.base: either (1) NULL or (2) a single numeric value or (3) a list of single numeric values, setting the base of the sticks when using "geom_stick" of the geom argument
+    # If geom.stick.base is NULL, the bottom limit of the y-axis is taken as the base
+    # If data1 is a list, then geom.stick.base must be either (1) a list of single numeric values, of same size as data1, with compartment 1 related to compartment 1 of data1, etc., or (2) a single numeric value. With a list (former possibility), the values in compartments related to other geom values than "geom_stick" will be ignored. With a single value (latter possibility), the same base will be used for all the sticks, whatever the data1 list
+    # Warning: the y-axis limits are not modified by the value of geom.stick.base, meaning that this value can be outside of the range of y.lim. Add the value of geom.stick.base also in the y.lim argument if required
+    # Warning: if geom.stick.base is NULL, the bottom limit of the y-axis is taken as the base. Thus, be careful with inverted y-axis
+    # alpha: single numeric value (from 0 to 1) of transparency. If data1 is a list, then alpha must be either (1) a list of single numeric values, of same size as data1, with compartment 1 related to compartment 1 of data1, etc., or (2) a single numeric value. In that case the same transparency will apply for the different compartments of the data1 list
+    # dot.size: single numeric value of dot shape radius? in mm. If data1 is a list, then dot.size must be either (1) a list of single numeric values, of same size as data1, with compartment 1 related to compartment 1 of data1, etc., or (2) a single numeric value. With a list (former possibility), the value in compartments related to lines will be ignored. With a single value (latter possibility), the same dot.size will be used for all the dots, whatever the data1 list
+    # dot.shape: value indicating the shape of the dots (see https://ggplot2.tidyverse.org/articles/ggplot2-specs.html) If data1 is a list, then dot.shape must be either (1) a list of single shape values, of same size as data1, with compartment 1 related to compartment 1 of data1, etc., or (2) a single shape value. With a list (former possibility), the value in compartments related to lines will be ignored. With a single value (latter possibility), the same dot.shape will be used for all the dots, whatever the data1 list
+    # dot.border.size: single numeric value of border dot width in mm. Write zero for no dot border. If data1 is a list, then dot.border.size must be either (1) a list of single numeric values, of same size as data1, with compartment 1 related to compartment 1 of data1, etc., or (2) a single numeric value. With a list (former possibility), the value in compartments related to lines will be ignored. With a single value (latter possibility), the same dot.border.size will be used for all the dots, whatever the data1 list
+    # dot.border.color: single character color string defining the color of the dot border (same border color for all the dots, whatever their categories). If dot.border.color == NULL, the border color will be the same as the dot color. A single integer is also accepted instead of a character string, that will be processed by fun_gg_palette()
+    # line.size: single numeric value of line width in mm. If data1 is a list, then line.size must be either (1) a list of single numeric values, of same size as data1, with compartment 1 related to compartment 1 of data1, etc., or (2) a single numeric value. With a list (former possibility), the value in compartments related to dots will be ignored. With a single value (latter possibility), the same line.size will be used for all the lines, whatever the data1 list
+    # line.type: value indicating the kind of lines (see https://ggplot2.tidyverse.org/articles/ggplot2-specs.html) If data1 is a list, then line.type must be either (1) a list of single line kind values, of same size as data1, with compartment 1 related to compartment 1 of data1, etc., or (2) a single line kind value. With a list (former possibility), the value in compartments related to dots will be ignored. With a single value (latter possibility), the same line.type will be used for all the lines, whatever the data1 list
+    # x.lim: 2 numeric values setting the x-axis range. Order of the 2 values matters (for inverted axis). If NULL, the range of the x column name of data1 will be used
+    # x.lab: a character string or expression for x-axis label. If NULL, will use the first value of x (x column name of the first data frame in data1). Warning message if the elements in x are different between data frames in data1
+    # x.log: either "no", "log2" (values in the x column name of the data1 data frame will be log2 transformed and x-axis will be log2 scaled) or "log10" (values in the x column name of the data1 data frame will be log10 transformed and x-axis will be log10 scaled)
+    # x.tick.nb: approximate number of desired values labeling the x-axis (i.e., main ticks, see the n argument of the the cute::fun_scale() function). If NULL and if x.log is "no", then the number of labeling values is set by ggplot2. If NULL and if x.log is "log2" or "log10", then the number of labeling values corresponds to all the exposant integers in the x.lim range (e.g., 10^1, 10^2 and 10^3, meaning 3 main ticks for x.lim = c(9, 1200)). WARNING: if non-NULL and if x.log is "log2" or "log10", labeling can be difficult to read (e.g., ..., 10^2, 10^2.5, 10^3, ...)
+    # x.second.tick.nb: number of desired secondary ticks between main ticks. Ignored if x.log is other than "no" (log scale plotted). Use argument return = TRUE and see $plot$x.second.tick.values to have the values associated to secondary ticks. IF NULL, no secondary ticks
+    # x.include.zero: logical. Does x.lim range include 0? Ignored if x.log is "log2" or "log10"
+    # x.left.extra.margin: single proportion (between 0 and 1) indicating if extra margins must be added to x.lim. If different from 0, add the range of the axis multiplied by x.left.extra.margin (e.g., abs(x.lim[2] - x.lim[1]) * x.left.extra.margin) to the left of x-axis
+    # x.right.extra.margin: idem as x.left.extra.margin but to the right of x-axis
+    # x.text.angle: integer value of the text angle for the x-axis labeling values, using the same rules as in ggplot2. Use positive value for clockwise rotation: 0 for horizontal, 90 for vertical, 180 for upside down etc. Use negative values for counterclockwise rotation: 0 for horizontal, -90 for vertical, -180 for upside down etc.
+    # y.lim: 2 numeric values setting the y-axis range. Order of the 2 values matters (for inverted axis). If NULL, the range of the y column name of data1 will be used
+    # y.lab: a character string or expression for y-axis label. If NULL, will use the first value of y (y column name of the first data frame in data1). Warning message if the elements in y are different between data frames in data1
+    # y.log: either "no", "log2" (values in the y column name of the data1 data frame will be log2 transformed and y-axis will be log2 scaled) or "log10" (values in the y column name of the data1 data frame will be log10 transformed and y-axis will be log10 scaled)
+    # y.tick.nb: approximate number of desired values labeling the y-axis (i.e., main ticks, see the n argument of the the cute::fun_scale() function). If NULL and if y.log is "no", then the number of labeling values is set by ggplot2. If NULL and if y.log is "log2" or "log10", then the number of labeling values corresponds to all the exposant integers in the y.lim range (e.g., 10^1, 10^2 and 10^3, meaning 3 main ticks for y.lim = c(9, 1200)). WARNING: if non-NULL and if y.log is "log2" or "log10", labeling can be difficult to read (e.g., ..., 10^2, 10^2.5, 10^3, ...)
+    # y.second.tick.nb: number of desired secondary ticks between main ticks. Ignored if y.log is other than "no" (log scale plotted). Use argument return = TRUE and see $plot$y.second.tick.values to have the values associated to secondary ticks. IF NULL, no secondary ticks
+    # y.include.zero: logical. Does y.lim range include 0? Ignored if y.log is "log2" or "log10"
+    # y.top.extra.margin: single proportion (between 0 and 1) indicating if extra margins must be added to y.lim. If different from 0, add the range of the axis multiplied by y.top.extra.margin (e.g., abs(y.lim[2] - y.lim[1]) * y.top.extra.margin) to the top of y-axis
+    # y.bottom.extra.margin: idem as y.top.extra.margin but to the bottom of y-axis
+    # y.text.angle: integer value of the text angle for the y-axis labeling values, using the same rules as in ggplot2. Use positive value for clockwise rotation: 0 for horizontal, 90 for vertical, 180 for upside down etc. Use negative values for counterclockwise rotation: 0 for horizontal, -90 for vertical, -180 for upside down etc.
+    # raster: logical. Dots in raster mode? If FALSE, dots from each "geom_point" from geom argument are plotted in vectorial mode (bigger pdf and long to display if lots of dots). If TRUE, dots from each "geom_point" from geom argument are plotted in matricial mode (smaller pdf and easy display if lots of dots, but it takes time to generate the layer). If TRUE, the raster.ratio argument is used to avoid an ellipsoid representation of the dots. If TRUE, solve the transparency problem with some GUI. Overriden by the non-NULL raster.threshold argument
+    # raster.ratio: single numeric value indicating the height / width ratio of the graphic device used (for instance provided by the $dim compartment in the output of the fun_open() function). The default value is 1 because by default R opens a square graphic device. But this argument has to be set when using other device dimensions. Ignored if raster == FALSE
+    # raster.threshold: positive integer value indicating the limit of the dot number above which "geom_point" layers from the geom argument switch from vectorial mode to matricial mode (see the raster argument). If any layer is matricial, then the raster.ratio argument is used to avoid an ellipsoid representation of the dots. If non-NULL, it overrides the raster argument
+    # text.size: numeric value of the font size of the (1) axis numbers and axis legends and (2) texts in the graphic legend (in mm)
+    # title: character string of the graph title
+    # title.text.size: numeric value of the title font size in mm
+    # legend.show: logical. Show legend? Not considered if categ argument is NULL, because this already generate no legend, excepted if legend.width argument is non-NULL. In that specific case (categ is NULL, legend.show is TRUE and legend.width is non-NULL), an empty legend space is created. This can be useful when desiring graphs of exactly the same width, whatever they have legends or not
+    # legend.width: single proportion (between 0 and 1) indicating the relative width of the legend sector (on the right of the plot) relative to the width of the plot. Value 1 means that the window device width is split in 2, half for the plot and half for the legend. Value 0 means no room for the legend, which will overlay the plot region. Write NULL to inactivate the legend sector. In such case, ggplot2 will manage the room required for the legend display, meaning that the width of the plotting region can vary between graphs, depending on the text in the legend
+    # legend.name: character string of the legend title. If legend.name is NULL and categ argument is not NULL, then legend.name <- categ. If data1 is a list, then legend.name must be a list of character strings, of same size as data1, with compartment 1 related to compartment 1 of data1, etc. Some of the list compartments can be NULL, and other not
+    # article: logical. If TRUE, use an article theme (article like). If FALSE, use a classic related ggplot theme. Use the add argument (e.g., add = "+ggplot2::theme_classic()" for the exact classic ggplot theme
+    # grid: logical. Draw lines in the background to better read the box values? Not considered if article == FALSE (grid systematically present)
+    # add: character string allowing to add more ggplot2 features (dots, lines, themes, facet, etc.). Ignored if NULL
+    # WARNING: (1) the string must start with "+", (2) the string must finish with ")" and (3) each function must be preceded by "ggplot2::". Example: "+ ggplot2::coord_flip() + ggplot2::theme_bw()"
+    # If the character string contains the "ggplot2::theme" string, then the article argument of fun_gg_scatter() (see above) is ignored with a warning
+    # Handle the add argument with caution since added functions can create conflicts with the preexisting internal ggplot2 functions
+    # WARNING: the call of objects inside the quotes of add can lead to an error if the name of these objects are some of the fun_gg_scatter() arguments. Indeed, the function will use the internal argument instead of the global environment object. Example article <- "a" in the working environment and add = '+ ggplot2::ggtitle(article)'. The risk here is to have TRUE as title. To solve this, use add = '+ ggplot2::ggtitle(get("article", envir = .GlobalEnv))'
+    # return: logical. Return the graph parameters?
+    # return.ggplot: logical. Return the ggplot object in the output list? Ignored if return argument is FALSE. WARNING: always assign the fun_gg_scatter() function (e.g., a <- fun_gg_scatter()) if return.ggplot argument is TRUE, otherwise, double plotting is performed. See $ggplot in the RETURN section below for more details
+    # return.gtable: logical. Return the ggplot object as gtable of grobs in the output list? Ignored if plot argument is FALSE. Indeed, the graph must be plotted to get the grobs dispositions. See $gtable in the RETURN section below for more details
+    # plot: logical. Plot the graphic? If FALSE and return argument is TRUE, graphical parameters and associated warnings are provided without plotting
+    # warn.print: logical. Print warnings at the end of the execution? ? If FALSE, warning messages are never printed, but can still be recovered in the returned list. Some of the warning messages (those delivered by the internal ggplot2 functions) are not apparent when using the argument plot = FALSE
+    # lib.path: character string indicating the absolute path of the required packages (see below). if NULL, the function will use the R library default folders
+    # RETURN
+    # a scatter plot if plot argument is TRUE
+    # a list of the graph info if return argument is TRUE:
+    # $data: the initial data with graphic information added. WARNING: if the x.log or y.log argument is not "no", x or y argument column of the data1 data frame are log2 or log10 converted in $data, respectively. Use 2^values or 10^$values to recover the initial values
+    # $removed.row.nb: a list of the removed rows numbers in data frames (because of NA). NULL if no row removed
+    # $removed.rows: a list of the removed rows in data frames (because of NA). NULL if no row removed
+    # $plot: the graphic box and dot coordinates
+    # $dots: dot coordinates
+    # y.second.tick.positions: coordinates of secondary ticks (only if y.second.tick.nb argument is non-null or if y.log argument is different from "no")
+    # y.second.tick.values: values of secondary ticks. NULL except if y.second.tick.nb argument is non-null or if y.log argument is different from "no")
+    # $panel: the variable names used for the panels (NULL if no panels). WARNING: NA can be present according to ggplot2 upgrade to v3.3.0
+    # $axes: the x-axis and y-axis info
+    # $warn: the warning messages. Use cat() for proper display. NULL if no warning. WARNING: warning messages delivered by the internal ggplot2 functions are not apparent when using the argument plot = FALSE
+    # $ggplot: ggplot object that can be used for reprint (use print($ggplot) or update (use $ggplot + ggplot2::...). NULL if return.ggplot argument is FALSE. Of note, a non-null $ggplot in the output list is sometimes annoying as the manipulation of this list prints the plot
+    # $gtable: gtable object that can be used for reprint (use gridExtra::grid.arrange(...$ggplot) or with additionnal grobs (see the grob decomposition in the examples). NULL if return.ggplot argument is FALSE. Contrary to $ggplot, a non-NULL $gtable in the output list is not annoying as the manipulation of this list does not print the plot
+    # REQUIRED PACKAGES
+    # ggplot2
+    # gridExtra
+    # lemon (in case of use in the add argument)
+    # scales
+    # if raster plots are drawn (see the raster and raster.threshold arguments):
+    # Cairo
+    # grid
+    # REQUIRED FUNCTIONS FROM THE cute PACKAGE
+    # fun_gg_empty_graph()
+    # fun_gg_palette()
+    # fun_gg_point_rast()
+    # fun_pack()
+    # fun_check()
+    # fun_round()
+    # fun_scale()
+    # fun_inter_ticks()
+    # EXAMPLES
+    # set.seed(1) ; obs1 <- data.frame(Km = c(2, 1, 6, 5, 4, 7), Time = c(2, 1, 6, 5, 4, 7)^2, Car = c("TUUT", "TUUT", "TUUT", "WIIM", "WIIM", "WIIM"), Color1 = rep(c("coral", "lightblue"), each = 3), stringsAsFactors = TRUE) ; fun_gg_scatter(data1 = obs1, x = "Km", y = "Time")
+    # DEBUGGING
+    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 10, 3), time = rnorm(1000, 10, 3), group1 = rep(c("A1", "A2"), 500), stringsAsFactors = TRUE) ; obs2 <-data.frame(km = rnorm(1000, 15, 3), time = rnorm(1000, 15, 3), group2 = rep(c("G1", "G2"), 500), stringsAsFactors = TRUE) ; set.seed(NULL) ; obs1$km[2:3] <- NA ; data1 = list(L1 = obs1, L2 = obs2) ; x = list(L1 = "km", L2 = "km") ; y = list(L1 = "time", L2 = "time") ; categ = list(L1 = "group1", L2 = "group2") ; categ = NULL ; categ.class.order = NULL ; color = NULL ; geom = "geom_point" ; geom.step.dir = "hv" ; geom.stick.base = NULL, alpha = 0.5 ; dot.size = 2 ; dot.shape = 21 ; dot.border.size = 0.5 ; dot.border.color = NULL ; line.size = 0.5 ; line.type = "solid" ; x.lim = NULL ; x.lab = NULL ; x.log = "no" ; x.tick.nb = NULL ; x.second.tick.nb = NULL ; x.include.zero = FALSE ; x.left.extra.margin = 0.05 ; x.right.extra.margin = 0.05 ; x.text.angle = 0 ; y.lim = NULL ; y.lab = NULL ; y.log = "no" ; y.tick.nb = NULL ; y.second.tick.nb = NULL ; y.include.zero = FALSE ; y.top.extra.margin = 0.05 ; y.bottom.extra.margin = 0.05 ; y.text.angle = 0 ; raster = FALSE ; raster.ratio = 1 ; raster.threshold = NULL ; text.size = 12 ; title = "" ; title.text.size = 12 ; legend.show = TRUE ; legend.width = 0.5 ; legend.name = NULL ; article = TRUE ; grid = FALSE ; add = NULL ; return = FALSE ; return.ggplot = FALSE ; return.gtable = TRUE ; plot = TRUE ; warn.print = FALSE ; lib.path = NULL
+    # function name
+    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+    arg.names <- names(formals(fun = sys.function(sys.parent(n = 2)))) # names of all the arguments
+    arg.user.setting <- as.list(match.call(expand.dots=FALSE))[-1] # list of the argument settings (excluding default values not provided by the user)
+    # end function name
+    # required function checking
+    req.function <- c(
+        "fun_check", 
+        "fun_gg_just", 
+        "fun_gg_empty_graph", 
+        "fun_gg_palette", 
+        "fun_gg_point_rast", 
+        "fun_round", 
+        "fun_pack", 
+        "fun_scale", 
+        "fun_inter_ticks"
+    )
+    tempo <- NULL
+    for(i1 in req.function){
+        if(length(find(i1, mode = "function"))== 0L){
+            tempo <- c(tempo, i1)
+        }
+    }
+    if( ! is.null(tempo)){
+        tempo.cat <- paste0("ERROR IN ", function.name, "\nREQUIRED cute FUNCTION", ifelse(length(tempo) > 1, "S ARE", " IS"), " MISSING IN THE R ENVIRONMENT:\n", paste0(tempo, collapse = "()\n"))
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n"), call. = FALSE) # == in stop() to be able to add several messages between ==
+    }
+    # end required function checking
+    # reserved words to avoid bugs (used in this function)
+    reserved.words <- c("fake_x", "fake_y", "fake_categ")
+    # end reserved words to avoid bugs (used in this function)
+    # arg with no default values
+    mandat.args <- c(
+        "data1", 
+        "x", 
+        "y"
+    )
+    tempo <- eval(parse(text = paste0("missing(", paste0(mandat.args, collapse = ") | missing("), ")")))
+    if(any(tempo)){
+        tempo.cat <- paste0("ERROR IN ", function.name, "\nFOLLOWING ARGUMENT", ifelse(length(mandat.args) > 1, "S HAVE", "HAS"), " NO DEFAULT VALUE AND REQUIRE ONE:\n", paste0(mandat.args, collapse = "\n"))
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n"), call. = FALSE) # == in stop() to be able to add several messages between ==
+    }
+    # end arg with no default values
+    # argument primary checking
+    arg.check <- NULL #
+    text.check <- NULL #
+    checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
+    ee <- expression(arg.check <- c(arg.check, tempo$problem) , text.check <- c(text.check, tempo$text) , checked.arg.names <- c(checked.arg.names, tempo$object.name))
+    tempo1 <- fun_check(data = data1, class = "data.frame", na.contain = TRUE, fun.name = function.name)
+    tempo2 <- fun_check(data = data1, class = "list", na.contain = TRUE, fun.name = function.name)
+    checked.arg.names <- c(checked.arg.names, tempo2$object.name)
+    if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+        tempo.cat <- paste0("ERROR IN ", function.name, ": data1 ARGUMENT MUST BE A DATA FRAME OR A LIST OF DATA FRAMES")
+        text.check <- c(text.check, tempo.cat)
+        arg.check <- c(arg.check, TRUE)
+    }
+    if( ! is.null(x)){
+        tempo1 <- fun_check(data = x, class = "vector", mode = "character", na.contain = TRUE, length = 1, fun.name = function.name)
+        tempo2 <- fun_check(data = x, class = "list", na.contain = TRUE, fun.name = function.name)
+        checked.arg.names <- c(checked.arg.names, tempo2$object.name)
+        if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": x ARGUMENT MUST BE A SINGLE CHARACTER STRING OR A LIST OF CHARACTER STRINGS")
+            text.check <- c(text.check, tempo.cat)
+            arg.check <- c(arg.check, TRUE)
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = x, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    if( ! is.null(y)){
+        tempo1 <- fun_check(data = y, class = "vector", mode = "character", na.contain = TRUE, length = 1, fun.name = function.name)
+        tempo2 <- fun_check(data = y, class = "list", na.contain = TRUE, fun.name = function.name)
+        checked.arg.names <- c(checked.arg.names, tempo2$object.name)
+        if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": y ARGUMENT MUST BE A SINGLE CHARACTER STRING OR A LIST OF CHARACTER STRINGS")
+            text.check <- c(text.check, tempo.cat)
+            arg.check <- c(arg.check, TRUE)
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = y, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    if( ! is.null(categ)){
+        tempo1 <- fun_check(data = categ, class = "vector", mode = "character", length = 1, fun.name = function.name)
+        tempo2 <- fun_check(data = categ, class = "list", na.contain = TRUE, fun.name = function.name)
+        checked.arg.names <- c(checked.arg.names, tempo2$object.name)
+        if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": categ ARGUMENT MUST BE A SINGLE CHARACTER STRING OR A LIST OF CHARACTER STRINGS")
+            text.check <- c(text.check, tempo.cat)
+            arg.check <- c(arg.check, TRUE)
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = categ, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    if( ! is.null(categ.class.order)){
+        if(is.null(categ)){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": categ.class.order ARGUMENT IS NOT NULL, BUT categ IS")
+            text.check <- c(text.check, tempo.cat)
+            arg.check <- c(arg.check, TRUE)
+        }
+        tempo1 <- fun_check(data = categ.class.order, class = "vector", mode = "character", fun.name = function.name)
+        tempo2 <- fun_check(data = categ.class.order, class = "list", na.contain = TRUE, fun.name = function.name)
+        checked.arg.names <- c(checked.arg.names, tempo2$object.name)
+        if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": categ.class.order ARGUMENT MUST BE A VECTOR OF CHARACTER STRINGS OR A LIST OF VECTOR OF CHARACTER STRINGS")
+            text.check <- c(text.check, tempo.cat)
+            arg.check <- c(arg.check, TRUE)
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = categ.class.order, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    if( ! is.null(legend.name)){
+        tempo1 <- fun_check(data = legend.name, class = "vector", mode = "character", na.contain = TRUE, length = 1, fun.name = function.name)
+        tempo2 <- fun_check(data = legend.name, class = "list", na.contain = TRUE, fun.name = function.name)
+        checked.arg.names <- c(checked.arg.names, tempo2$object.name)
+        if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": legend.name ARGUMENT MUST BE A SINGLE CHARACTER STRING OR A LIST OF CHARACTER STRINGS")
+            text.check <- c(text.check, tempo.cat)
+            arg.check <- c(arg.check, TRUE)
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = legend.name, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    if( ! is.null(color)){
+        tempo1 <- fun_check(data = color, class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name)
+        tempo2 <- fun_check(data = color, class = "factor", na.contain = TRUE, fun.name = function.name)
+        tempo3 <- fun_check(data = color, class = "integer", double.as.integer.allowed = TRUE, na.contain = TRUE, fun.name = function.name)
+        tempo4 <- fun_check(data = color, class = "list", na.contain = TRUE, fun.name = function.name)
+        checked.arg.names <- c(checked.arg.names, tempo4$object.name)
+        if(tempo1$problem == TRUE & tempo2$problem == TRUE & tempo3$problem == TRUE & tempo4$problem == TRUE){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": color ARGUMENT MUST BE A VECTOR (OF CHARACTER STRINGS OR INTEGERS) OR A FACTOR OR A LIST OF THESE POSSIBILITIES")
+            text.check <- c(text.check, tempo.cat)
+            arg.check <- c(arg.check, TRUE)
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = color, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    tempo1 <- fun_check(data = geom, class = "vector", mode = "character", na.contain = FALSE, length = 1, fun.name = function.name)
+    tempo2 <- fun_check(data = geom, class = "list", na.contain = TRUE, fun.name = function.name)
+    checked.arg.names <- c(checked.arg.names, tempo2$object.name)
+    if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+        tempo.cat <- paste0("ERROR IN ", function.name, ": geom ARGUMENT MUST BE A SINGLE CHARACTER STRING OR A LIST OF CHARACTER STRINGS")
+        text.check <- c(text.check, tempo.cat)
+        arg.check <- c(arg.check, TRUE)
+    }
+    tempo1 <- fun_check(data = geom.step.dir, options = c("vh", "hv", "mid"), na.contain = FALSE, length = 1, fun.name = function.name)
+    tempo2 <- fun_check(data = geom.step.dir, class = "list", na.contain = TRUE, fun.name = function.name)
+    checked.arg.names <- c(checked.arg.names, tempo2$object.name)
+    if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+        tempo.cat <- paste0("ERROR IN ", function.name, ": geom.step.dir ARGUMENT MUST BE A SINGLE CHARACTER STRING (\"vh\" OR \"hv\" OR \"mid\") OR A LIST OF THESE CHARACTER STRINGS")
+        text.check <- c(text.check, tempo.cat)
+        arg.check <- c(arg.check, TRUE)
+    }
+    if( ! is.null(geom.stick.base)){
+        tempo1 <- fun_check(data = geom.stick.base, class = "vector", mode = "numeric", na.contain = FALSE, length = 1, fun.name = function.name)
+        tempo2 <- fun_check(data = color, class = "list", na.contain = TRUE, fun.name = function.name)
+        checked.arg.names <- c(checked.arg.names, tempo2$object.name)
+        if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": geom.stick.base ARGUMENT MUST BE A SINGLE NUMERIC VALUE OR A LIST OF SINGLE NUMERIC VALUES")
+            text.check <- c(text.check, tempo.cat)
+            arg.check <- c(arg.check, TRUE)
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = geom.stick.base, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    tempo1 <- fun_check(data = alpha, prop = TRUE, length = 1, fun.name = function.name)
+    tempo2 <- fun_check(data = alpha, class = "list", na.contain = TRUE, fun.name = function.name)
+    checked.arg.names <- c(checked.arg.names, tempo2$object.name)
+    if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+        tempo.cat <- paste0("ERROR IN ", function.name, ": alpha ARGUMENT MUST BE A SINGLE NUMERIC VALUE BETWEEN 0 AND 1 OR A LIST OF SUCH VALUES")
+        text.check <- c(text.check, tempo.cat)
+        arg.check <- c(arg.check, TRUE)
+    }
+    tempo1 <- fun_check(data = dot.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name)
+    tempo2 <- fun_check(data = dot.size, class = "list", na.contain = TRUE, fun.name = function.name)
+    checked.arg.names <- c(checked.arg.names, tempo2$object.name)
+    if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+        tempo.cat <- paste0("ERROR IN ", function.name, ": dot.size ARGUMENT MUST BE A SINGLE NUMERIC VALUE OR A LIST OF SINGLE NUMERIC VALUES")
+        text.check <- c(text.check, tempo.cat)
+        arg.check <- c(arg.check, TRUE)
+    }
+    tempo1 <- fun_check(data = dot.shape, class = "vector", length = 1, fun.name = function.name)
+    tempo2 <- fun_check(data = dot.shape, class = "list", na.contain = TRUE, fun.name = function.name)
+    checked.arg.names <- c(checked.arg.names, tempo2$object.name)
+    if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+        tempo.cat <- paste0("ERROR IN ", function.name, ": dot.shape ARGUMENT MUST BE A SINGLE SHAPE VALUE OR A LIST OF SINGLE SHAPE VALUES (SEE https://ggplot2.tidyverse.org/articles/ggplot2-specs.html)")
+        text.check <- c(text.check, tempo.cat)
+        arg.check <- c(arg.check, TRUE)
+    }
+    tempo1 <- fun_check(data = dot.border.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name)
+    tempo2 <- fun_check(data = dot.border.size, class = "list", na.contain = TRUE, fun.name = function.name)
+    checked.arg.names <- c(checked.arg.names, tempo2$object.name)
+    if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+        tempo.cat <- paste0("ERROR IN ", function.name, ": dot.border.size ARGUMENT MUST BE A SINGLE NUMERIC VALUE OR A LIST OF SINGLE NUMERIC VALUES")
+        text.check <- c(text.check, tempo.cat)
+        arg.check <- c(arg.check, TRUE)
+    }
+    if( ! is.null(dot.border.color)){
+        tempo1 <- fun_check(data = dot.border.color, class = "vector", mode = "character", length = 1, fun.name = function.name)
+        tempo2 <- fun_check(data = dot.border.color, class = "vector", typeof = "integer", double.as.integer.allowed = TRUE, length = 1, fun.name = function.name)
+        checked.arg.names <- c(checked.arg.names, tempo2$object.name)
+        if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+            # integer colors -> gg_palette
+            tempo.cat <- paste0("ERROR IN ", function.name, ": dot.border.color MUST BE A SINGLE CHARACTER STRING OF COLOR OR A SINGLE INTEGER VALUE")
+            text.check <- c(text.check, tempo.cat)
+            arg.check <- c(arg.check, TRUE)
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = dot.border.color, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    tempo1 <- fun_check(data = line.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name)
+    tempo2 <- fun_check(data = line.size, class = "list", na.contain = TRUE, fun.name = function.name)
+    checked.arg.names <- c(checked.arg.names, tempo2$object.name)
+    if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+        tempo.cat <- paste0("ERROR IN ", function.name, ": line.size ARGUMENT MUST BE A SINGLE NUMERIC VALUE OR A LIST OF SINGLE NUMERIC VALUES")
+        text.check <- c(text.check, tempo.cat)
+        arg.check <- c(arg.check, TRUE)
+    }
+    tempo1 <- fun_check(data = line.type, class = "vector", typeof = "integer", double.as.integer.allowed = FALSE, length = 1, fun.name = function.name)
+    tempo2 <- fun_check(data = line.type, class = "vector", mode = "character", length = 1, fun.name = function.name)
+    tempo3 <- fun_check(data = line.type, class = "list", na.contain = TRUE, fun.name = function.name)
+    checked.arg.names <- c(checked.arg.names, tempo3$object.name)
+    if(tempo1$problem == TRUE & tempo2$problem == TRUE & tempo3$problem == TRUE){
+        tempo.cat <- paste0("ERROR IN ", function.name, ": line.type ARGUMENT MUST BE A SINGLE LINE KIND VALUE OR A LIST OF SINGLE LINE KIND VALUES (SEE https://ggplot2.tidyverse.org/articles/ggplot2-specs.html)")
+        text.check <- c(text.check, tempo.cat)
+        arg.check <- c(arg.check, TRUE)
+    }
+    if( ! is.null(x.lim)){
+        tempo <- fun_check(data = x.lim, class = "vector", mode = "numeric", length = 2, fun.name = function.name) ; eval(ee)
+        if(tempo$problem == FALSE & any(x.lim %in% c(Inf, -Inf))){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": x.lim ARGUMENT CANNOT CONTAIN -Inf OR Inf VALUES")
+            text.check <- c(text.check, tempo.cat)
+            arg.check <- c(arg.check, TRUE)
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = x.lim, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    if( ! is.null(x.lab)){
+        if(all(class(x.lab) %in% "expression")){ # to deal with math symbols
+            tempo <- fun_check(data = x.lab, class = "expression", length = 1, fun.name = function.name) ; eval(ee)
+        }else{
+            tempo <- fun_check(data = x.lab, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = x.lab, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    tempo <- fun_check(data = x.log, options = c("no", "log2", "log10"), length = 1, fun.name = function.name) ; eval(ee)
+    if( ! is.null(x.tick.nb)){
+        tempo <- fun_check(data = x.tick.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
+        if(tempo$problem == FALSE & x.tick.nb < 0){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": x.tick.nb ARGUMENT MUST BE A NON-NULL POSITIVE INTEGER")
+            text.check <- c(text.check, tempo.cat)
+            arg.check <- c(arg.check, TRUE)
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = x.tick.nb, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    if( ! is.null(x.second.tick.nb)){
+        tempo <- fun_check(data = x.second.tick.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
+        if(tempo$problem == FALSE & x.second.tick.nb <= 0){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": x.second.tick.nb ARGUMENT MUST BE A NON-NULL POSITIVE INTEGER")
+            text.check <- c(text.check, tempo.cat)
+            arg.check <- c(arg.check, TRUE)
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = x.second.tick.nb, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    tempo <- fun_check(data = x.include.zero, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = x.left.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = x.right.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = x.text.angle, class = "vector", typeof = "integer", double.as.integer.allowed = TRUE, length = 1, neg.values = TRUE, fun.name = function.name) ; eval(ee)
+    if( ! is.null(y.lim)){
+        tempo <- fun_check(data = y.lim, class = "vector", mode = "numeric", length = 2, fun.name = function.name) ; eval(ee)
+        if(tempo$problem == FALSE & any(y.lim %in% c(Inf, -Inf))){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": y.lim ARGUMENT CANNOT CONTAIN -Inf OR Inf VALUES")
+            text.check <- c(text.check, tempo.cat)
+            arg.check <- c(arg.check, TRUE)
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = y.lim, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    if( ! is.null(y.lab)){
+        if(all(class(y.lab) %in% "expression")){ # to deal with math symbols
+            tempo <- fun_check(data = y.lab, class = "expression", length = 1, fun.name = function.name) ; eval(ee)
+        }else{
+            tempo <- fun_check(data = y.lab, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = y.lab, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    tempo <- fun_check(data = y.log, options = c("no", "log2", "log10"), length = 1, fun.name = function.name) ; eval(ee)
+    if( ! is.null(y.tick.nb)){
+        tempo <- fun_check(data = y.tick.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
+        if(tempo$problem == FALSE & y.tick.nb < 0){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": y.tick.nb ARGUMENT MUST BE A NON-NULL POSITIVE INTEGER")
+            text.check <- c(text.check, tempo.cat)
+            arg.check <- c(arg.check, TRUE)
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = y.tick.nb, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    if( ! is.null(y.second.tick.nb)){
+        tempo <- fun_check(data = y.second.tick.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
+        if(tempo$problem == FALSE & y.second.tick.nb <= 0){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": y.second.tick.nb ARGUMENT MUST BE A NON-NULL POSITIVE INTEGER")
+            text.check <- c(text.check, tempo.cat)
+            arg.check <- c(arg.check, TRUE)
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = y.second.tick.nb, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    tempo <- fun_check(data = y.include.zero, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = y.top.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = y.bottom.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = y.text.angle, class = "vector", typeof = "integer", double.as.integer.allowed = TRUE, length = 1, neg.values = TRUE, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = raster, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = raster.ratio, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+    if( ! is.null(raster.threshold)){
+        tempo <- fun_check(data = raster.threshold, class = "vector", typeof = "integer", neg.values = FALSE, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = raster.threshold, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    tempo <- fun_check(data = text.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = title, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = title.text.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = legend.show, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    if( ! is.null(legend.width)){
+        tempo <- fun_check(data = legend.width, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = legend.width, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    tempo <- fun_check(data = article, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = grid, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    if( ! is.null(add)){
+        tempo <- fun_check(data = add, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = add, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    tempo <- fun_check(data = return, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = return.ggplot, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = return.gtable, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = plot, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    tempo <- fun_check(data = warn.print, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+    if( ! is.null(lib.path)){
+        tempo <- fun_check(data = lib.path, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
+        if(tempo$problem == FALSE){
+            if( ! all(dir.exists(lib.path))){ # separation to avoid the problem of tempo$problem == FALSE and lib.path == NA
+                tempo.cat <- paste0("ERROR IN ", function.name, ": DIRECTORY PATH INDICATED IN THE lib.path ARGUMENT DOES NOT EXISTS:\n", paste(lib.path, collapse = "\n"))
+                text.check <- c(text.check, tempo.cat)
+                arg.check <- c(arg.check, TRUE)
+            }
+        }
+    }else{
+        # no fun_check test here, it is just for checked.arg.names
+        tempo <- fun_check(data = lib.path, class = "vector")
+        checked.arg.names <- c(checked.arg.names, tempo$object.name)
+    }
+    if(any(arg.check) == TRUE){
+        stop(paste0("\n\n================\n\n", paste(text.check[arg.check], collapse = "\n"), "\n\n================\n\n"), call. = FALSE) #
+    }
+    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.7/r_debugging_tools-v1.7.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+    # end argument primary checking
+    
+    
+    # second round of checking and data preparation
+    # management of NA arguments
+    tempo.arg <- names(arg.user.setting) # values provided by the user
+    tempo.log <- suppressWarnings(sapply(lapply(lapply(tempo.arg, FUN = get, env = sys.nframe(), inherit = FALSE), FUN = is.na), FUN = any)) & lapply(lapply(tempo.arg, FUN = get, env = sys.nframe(), inherit = FALSE), FUN = length)== 1L # no argument provided by the user can be just NA
+    if(any(tempo.log) == TRUE){
+        tempo.cat <- paste0("ERROR IN ", function.name, ":\n", ifelse(sum(tempo.log, na.rm = TRUE) > 1, "THESE ARGUMENTS\n", "THIS ARGUMENT\n"), paste0(tempo.arg[tempo.log], collapse = "\n"),"\nCANNOT JUST BE NA")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n"), call. = FALSE) # == in stop() to be able to add several messages between ==
+    }
+    # end management of NA arguments
+    # management of NULL arguments
+    tempo.arg <-c(
+        "data1", 
+        # "x", # inactivated because of hline or vline
+        # "y", # inactivated because of hline or vline
+        "geom", 
+        "geom.step.dir", 
+        # "geom.stick.base", # inactivated because can be null
+        "alpha", 
+        "dot.size", 
+        "dot.shape", 
+        "dot.border.size", 
+        "line.size", 
+        "line.type", 
+        "x.log", 
+        "x.include.zero", 
+        "x.left.extra.margin", 
+        "x.right.extra.margin", 
+        "x.text.angle", 
+        "y.log", 
+        "y.include.zero", 
+        "y.top.extra.margin", 
+        "y.bottom.extra.margin", 
+        "y.text.angle", 
+        "raster", 
+        "raster.ratio", 
+        "text.size", 
+        "title", 
+        "title.text.size", 
+        "legend.show", 
+        # "legend.width", # inactivated because can be null
+        "article", 
+        "grid", 
+        "return", 
+        "return.ggplot", 
+        "return.gtable", 
+        "plot", 
+        "warn.print"
+    )
+    tempo.log <- sapply(lapply(tempo.arg, FUN = get, env = sys.nframe(), inherit = FALSE), FUN = is.null)
+    if(any(tempo.log) == TRUE){
+        tempo.cat <- paste0("ERROR IN ", function.name, ":\n", ifelse(sum(tempo.log, na.rm = TRUE) > 1, "THESE ARGUMENTS\n", "THIS ARGUMENT\n"), paste0(tempo.arg[tempo.log], collapse = "\n"),"\nCANNOT BE NULL")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n"), call. = FALSE) # == in stop() to be able to add several messages between ==
+    }
+    # end management of NULL arguments
+    # code that protects set.seed() in the global environment
+    # end code that protects set.seed() in the global environment
+    # warning initiation
+    ini.warning.length <- options()$warning.length
+    options(warning.length = 8170)
+    warn <- NULL
+    warn.count <- 0
+    # end warning initiation
+    # other checkings
+    # check list lengths (and names of data1 compartments if present)
+    list.color <- NULL
+    list.geom <- NULL
+    list.geom.step.dir <- NULL
+    list.geom.stick.base <- NULL
+    list.alpha <- NULL
+    list.dot.size <- NULL
+    list.dot.shape <- NULL
+    list.dot.border.size <- NULL
+    list.dot.border.color <- NULL
+    list.line.size <- NULL
+    list.line.type <- NULL
+    if(all(class(data1) == "list")){
+        if(length(data1) > 6){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": data1 ARGUMENT MUST BE A LIST OF 6 DATA FRAMES MAXIMUM (6 OVERLAYS MAX)")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }
+        if(is.null(names(data1))){
+            names(data1) <- paste0("L", 1:length(data1))
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") NULL NAME COMPARTMENT OF data1 LIST -> NAMES RESPECTIVELY ATTRIBUTED TO EACH COMPARTMENT:\n", paste(names(data1), collapse = " "))
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        }
+        if( ! is.null(x)){
+            if( ! (all(class(x) == "list") & length(data1) == length(x))){
+                tempo.cat <- paste0("ERROR IN ", function.name, ": x ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }
+        }else{
+            x <- vector("list", length(data1))
+        }
+        if( ! is.null(y)){
+            if( ! (all(class(y) == "list") & length(data1) == length(y))){
+                tempo.cat <- paste0("ERROR IN ", function.name, ": y ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }
+        }else{
+            y <- vector("list", length(data1))
+        }
+        if( ! is.null(categ)){
+            if( ! (all(class(categ) == "list") & length(data1) == length(categ))){
+                tempo.cat <- paste0("ERROR IN ", function.name, ": categ ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }
+        }
+        if( ! is.null(categ.class.order)){
+            if( ! (all(class(categ.class.order) == "list") & length(data1) == length(categ.class.order))){
+                tempo.cat <- paste0("ERROR IN ", function.name, ": categ.class.order ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }
+        }
+        if( ! is.null(color)){
+            if( ! ((all(class(color) == "list") & length(data1) == length(color)) | ((all(mode(color) == "character") | all(mode(color) == "numeric")) & length(color)== 1L))){ # list of same length as data1 or single value
+                tempo.cat <- paste0("ERROR IN ", function.name, ": color ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST, OR A SINGLE CHARACTER STRING OR INTEGER")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }else if((all(mode(color) == "character") | all(mode(color) == "numeric")) & length(color)== 1L){ # convert the single value into a list of single value
+                list.color <- vector(mode = "list", length = length(data1))
+                list.color[] <- color
+            }
+        }
+        if( ! ((all(class(geom) == "list") & length(data1) == length(geom)) | (all(mode(geom) == "character") & length(geom)== 1L))){ # list of same length as data1 or single value
+            tempo.cat <- paste0("ERROR IN ", function.name, ": geom ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST, OR A SINGLE CHARACTER VALUE")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else if(all(mode(geom) == "character") & length(geom)== 1L){ # convert the single value into a list of single value
+            list.geom <- vector(mode = "list", length = length(data1))
+            list.geom[] <- geom
+        }
+        if( ! ((all(class(geom.step.dir) == "list") & length(data1) == length(geom.step.dir)) | (all(mode(geom.step.dir) == "character") & length(geom.step.dir)== 1L))){ # list of same length as data1 or single value
+            tempo.cat <- paste0("ERROR IN ", function.name, ": geom.step.dir ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST, OR A SINGLE CHARACTER VALUE")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else if(all(mode(geom.step.dir) == "character") & length(geom.step.dir)== 1L){ # convert the single value into a list of single value
+            list.geom.step.dir <- vector(mode = "list", length = length(data1))
+            list.geom.step.dir[] <- geom.step.dir
+        }
+        if( ! is.null(geom.stick.base)){
+            if( ! ((all(class(geom.stick.base) == "list") & length(data1) == length(geom.stick.base)) | (all(mode(geom.stick.base) == "numeric") & length(geom.stick.base)== 1L))){ # list of same length as data1 or single value
+                tempo.cat <- paste0("ERROR IN ", function.name, ": geom.stick.base ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST, OR A SINGLE NUMERIC VALUE")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }else if(all(mode(geom.stick.base) == "numeric") & length(geom.stick.base)== 1L){ # convert the single value into a list of single value
+                list.geom.stick.base <- vector(mode = "list", length = length(data1))
+                list.geom.stick.base[] <- geom.stick.base
+            }
+        }
+        if( ! ((all(class(alpha) == "list") & length(data1) == length(alpha)) | (all(mode(alpha) == "numeric") & length(alpha)== 1L))){ # list of same length as data1 or single value
+            tempo.cat <- paste0("ERROR IN ", function.name, ": alpha ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST, OR A SINGLE NUMERIC VALUE")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else if(all(mode(alpha) == "numeric") & length(alpha)== 1L){ # convert the single value into a list of single value
+            list.alpha <- vector(mode = "list", length = length(data1))
+            list.alpha[] <- alpha
+        }
+        if( ! ((all(class(dot.size) == "list") & length(data1) == length(dot.size)) | (all(mode(dot.size) == "numeric") & length(dot.size)== 1L))){ # list of same length as data1 or single value
+            tempo.cat <- paste0("ERROR IN ", function.name, ": dot.size ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST, OR A SINGLE NUMERIC VALUE")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else if(all(mode(dot.size) == "numeric") & length(dot.size)== 1L){ # convert the single value into a list of single value
+            list.dot.size <- vector(mode = "list", length = length(data1))
+            list.dot.size[] <- dot.size
+        }
+        if( ! ((all(class(dot.shape) == "list") & length(data1) == length(dot.shape)) | (all(mode(dot.shape) != "list") & length(dot.shape)== 1L))){ # list of same length as data1 or single value
+            tempo.cat <- paste0("ERROR IN ", function.name, ": dot.shape ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST, OR A SINGLE SHAPE VALUE")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else if(all(mode(dot.shape) != "list") & length(dot.shape)== 1L){ # convert the single value into a list of single value
+            list.dot.shape <- vector(mode = "list", length = length(data1))
+            list.dot.shape[] <- dot.shape
+        }
+        if( ! ((all(class(dot.border.size) == "list") & length(data1) == length(dot.border.size)) | (all(mode(dot.border.size) == "numeric") & length(dot.border.size)== 1L))){ # list of same length as data1 or single value
+            tempo.cat <- paste0("ERROR IN ", function.name, ": dot.border.size ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST, OR A SINGLE NUMERIC VALUE")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else if(all(mode(dot.border.size) == "numeric") & length(dot.border.size)== 1L){ # convert the single value into a list of single value
+            list.dot.border.size <- vector(mode = "list", length = length(data1))
+            list.dot.border.size[] <- dot.border.size
+        }
+        if( ! is.null(dot.border.color)){
+            if( ! ((all(class(dot.border.color) == "list") & length(data1) == length(dot.border.color)) | ((all(mode(dot.border.color) == "character") | all(mode(dot.border.color) == "numeric")) & length(dot.border.color)== 1L))){ # list of same length as data1 or single value
+                tempo.cat <- paste0("ERROR IN ", function.name, ": dot.border.color ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST, OR A SINGLE CHARACTER STRING OR INTEGER")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }else if((all(mode(dot.border.color) == "character") | all(mode(dot.border.color) == "numeric")) & length(dot.border.color)== 1L){ # convert the single value into a list of single value
+                list.dot.border.color <- vector(mode = "list", length = length(data1))
+                list.dot.border.color[] <- dot.border.color
+            }
+        }
+        if( ! ((all(class(line.size) == "list") & length(data1) == length(line.size)) | (all(mode(line.size) == "numeric") & length(line.size)== 1L))){ # list of same length as data1 or single value
+            tempo.cat <- paste0("ERROR IN ", function.name, ": line.size ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST, OR A SINGLE NUMERIC VALUE")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else if(all(mode(line.size) == "numeric") & length(line.size)== 1L){ # convert the single value into a list of single value
+            list.line.size <- vector(mode = "list", length = length(data1))
+            list.line.size[] <- line.size
+        }
+        if( ! ((all(class(line.type) == "list") & length(data1) == length(line.type)) | (all(mode(line.type) != "list") & length(line.type)== 1L))){ # list of same length as data1 or single value
+            tempo.cat <- paste0("ERROR IN ", function.name, ": line.type ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST, OR A SINGLE LINE KIND VALUE")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else if(all(mode(line.type) != "list") & length(line.type)== 1L){ # convert the single value into a list of single value
+            list.line.type <- vector(mode = "list", length = length(data1))
+            list.line.type[] <- line.type
+        }
+        if( ! is.null(legend.name)){
+            if( ! (all(class(legend.name) == "list") & length(data1) == length(legend.name))){
+                tempo.cat <- paste0("ERROR IN ", function.name, ": legend.name ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }
+        }
+    }
+    # end check list lengths (and names of data1 compartments if present)
+    # conversion into lists
+    if(all(is.data.frame(data1))){
+        data1 <- list(L1 = data1)
+        if(all(class(x) == "list")){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": x ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else{
+            x <- list(L1 = x)
+        }
+        if(all(class(y) == "list")){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": y ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else{
+            y <- list(L1 = y)
+        }
+        if( ! is.null(categ)){
+            if(all(class(categ) == "list")){
+                tempo.cat <- paste0("ERROR IN ", function.name, ": categ ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }else{
+                categ <- list(L1 = categ)
+            }
+        }
+        if( ! is.null(categ.class.order)){
+            if(all(class(categ.class.order) == "list")){
+                tempo.cat <- paste0("ERROR IN ", function.name, ": categ.class.order ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }else{
+                categ.class.order <- list(L1 = categ.class.order)
+            }
+        }
+        if( ! is.null(color)){
+            if(all(class(color) == "list")){
+                tempo.cat <- paste0("ERROR IN ", function.name, ": color ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }else{
+                color <- list(L1 = color)
+            }
+        }
+        if(all(class(geom) == "list")){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": geom ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else{
+            geom <- list(L1 = geom)
+        }
+        if(all(class(geom.step.dir) == "list")){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": geom.step.dir ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else{
+            geom.step.dir <- list(L1 = geom.step.dir)
+        }
+        if( ! is.null(geom.stick.base)){
+            if(all(class(geom.stick.base) == "list")){
+                tempo.cat <- paste0("ERROR IN ", function.name, ": geom.stick.base ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }else{
+                geom.stick.base <- list(L1 = geom.stick.base)
+            }
+        }
+        if(all(class(alpha) == "list")){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": alpha ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else{
+            alpha <- list(L1 = alpha)
+        }
+        if(all(class(dot.size) == "list")){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": dot.size ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else{
+            dot.size <- list(L1 = dot.size)
+        }
+        if(all(class(dot.shape) == "list")){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": dot.shape ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else{
+            dot.shape <- list(L1 = dot.shape)
+        }
+        if(all(class(dot.border.size) == "list")){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": dot.border.size ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else{
+            dot.border.size <- list(L1 = dot.border.size)
+        }
+        if( ! is.null(dot.border.color)){
+            if(all(class(dot.border.color) == "list")){
+                tempo.cat <- paste0("ERROR IN ", function.name, ": dot.border.color ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }else{
+                dot.border.color <- list(L1 = dot.border.color)
+            }
+        }
+        if(all(class(line.size) == "list")){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": line.size ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else{
+            line.size <- list(L1 = line.size)
+        }
+        if(all(class(line.type) == "list")){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": line.type ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else{
+            line.type <- list(L1 = line.type)
+        }
+        if( ! is.null(legend.name)){
+            if(all(class(legend.name) == "list")){
+                tempo.cat <- paste0("ERROR IN ", function.name, ": legend.name ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }else{
+                legend.name <- list(L1 = legend.name)
+            }
+        }
+    }else if( ! all(sapply(data1, FUN = "class") == "data.frame")){ # if not a data frame, data1 can only be a list, as tested above
+        tempo.cat <- paste0("ERROR IN ", function.name, ": data1 ARGUMENT MUST BE A DATA FRAME OR A LIST OF DATA FRAMES")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+    }
+    # single value converted into list now reattributed to the argument name
+    if( ! is.null(color)){
+        if( ! is.null(list.color)){
+            color <- list.color
+        }
+    }
+    if( ! is.null(list.geom)){
+        geom <- list.geom
+    }
+    if( ! is.null(list.geom.step.dir)){
+        geom.step.dir <- list.geom.step.dir
+    }
+    if( ! is.null(geom.stick.base)){
+        if( ! is.null(list.geom.stick.base)){
+            geom.stick.base <- list.geom.stick.base
+        }
+    }
+    if( ! is.null(list.alpha)){
+        alpha <- list.alpha
+    }
+    if( ! is.null(list.dot.size)){
+        dot.size <- list.dot.size
+    }
+    if( ! is.null(list.dot.shape)){
+        dot.shape <- list.dot.shape
+    }
+    if( ! is.null(list.dot.border.size)){
+        dot.border.size <- list.dot.border.size
+    }
+    if( ! is.null(dot.border.color)){
+        if( ! is.null(list.dot.border.color)){
+            dot.border.color <- list.dot.border.color
+        }
+    }
+    if( ! is.null(list.line.size)){
+        line.size <- list.line.size
+    }
+    if( ! is.null(list.line.type)){
+        line.type <- list.line.type
+    }
+    # end single value converted into list now reattributed to the argument name
+    # data, x, y, geom, alpha, dot.size, shape, dot.border.size, line.size, line.type, legend.name are list now
+    # if non-null, categ, categ.class.order, legend.name, color, dot.border.color are list now
+    # end conversion into lists
+    # verif of add
+    if( ! is.null(add)){
+        if( ! grepl(pattern = "^\\s*\\+", add)){ # check that the add string start by +
+            tempo.cat <- paste0("ERROR IN ", function.name, ": add ARGUMENT MUST START WITH \"+\": ", paste(unique(add), collapse = " "))
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            
+        }else if( ! grepl(pattern = "(ggplot2|lemon)\\s*::", add)){ #
+            tempo.cat <- paste0("ERROR IN ", function.name, ": FOR EASIER FUNCTION DETECTION, add ARGUMENT MUST CONTAIN \"ggplot2::\" OR \"lemon::\" IN FRONT OF EACH GGPLOT2 FUNCTION: ", paste(unique(add), collapse = " "))
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else if( ! grepl(pattern = ")\\s*$", add)){ # check that the add string finished by )
+            tempo.cat <- paste0("ERROR IN ", function.name, ": add ARGUMENT MUST FINISH BY \")\": ", paste(unique(add), collapse = " "))
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }
+    }
+    # end verif of add
+    # management of add containing facet
+    facet.categ <- NULL
+    if( ! is.null(add)){
+        facet.check <- TRUE
+        tempo <- unlist(strsplit(x = add, split = "\\s*\\+\\s*(ggplot2|lemon)\\s*::\\s*")) #
+        tempo <- sub(x = tempo, pattern = "^facet_wrap", replacement = "ggplot2::facet_wrap")
+        tempo <- sub(x = tempo, pattern = "^facet_grid", replacement = "ggplot2::facet_grid")
+        tempo <- sub(x = tempo, pattern = "^facet_rep", replacement = "lemon::facet_rep")
+        if(length(data1) > 1 & (any(grepl(x = tempo, pattern = "ggplot2::facet_wrap|lemon::facet_rep_wrap")) | grepl(x = add, pattern = "ggplot2::facet_grid|lemon::facet_rep_grid"))){
+            tempo.cat <- paste0("ERROR IN ", function.name, "\nfacet PANELS CANNOT BE USED IF MORE THAN ONE DATA FRAME IN THE data1 ARGUMENT\nPLEASE REWRITE THE add STRING AND RERUN")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else{
+            if(any(grepl(x = tempo, pattern = "ggplot2::facet_wrap|lemon::facet_rep_wrap"))){
+                tempo1 <- suppressWarnings(eval(parse(text = tempo[grepl(x = tempo, pattern = "ggplot2::facet_wrap|lemon::facet_rep_wrap")])))
+                facet.categ <- list(names(tempo1$params$facets)) # list of length 1
+                tempo.text <- "facet_wrap OR facet_rep_wrap"
+                facet.check <- FALSE
+            }else if(grepl(x = add, pattern = "ggplot2::facet_grid|lemon::facet_rep_grid")){
+                tempo1 <- suppressWarnings(eval(parse(text = tempo[grepl(x = tempo, pattern = "ggplot2::facet_grid|lemon::facet_rep_grid")])))
+                facet.categ <- list(c(names(tempo1$params$rows), names(tempo1$params$cols))) # list of length 1
+                tempo.text <- "facet_grid OR facet_rep_grid"
+                facet.check <- FALSE
+            }
+            if(facet.check == FALSE & ! all(facet.categ %in% names(data1[[1]]))){ # WARNING: all(facet.categ %in% names(data1)) is TRUE when facet.categ is NULL
+                tempo.cat <- paste0("ERROR IN ", function.name, "\nDETECTION OF \"", tempo.text, "\" STRING IN THE add ARGUMENT BUT PROBLEM OF VARIABLE DETECTION (COLUMN NAMES OF data1)\nTHE DETECTED VARIABLES ARE:\n", paste(facet.categ, collapse = " "), "\nTHE data1 COLUMN NAMES ARE:\n", paste(names(data1[[1]]), collapse = " "), "\nPLEASE REWRITE THE add STRING AND RERUN")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }
+        }
+    }
+    # if facet.categ is not NULL, it is a list of length 1 now
+    # end management of add containing facet
+    # legend name filling
+    if(is.null(legend.name) & ! is.null(categ)){
+        legend.name <- categ
+    }else if(is.null(legend.name) & is.null(categ)){
+        legend.name <- vector("list", length(data1)) # null list
+    }
+    # legend.name not NULL anymore (list)
+    # end legend name filling
+    # ini categ for legend display
+    fin.lg.disp <- vector("list", 6) # will be used at the end to display or not legends
+    fin.lg.disp[] <- FALSE
+    legend.disp <- vector("list", length(data1))
+    if(is.null(categ) | legend.show == FALSE){
+        legend.disp[] <- FALSE
+    }else{
+        for(i2 in 1:length(data1)){
+            if(is.null(categ[[i2]])){
+                legend.disp[[i2]] <- FALSE
+            }else{
+                legend.disp[[i2]] <- TRUE
+            }
+        }
+    }
+    # end ini categ for legend display
+    # integer colors into gg_palette
+    tempo.check.color <- NULL
+    for(i1 in 1:length(data1)){
+        if(any(is.na(color[[i1]]))){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), ": color ARGUMENT CANNOT CONTAIN NA")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }
+        tempo.check.color <- c(tempo.check.color, fun_check(data = color[[i1]], data.name = ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), class = "integer", double.as.integer.allowed = TRUE, na.contain = TRUE, fun.name = function.name)$problem)
+    }
+    tempo.check.color <- ! tempo.check.color # invert TRUE and FALSE because if integer, then problem = FALSE
+    if(any(tempo.check.color == TRUE)){ # convert integers into colors
+        tempo.integer <- unlist(color[tempo.check.color])
+        tempo.color <- fun_gg_palette(max(tempo.integer, na.rm = TRUE))
+        for(i1 in 1:length(data1)){
+            if(tempo.check.color[i1] == TRUE){
+                color[[i1]] <-tempo.color[color[[i1]]]
+            }
+        }
+    }
+    # end integer colors into gg_palette
+    # loop (checking inside list compartment)
+    compart.null.color <- 0 # will be used to attribute a color when color is non-null but a compartment of color is NULL
+    data1.ini <- data1 # to report NA removal
+    removed.row.nb <- vector("list", length = length(data1)) # to report NA removal. Contains NULL
+    removed.rows <- vector("list", length = length(data1)) # to report NA removal. Contains NULL
+    for(i1 in 1:length(data1)){
+        tempo <- fun_check(data = data1[[i1]], data.name = ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), class = "data.frame", na.contain = TRUE, fun.name = function.name)
+        if(tempo$problem == TRUE){
+            stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }
+        # reserved word checking
+        if(any(names(data1[[i1]]) %in% reserved.words)){ # I do not use fun_name_change() because cannot control y before creating "fake_y". But ok because reserved are not that common
+            tempo.cat <- paste0("ERROR IN ", function.name, ": COLUMN NAMES OF ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), " ARGUMENT CANNOT BE ONE OF THESE WORDS\n", paste(reserved.words, collapse = " "), "\nTHESE ARE RESERVED FOR THE ", function.name, " FUNCTION")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }
+        if( ! (is.null(add))){
+            if(any(sapply(X = reserved.words, FUN = grepl, x = add))){
+                tempo.cat <- paste0("ERROR IN ", function.name, "\nDETECTION OF COLUMN NAMES OF data1 IN THE add ARGUMENT STRING, THAT CORRESPOND TO RESERVED STRINGS FOR ", function.name, "\nFOLLOWING COLUMN NAMES HAVE TO BE CHANGED:\n", paste(arg.names[sapply(X = reserved.words, FUN = grepl, x = add)], collapse = "\n"), "\nFOR INFORMATION, THE RESERVED WORDS ARE:\n", paste(reserved.words, collapse = "\n"))
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }else if(any(sapply(X = arg.names, FUN = grepl, x = add))){
+                warn.count <- warn.count + 1
+                tempo.warn <- paste0("(", warn.count,") NAMES OF ", function.name, " ARGUMENTS DETECTED IN THE add STRING:\n", paste(arg.names[sapply(X = arg.names, FUN = grepl, x = add)], collapse = "\n"), "\nRISK OF WRONG OBJECT USAGE INSIDE ", function.name)
+                warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+            }
+        }
+        # end reserved word checking
+        # check of geom now because required for y argument
+        tempo <- fun_check(data = geom[[i1]], data.name = ifelse(length(geom)== 1L, "geom", paste0("geom NUMBER ", i1)), options = c("geom_point", "geom_line", "geom_path", "geom_step", "geom_hline", "geom_vline", "geom_stick"), length = 1, fun.name = function.name)
+        if(tempo$problem == TRUE){
+            stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }
+        if(geom[[i1]] == "geom_step" & is.null(geom.step.dir[[i1]])){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(geom.step.dir)== 1L, "geom.step.dir", paste0("ELEMENT ", i1, " OF geom.step.dir ARGUMENT")), ": geom.step.dir ARGUMENT CANNOT BE NULL IF ", ifelse(length(geom)== 1L, "geom", paste0("ELEMENT ", i1, " OF geom")), " ARGUMENT IS \"geom_step\"\nHERE geom.step.dir ARGUMENT IS: ", paste(geom.step.dir[[i1]], collapse = " "))
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else if(geom[[i1]] == "geom_step" & ! is.null(geom.step.dir[[i1]])){
+            tempo <- fun_check(data = geom.step.dir[[i1]], data.name = ifelse(length(geom.step.dir)== 1L, "geom.step.dir", paste0("geom.step.dir NUMBER ", i1)), options = c("vh", "hv", "mid"), length = 1, fun.name = function.name)
+            if(tempo$problem == TRUE){
+                stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }
+        }
+        if( ! (is.null(geom.stick.base))){
+            if(geom[[i1]] == "geom_stick" & ! is.null(geom.stick.base[[i1]])){
+                tempo <- fun_check(data = geom.stick.base[[i1]], data.name = ifelse(length(geom.stick.base)== 1L, "geom.stick.base", paste0("geom.stick.base NUMBER ", i1)), mode = "numeric", length = 1, na.contain = FALSE, fun.name = function.name)
+                if(tempo$problem == TRUE){
+                    stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+                }
+            }
+        }
+        # end check of geom now because required for y argument
+        if(is.null(x[[i1]])){
+            if(all(geom[[i1]] != "geom_hline")){
+                tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(x)== 1L, "x", paste0("ELEMENT ", i1, " OF x ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ": x ARGUMENT CANNOT BE NULL EXCEPT IF ", ifelse(length(geom)== 1L, "x", paste0("geom NUMBER ", i1)), " ARGUMENT IS \"geom_hline\"\nHERE geom ARGUMENT IS: ", paste(geom[[i1]], collapse = " "))
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }else{
+                x[[i1]] <- "fake_x"
+                data1[[i1]] <- cbind(data1[[i1]], fake_x = NA, stringsAsFactors = TRUE)
+                data1[[i1]][, "fake_x"] <- as.numeric(data1[[i1]][, "fake_x"])
+                warn.count <- warn.count + 1
+                tempo.warn <- paste0("(", warn.count,") NULL ", ifelse(length(x)== 1L, "x", paste0("ELEMENT ", i1, " OF x")), " ARGUMENT ASSOCIATED TO ", ifelse(length(geom)== 1L, "geom", paste0("geom NUMBER ", i1)), " ARGUMENT ", geom[[i1]], " -> FAKE COLUMN ADDED TO DATA FRAME ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ", NAMED \"fake_x\" FOR FINAL DRAWING")
+                warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+            }
+        }else{
+            if(all(geom[[i1]] == "geom_hline")){
+                tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(x)== 1L, "x", paste0("ELEMENT ", i1, " OF x ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ": x ARGUMENT MUST BE NULL IF ", ifelse(length(geom)== 1L, "geom", paste0("geom NUMBER ", i1)), " ARGUMENT IS \"geom_hline\"")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }
+            tempo <- fun_check(data = x[[i1]], data.name = ifelse(length(x)== 1L, "x", paste0("ELEMENT ", i1, " OF x ARGUMENT")), class = "vector", mode = "character", length = 1, fun.name = function.name)
+            if(tempo$problem == TRUE){
+                stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }
+        }
+        if(is.null(y[[i1]])){
+            if(all(geom[[i1]] != "geom_vline")){
+                tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(y)== 1L, "y", paste0("ELEMENT ", i1, " OF y ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ": y ARGUMENT CANNOT BE NULL EXCEPT IF ", ifelse(length(geom)== 1L, "y", paste0("geom NUMBER ", i1)), " ARGUMENT IS \"geom_vline\"\nHERE geom ARGUMENT IS: ", paste(geom[[i1]], collapse = " "))
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }else{
+                y[[i1]] <- "fake_y"
+                data1[[i1]] <- cbind(data1[[i1]], fake_y = NA, stringsAsFactors = TRUE)
+                data1[[i1]][, "fake_y"] <- as.numeric(data1[[i1]][, "fake_y"])
+                warn.count <- warn.count + 1
+                tempo.warn <- paste0("(", warn.count,") NULL ", ifelse(length(y)== 1L, "y", paste0("ELEMENT ", i1, " OF y")), " ARGUMENT ASSOCIATED TO ", ifelse(length(geom)== 1L, "geom", paste0("geom NUMBER ", i1)), " ARGUMENT ", geom[[i1]], " -> FAKE COLUMN ADDED TO DATA FRAME ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ", NAMED \"fake_y\" FOR FINAL DRAWING")
+                warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+            }
+        }else{
+            if(all(geom[[i1]] == "geom_vline")){
+                tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(y)== 1L, "y", paste0("ELEMENT ", i1, " OF y ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ": y ARGUMENT MUST BE NULL IF ", ifelse(length(geom)== 1L, "geom", paste0("geom NUMBER ", i1)), " ARGUMENT IS \"geom_vline\"")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }
+            tempo <- fun_check(data = y[[i1]], data.name = ifelse(length(y)== 1L, "y", paste0("ELEMENT ", i1, " OF y ARGUMENT")), class = "vector", mode = "character", length = 1, fun.name = function.name)
+            if(tempo$problem == TRUE){
+                stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }
+        }
+        # x[[i1]] and y[[i1]] not NULL anymore
+        if( ! (x[[i1]] %in% names(data1[[i1]]))){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(x)== 1L, "x", paste0("ELEMENT ", i1, " OF x")), " ARGUMENT MUST BE A COLUMN NAME OF ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT\nHERE IT IS: ", paste(x[[i1]], collapse = " "))))
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }
+        if( ! (y[[i1]] %in% names(data1[[i1]]))){
+            tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(y)== 1L, "y", paste0("ELEMENT ", i1, " OF y")), " ARGUMENT MUST BE A COLUMN NAME OF ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT\nHERE IT IS: ", paste(y[[i1]], collapse = " "))))
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }
+        tempo <- fun_check(data = data1[[i1]][, x[[i1]]], data.name = ifelse(length(x)== 1L, "x ARGUMENT (AS COLUMN NAME OF data1 DATA FRAME)", paste0("ELEMENT ", i1, " OF x ARGUMENT", " (AS COLUMN NAME OF data1 DATA FRAME NUMBER ", i1, ")")), class = "vector", mode = "numeric", na.contain = TRUE, fun.name = function.name)
+        if(tempo$problem == TRUE){
+            stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }
+        tempo <- fun_check(data = data1[[i1]][, y[[i1]]], data.name = ifelse(length(y)== 1L, "y ARGUMENT (AS COLUMN NAME OF data1 DATA FRAME)", paste0("ELEMENT ", i1, " OF y ARGUMENT", " (AS COLUMN NAME OF data1 DATA FRAME NUMBER ", i1, ")")), class = "vector", mode = "numeric", na.contain = TRUE, fun.name = function.name)
+        if(tempo$problem == TRUE){
+            stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }
+        if(x[[i1]] == "fake_x" & y[[i1]] == "fake_y"){ # because the code cannot accept to be both "fake_x" and "fake_y" at the same time
+            tempo.cat <- paste0("ERROR IN ", function.name, ": CODE INCONSISTENCY 2\nTHE CODE CANNOT ACCEPT x AND y TO BE \"fake_x\" AND \"fake_y\" IN THE SAME DATA FRAME ", i1, " ")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }
+        
+        if(( ! is.null(categ)) & ( ! is.null(categ[[i1]]))){ # is.null(categ[[i1]]) works even if categ is NULL # is.null(categ[[i1]]) works even if categ is NULL # if categ[[i1]] = NULL, fake_categ will be created later on
+            tempo <- fun_check(data = categ[[i1]], data.name = ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")),, class = "vector", mode = "character", length = 1, fun.name = function.name)
+            if(tempo$problem == TRUE){
+                stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }
+            if( ! (categ[[i1]] %in% names(data1[[i1]]))){
+                tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ")), " ARGUMENT MUST BE A COLUMN NAME OF ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT\nHERE IT IS: ", paste(categ[[i1]], collapse = " "))))
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }
+            tempo1 <- fun_check(data = data1[[i1]][, categ[[i1]]], data.name = ifelse(length(categ)== 1L, "categ OF data1 ARGUMENT", paste0("ELEMENT ", i1, " OF categ ARGUMENT IN DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name)
+            tempo2 <- fun_check(data = data1[[i1]][, categ[[i1]]], data.name = ifelse(length(categ)== 1L, "categ OF data1 ARGUMENT", paste0("ELEMENT ", i1, " OF categ ARGUMENT IN DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), class = "factor", na.contain = TRUE, fun.name = function.name)
+            if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+                tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(categ)== 1L, "categ OF data1 ARGUMENT", paste0("ELEMENT ", i1, " OF categ ARGUMENT IN DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), " MUST BE A FACTOR OR CHARACTER VECTOR")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }else if(tempo1$problem == FALSE){
+                data1[[i1]][, categ[[i1]]] <- factor(data1[[i1]][, categ[[i1]]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
+                warn.count <- warn.count + 1
+                tempo.warn <- paste0("(", warn.count,") IN ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ", THE CHARACTER COLUMN HAS BEEN CONVERTED TO FACTOR")
+                warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                
+            }
+            if(geom[[i1]] == "geom_vline" | geom[[i1]] == "geom_hline"){
+                if(length(unique(data1[[i1]][, categ[[i1]]])) != nrow(data1[[i1]])){
+                    tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(geom)== 1L, "geom OF data1 ARGUMENT", paste0("geom NUMBER ", i1, " OF DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), " ARGUMENT IS ", geom[[i1]], ", MEANING THAT ", ifelse(length(categ)== 1L, "categ OF data1 ARGUMENT", paste0("ELEMENT ", i1, " OF categ ARGUMENT IN DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), " MUST HAVE A DIFFERENT CLASS PER LINE OF data1 (ONE x VALUE PER CLASS)")
+                    stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+                }
+            }
+        }else if(( ! is.null(categ)) & is.null(categ[[i1]])){ # is.null(categ[[i1]]) works even if categ is NULL # if categ[[i1]] = NULL, fake_categ will be created. WARNING: is.null(categ[[i1]]) means no legend display (see above), because categ has not been precised. This also means a single color for data1[[i1]]
+            if(length(color[[i1]]) > 1){ # 0 means is.null(color[[i1]]) or is.null(color) and 1 is ok -> single color for data1[[i1]]
+                warn.count <- warn.count + 1
+                tempo.warn <- paste0("(", warn.count,") NULL ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ")), " ARGUMENT BUT CORRESPONDING COLORS IN ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), " HAS LENGTH OVER 1\n", paste(color[[i1]], collapse = " "), "\nWHICH IS NOT COMPATIBLE WITH NULL CATEG -> COLOR RESET TO A SINGLE COLOR")
+                warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                color[i1] <- list(NULL) # will provide a single color below # Warning color[[i1]] <- NULL removes the compartment
+            }
+            categ[[i1]] <- "fake_categ"
+            data1[[i1]] <- cbind(data1[[i1]], fake_categ = "", stringsAsFactors = TRUE)
+            # inactivated because give a different color to different "Line_" categ while a single color for all the data1[[i1]] required. Thus, put back after the color management
+            # if(geom[[i1]] == "geom_hline" | geom[[i1]] == "geom_vline"){
+            # data1[[i1]][, "fake_categ"] <- paste0("Line_", 1:nrow(data1[[i1]]))
+            # }else{
+            data1[[i1]][, "fake_categ"] <- data1[[i1]][, "fake_categ"] # as.numeric("") create a vector of NA but class numeric
+            # }
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") NULL ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ")), " ARGUMENT -> FOR DATA FRAME ", ifelse(length(data1)== 1L, "data1 ARGUMENT:", paste0("NUMBER ", i1, " OF data1 ARGUMENT:")), "\n- FAKE \"fake_categ\" COLUMN ADDED FILLED WITH \"\"(OR WITH \"Line_...\" FOR LINES)\n- SINGLE COLOR USED FOR PLOTTING\n- NO LEGEND DISPLAYED")
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        }
+        # OK: if categ is not NULL, all the non-null categ columns of data1 are factors from here
+        
+        # management of log scale and Inf removal
+        if(x[[i1]] != "fake_x"){
+            if(any(( ! is.finite(data1[[i1]][, x[[i1]]])) & ( ! is.na(data1[[i1]][, x[[i1]]])))){ # is.finite also detects NA: ( ! is.finite(data1[, y])) & ( ! is.na(data1[, y])) detects only Inf
+                warn.count <- warn.count + 1
+                tempo.warn <- paste0("(", warn.count,") PRESENCE OF -Inf OR Inf VALUES IN ", ifelse(length(categ)== 1L, "x", paste0("ELEMENT ", i1, " OF x ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), " AND CORRESPONDING ROWS REMOVED (SEE $removed.row.nb AND $removed.rows)")
+                warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+            }
+        }
+        if(y[[i1]] != "fake_y"){
+            if(any(( ! is.finite(data1[[i1]][, y[[i1]]])) & ( ! is.na(data1[[i1]][, y[[i1]]])))){ # is.finite also detects NA: ( ! is.finite(data1[, y])) & ( ! is.na(data1[, y])) detects only Inf
+                warn.count <- warn.count + 1
+                tempo.warn <- paste0("(", warn.count,") PRESENCE OF -Inf OR Inf VALUES IN ", ifelse(length(categ)== 1L, "y", paste0("ELEMENT ", i1, " OF y ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), " AND CORRESPONDING ROWS REMOVED (SEE $removed.row.nb AND $removed.rows)")
+                warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+            }
+        }
+        # log conversion
+        if(x.log != "no"){
+            tempo1 <- ! is.finite(data1[[i1]][, x[[i1]]]) # where are initial NA and Inf
+            data1[[i1]][, x[[i1]]] <- suppressWarnings(get(x.log)(data1[[i1]][, x[[i1]]]))# no env = sys.nframe(), inherit = FALSE in get() because look for function in the classical scope
+            if(any( ! (tempo1 | is.finite(data1[[i1]][, x[[i1]]])))){
+                warn.count <- warn.count + 1
+                tempo.warn <- paste0("(", warn.count,") LOG CONVERSION INTRODUCED -Inf OR Inf OR NaN VALUES IN ", ifelse(length(categ)== 1L, "x", paste0("ELEMENT ", i1, " OF x ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), " AND CORRESPONDING ROWS REMOVED (SEE $removed.row.nb AND $removed.rows)")
+                warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+            }
+        }
+        if(y.log != "no"){
+            tempo1 <- ! is.finite(data1[[i1]][, y[[i1]]]) # where are initial NA and Inf
+            data1[[i1]][, y[[i1]]] <- suppressWarnings(get(y.log)(data1[[i1]][, y[[i1]]]))# no env = sys.nframe(), inherit = FALSE in get() because look for function in the classical scope
+            if(any( ! (tempo1 | is.finite(data1[[i1]][, y[[i1]]])))){
+                warn.count <- warn.count + 1
+                tempo.warn <- paste0("(", warn.count,") LOG CONVERSION INTRODUCED -Inf OR Inf OR NaN VALUES IN ", ifelse(length(categ)== 1L, "y", paste0("ELEMENT ", i1, " OF y ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), " AND CORRESPONDING ROWS REMOVED (SEE $removed.row.nb AND $removed.rows)")
+                warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+            }
+        }
+        # Inf removal
+        # removed.row.nb[[i1]] <- NULL # already NULL and Warning this removes the compartment
+        removed.rows[[i1]] <- data.frame(stringsAsFactors = FALSE)
+        if(any(( ! is.finite(data1[[i1]][, x[[i1]]])) & ( ! is.na(data1[[i1]][, x[[i1]]])))){ # is.finite also detects NA: ( ! is.finite(data1[[i1]][, x[[i1]]])) & ( ! is.na(data1[[i1]][, x[[i1]]])) detects only Inf
+            removed.row.nb[[i1]] <- c(removed.row.nb[[i1]], which(( ! is.finite(data1[[i1]][, x[[i1]]])) & ( ! is.na(data1[[i1]][, x[[i1]]]))))
+        }
+        if(any(( ! is.finite(data1[[i1]][, y[[i1]]])) & ( ! is.na(data1[[i1]][, y[[i1]]])))){ # is.finite also detects NA: ( ! is.finite(data1[[i1]][, y[[i1]]])) & ( ! is.na(data1[[i1]][, y[[i1]]])) detects only Inf
+            removed.row.nb[[i1]] <- c(removed.row.nb[[i1]], which(( ! is.finite(data1[[i1]][, y[[i1]]])) & ( ! is.na(data1[[i1]][, y[[i1]]]))))
+        }
+        if( ! is.null(removed.row.nb[[i1]])){
+            removed.row.nb[[i1]] <- unique(removed.row.nb[[i1]]) # to remove the duplicated positions (NA in both x and y)
+            removed.rows[[i1]] <- rbind(removed.rows[[i1]], data1.ini[[i1]][removed.row.nb[[i1]], ]) # here data1.ini used to have the y = O rows that will be removed because of Inf creation after log transformation
+            data1[[i1]] <- data1[[i1]][-removed.row.nb[[i1]], ]
+            data1.ini[[i1]] <- data1.ini[[i1]][-removed.row.nb[[i1]], ] #
+        }
+        # From here, data1 and data.ini have no more Inf
+        # end Inf removal
+        # x.lim and y.lim dealt later on, after the end f the loop
+        # end management of log scale and Inf removal
+        # management of log scale
+        if(x.log != "no"){
+            data1[[i1]][, x[[i1]]] <- suppressWarnings(get(x.log)(data1[[i1]][, x[[i1]]])) # no env = sys.nframe(), inherit = FALSE in get() because look for function in the classical scope
+        }
+        if(y.log != "no"){
+            data1[[i1]][, y[[i1]]] <- suppressWarnings(get(y.log)(data1[[i1]][, y[[i1]]])) # no env = sys.nframe(), inherit = FALSE in get() because look for function in the classical scope
+        }
+        # end management of log scale
+        # na detection and removal
+        column.check <- unique(unlist(c( # unlist because creates a list
+            if(x[[i1]] == "fake_x"){NULL}else{x[[i1]]}, 
+            if(y[[i1]] == "fake_y"){NULL}else{y[[i1]]}, 
+            if( ! is.null(categ)){if(is.null(categ[[i1]])){NULL}else{categ[[i1]]}}, 
+            if( ! is.null(facet.categ)){if(is.null(facet.categ[[i1]])){NULL}else{facet.categ[[i1]]}}
+        ))) # dot.categ because can be a 3rd column of data1
+        if(any(is.na(data1[[i1]][, column.check]))){
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") NA DETECTED IN COLUMNS ", paste(column.check, collapse = " "), " OF ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), " AND CORRESPONDING ROWS REMOVED (SEE $removed.row.nb AND $removed.rows)")
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+            for(i3 in 1:length(column.check)){
+                if(any(is.na(data1[[i1]][, column.check[i3]]))){
+                    warn.count <- warn.count + 1
+                    tempo.warn <- paste0("NA REMOVAL DUE TO COLUMN ", column.check[i3], " OF ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")))
+                    warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                }
+            }
+            tempo <- unique(unlist(lapply(lapply(c(data1[[i1]][column.check]), FUN = is.na), FUN = which)))
+            removed.row.nb[[i1]] <- c(removed.row.nb[[i1]], tempo)
+            removed.rows[[i1]] <- rbind(removed.rows[[i1]], data1.ini[[i1]][tempo, ]) #  # tempo used because removed.row.nb is not empty. Here data1.ini used to have the non NA rows that will be removed because of NAN creation after log transformation (neg values for instance)
+            column.check <- column.check[ ! (column.check == x[[i1]] | column.check == y[[i1]])] # remove x and y to keep quali columns
+            if(length(tempo) != 0){
+                data1[[i1]] <- data1[[i1]][-tempo, ] # WARNING tempo here and not removed.row.nb because the latter contain more numbers thant the former
+                data1.ini[[i1]] <- data1.ini[[i1]][-tempo, ] # WARNING tempo here and not removed.row.nb because the latter contain more numbers than the former
+                for(i4 in 1:length(column.check)){
+                    if(any( ! unique(removed.rows[[i1]][, column.check[i4]]) %in% unique(data1[[i1]][, column.check[i4]]))){
+                        warn.count <- warn.count + 1
+                        tempo.warn <- paste0("(", warn.count,") IN COLUMN ", column.check[i4], " OF ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ", THE FOLLOWING CLASSES HAVE DISAPPEARED AFTER NA REMOVAL\n(IF COLUMN USED IN THE PLOT, THIS CLASS WILL NOT BE DISPLAYED):\n", paste(unique(removed.rows[[i1]][, column.check[i4]])[ ! unique(removed.rows[[i1]][, column.check[i4]]) %in% unique(data1[[i1]][, column.check[i4]])], collapse = " "))
+                        warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                        tempo.levels <- levels(data1[[i1]][, column.check[i4]])[levels(data1[[i1]][, column.check[i4]]) %in% unique(as.character(data1[[i1]][, column.check[i4]]))]
+                        data1[[i1]][, column.check[i4]] <- factor(as.character(data1[[i1]][, column.check[i4]]), levels = tempo.levels)
+                        if(column.check[i4] %in% categ[[i1]] & ! is.null(categ.class.order)){
+                            categ.class.order[[i1]] <- levels(data1[[i1]][, column.check[i4]])[levels(data1[[i1]][, column.check[i4]]) %in% unique(data1[[i1]][, column.check[i4]])] # remove the absent class in the categ.class.order vector
+                            data1[[i1]][, column.check[i4]] <- factor(as.character(data1[[i1]][, column.check[i4]]), levels = unique(categ.class.order[[i1]]))
+                        }
+                    }
+                }
+            }
+        }
+        # end na detection and removal
+        # From here, data1 and data.ini have no more NA or NaN in x, y, categ (if categ != NULL) and facet.categ (if categ != NULL)
+        if( ! is.null(categ.class.order)){
+            # the following check will be done several times but I prefer to keep it here, after the creation of categ
+            if(is.null(categ[[i1]]) & ! is.null(categ.class.order[[i1]])){
+                tempo.cat <- paste0("ERROR IN ", function.name, "\nCOMPARTMENT ", i1, " OF categ ARGUMENT CANNOT BE NULL IF COMPARTMENT ", i1, " OF categ.class.order ARGUMENT IS NOT NULL: ", paste(categ.class.order, collapse = " "))
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }else{
+                if(is.null(categ.class.order[[i1]])){
+                    warn.count <- warn.count + 1
+                    tempo.warn <- paste0("(", warn.count,") THE categ.class.order COMPARTMENT ", i1, " IS NULL. ALPHABETICAL ORDER WILL BE APPLIED")
+                    warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                    data1[[i1]][, categ[[i1]]] <- factor(as.character(data1[[i1]][, categ[[i1]]])) # if already a factor, change nothing, if characters, levels according to alphabetical order
+                    categ.class.order[[i1]] <- levels(data1[[i1]][, categ[[i1]]]) # character vector that will be used later
+                }else{
+                    tempo <- fun_check(data = categ.class.order[[i1]], data.name = paste0("COMPARTMENT ", i1 , " OF categ.class.order ARGUMENT"), class = "vector", mode = "character", length = length(levels(data1[[i1]][, categ[[i1]]])), fun.name = function.name) # length(data1[, categ[i1]) -> if data1[, categ[i1] was initially character vector, then conversion as factor after the NA removal, thus class number ok. If data1[, categ[i1] was initially factor, no modification after the NA removal, thus class number ok
+                    if(tempo$problem == TRUE){
+                        stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+                    }
+                }
+                if(any(duplicated(categ.class.order[[i1]]))){
+                    tempo.cat <- paste0("ERROR IN ", function.name, "\nCOMPARTMENT ", i1, " OF categ.class.order ARGUMENT CANNOT HAVE DUPLICATED CLASSES: ", paste(categ.class.order[[i1]], collapse = " "))
+                    stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+                }else if( ! (all(categ.class.order[[i1]] %in% unique(data1[[i1]][, categ[[i1]]])) & all(unique(data1[[i1]][, categ[[i1]]]) %in% categ.class.order[[i1]]))){
+                    tempo.cat <- paste0("ERROR IN ", function.name, "\nCOMPARTMENT ", i1, " OF categ.class.order ARGUMENT MUST BE CLASSES OF COMPARTMENT ", i1, " OF categ ARGUMENT\nHERE IT IS:\n", paste(categ.class.order[[i1]], collapse = " "), "\nFOR COMPARTMENT ", i1, " OF categ.class.order AND IT IS:\n", paste(unique(data1[[i1]][, categ[[i1]]]), collapse = " "), "\nFOR COLUMN ", categ[[i1]], " OF data1 NUMBER ", i1)
+                    stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+                }else{
+                    data1[[i1]][, categ[[i1]]] <- factor(data1[[i1]][, categ[[i1]]], levels = categ.class.order[[i1]]) # reorder the factor
+                }
+                names(categ.class.order)[i1] <- categ[[i1]]
+            }
+        }
+        # OK: if categ.class.order is not NULL, all the NULL categ.class.order columns of data1 are character from here
+        
+        if( ! is.null(legend.name[[i1]])){
+            tempo <- fun_check(data = legend.name[[i1]], data.name = ifelse(length(legend.name)== 1L, "legend.name", paste0("legend.name NUMBER ", i1)),, class = "vector", mode = "character", length = 1, fun.name = function.name)
+            if(tempo$problem == TRUE){
+                stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }
+        }
+        if( ! is.null(color)){ # if color is NULL, will be filled later on
+            # check the nature of color
+            if(is.null(color[[i1]])){
+                compart.null.color <- compart.null.color + 1
+                color[[i1]] <- grey(compart.null.color / 8) # cannot be more than 7 overlays. Thus 7 different greys. 8/8 is excluded because white dots
+                warn.count <- warn.count + 1
+                tempo.warn <- paste0("(", warn.count,") NULL COLOR IN ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), " ASSOCIATED TO ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ", SINGLE COLOR ", paste(color[[i1]], collapse = " "), " HAS BEEN ATTRIBUTED")
+                warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+            }
+            tempo1 <- fun_check(data = color[[i1]], data.name = ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name) # na.contain = TRUE in case of colum of data1
+            tempo2 <- fun_check(data = color[[i1]], data.name = ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), class = "factor", na.contain = TRUE, fun.name = function.name) # idem
+            if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+                tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), " MUST BE A FACTOR OR CHARACTER VECTOR OR INTEGER VECTOR") # integer possible because dealt above
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }else if( ! (all(color[[i1]] %in% colors() | grepl(pattern = "^#", color[[i1]])))){ # check that all strings of low.color start by #
+                tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), " MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # AND/OR COLOR NAMES GIVEN BY colors(): ", paste(unique(color[[i1]]), collapse = " "))
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }
+            if(any(is.na(color[[i1]]))){
+                warn.count <- warn.count + 1
+                tempo.warn <- paste0("(", warn.count,") IN ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), ", THE COLORS:\n", paste(unique(color[[i1]]), collapse = " "), "\nCONTAINS NA")
+                warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+            }
+            # end check the nature of color
+            # check the length of color
+            if(is.null(categ) & length(color[[i1]]) != 1){
+                tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), " MUST BE A SINGLE COLOR IF categ IS NULL")
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }else if( ! is.null(categ)){
+                # No problem of NA management by ggplot2 because already removed
+                if(categ[[i1]] == "fake_categ" & length(color[[i1]]) != 1){
+                    tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), " MUST BE A SINGLE COLOR IF ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IS NULL")
+                    stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+                }else if(length(color[[i1]]) == length(unique(data1[[i1]][, categ[[i1]]]))){ # here length(color) is equal to the different number of categ
+                    data1[[i1]][, categ[[i1]]] <- factor(data1[[i1]][, categ[[i1]]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
+                    warn.count <- warn.count + 1
+                    tempo.warn <- paste0("(", warn.count,") IN ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ", THE FOLLOWING COLORS:\n", paste(color[[i1]], collapse = " "), "\nHAVE BEEN ATTRIBUTED TO THESE CLASSES:\n", paste(levels(factor(data1[[i1]][, categ[[i1]]])), collapse = " "))
+                    warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                }else if(length(color[[i1]]) == length(data1[[i1]][, categ[[i1]]])){# here length(color) is equal to nrow(data1[[i1]]) -> Modif to have length(color) equal to the different number of categ (length(color) == length(levels(data1[[i1]][, categ[[i1]]])))
+                    data1[[i1]] <- cbind(data1[[i1]], color = color[[i1]], stringsAsFactors = TRUE)
+                    tempo.check <- unique(data1[[i1]][ , c(categ[[i1]], "color")])
+                    if( ! (nrow(data1[[i1]]) == length(color[[i1]]) & nrow(tempo.check) == length(unique(data1[[i1]][ , categ[[i1]]])))){
+                        tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color")), " ARGUMENT HAS THE LENGTH OF ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), "\nBUT IS INCORRECTLY ASSOCIATED TO EACH CLASS OF THIS categ:\n", paste(unique(mapply(FUN = "paste", data1[[i1]][ ,categ[[i1]]], data1[[i1]][ ,"color"])), collapse = "\n"))
+                        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+                    }else{
+                        data1[[i1]][, categ[[i1]]] <- factor(data1[[i1]][, categ[[i1]]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
+                        color[[i1]] <- unique(color[[i1]][order(data1[[i1]][, categ[[i1]]])]) # Modif to have length(color) equal to the different number of categ (length(color) == length(levels(data1[[i1]][, categ[[i1]]])))
+                        warn.count <- warn.count + 1
+                        tempo.warn <- paste0("(", warn.count, ") FROM FUNCTION ", function.name, ": ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), " HAS THE LENGTH OF ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), " COLUMN VALUES\nCOLORS HAVE BEEN RESPECTIVELY ASSOCIATED TO EACH CLASS OF categ AS:\n", paste(levels(factor(data1[[i1]][, categ[[i1]]])), collapse = " "), "\n", paste(color[[i1]], collapse = " "))
+                        warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                    }
+                }else if(length(color[[i1]])== 1L){
+                    data1[[i1]][, categ[[i1]]] <- factor(data1[[i1]][, categ[[i1]]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
+                    color[[i1]] <- rep(color[[i1]], length(levels(data1[[i1]][, categ[[i1]]])))
+                    warn.count <- warn.count + 1
+                    tempo.warn <- paste0("(", warn.count,") IN ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ", COLOR HAS LENGTH 1 MEANING THAT ALL THE DIFFERENT CLASSES OF ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), "\n", paste(levels(factor(data1[[i1]][, categ[[i1]]])), collapse = " "), "\nWILL HAVE THE SAME COLOR\n", paste(color[[i1]], collapse = " "))
+                    warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                }else{
+                    tempo.cat <- paste0("ERROR IN ", function.name, ": ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), " MUST BE\n(1) LENGTH 1\nOR (2) THE LENGTH OF ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), " COLUMN VALUES\nOR (3) THE LENGTH OF THE CLASSES IN THIS COLUMN\nHERE IT IS COLOR LENGTH ", length(color[[i1]]), " VERSUS CATEG LENGTH ", length(data1[[i1]][, categ[[i1]]]), " AND CATEG CLASS LENGTH ", length(unique(data1[[i1]][, categ[[i1]]])), "\nPRESENCE OF NA IN THE COLUMN x, y OR categ OF data1 COULD BE THE PROBLEME")
+                    stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+                }
+            }
+        }
+        if((geom[[i1]] == "geom_hline" | geom[[i1]] == "geom_vline") & ! is.null(categ[[i1]])){ # add here after the color management, to deal with the different lines to plot inside any data[[i1]]
+            if(categ[[i1]] == "fake_categ"){
+                data1[[i1]][, "fake_categ"] <- factor(paste0("Line_", formatC(1:nrow(data1[[i2]]), width = nchar(nrow(data1[[i2]])), flag = "0")))
+            }
+        }
+        tempo <- fun_check(data = alpha[[i1]], data.name = ifelse(length(alpha)== 1L, "alpha", paste0("alpha NUMBER ", i1)), prop = TRUE, length = 1, fun.name = function.name)
+        if(tempo$problem == TRUE){
+            stop(paste0("\n\n================\n\n", tempo$text, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }
+    }
+    # end loop (checking inside list compartment)
+    if(length(data1) > 1){
+        if(length(unique(unlist(x)[ ! x == "fake_x"])) > 1){
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") THE x ARGUMENT DOES NOT CONTAIN IDENTICAL COLUMN NAMES:\n", paste(unlist(x), collapse = " "), "\nX-AXIS OVERLAYING DIFFERENT VARIABLES?")
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        }
+    }
+    if(length(data1) > 1){
+        if(length(unique(unlist(y)[ ! y == "fake_y"])) > 1){
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") THE y ARGUMENT DOES NOT CONTAIN IDENTICAL COLUMN NAMES:\n", paste(unlist(y), collapse = " "), "\nY-AXIS OVERLAYING DIFFERENT VARIABLES?")
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        }
+    }
+    if(sum(geom %in% "geom_point") > 3){
+        tempo.cat <- paste0("ERROR IN ", function.name, ": geom ARGUMENT CANNOT HAVE MORE THAN THREE \"geom_point\" ELEMENTS")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+    }else if(length(geom) - sum(geom %in% "geom_point") > 3){
+        tempo.cat <- paste0("ERROR IN ", function.name, ": geom ARGUMENT CANNOT HAVE MORE THAN THREE LINE ELEMENTS")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+    }
+    # x.lim management before transfo by x.log
+    if(x.log != "no" & ! is.null(x.lim)){
+        if(any(x.lim <= 0)){
+            tempo.cat <- paste0("ERROR IN ", function.name, "\nx.lim ARGUMENT CANNOT HAVE ZERO OR NEGATIVE VALUES WITH THE x.log ARGUMENT SET TO ", x.log, ":\n", paste(x.lim, collapse = " "))
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else if(any( ! is.finite(if(x.log == "log10"){log10(x.lim)}else{log2(x.lim)}))){
+            tempo.cat <- paste0("ERROR IN ", function.name, "\nx.lim ARGUMENT RETURNS INF/NA WITH THE x.log ARGUMENT SET TO ", x.log, "\nAS SCALE COMPUTATION IS ", ifelse(x.log == "log10", "log10", "log2"), ":\n", paste(if(x.log == "log10"){log10(x.lim)}else{log2(x.lim)}, collapse = " "))
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }
+    }
+    if(x.log != "no" & x.include.zero == TRUE){
+        warn.count <- warn.count + 1
+        tempo.warn <- paste0("(", warn.count,") x.log ARGUMENT SET TO ", x.log, " AND x.include.zero ARGUMENT SET TO TRUE -> x.include.zero ARGUMENT RESET TO FALSE BECAUSE 0 VALUE CANNOT BE REPRESENTED IN LOG SCALE")
+        warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        x.include.zero <- FALSE
+    }
+    # end x.lim management before transfo by x.log
+    # y.lim management before transfo by y.log
+    if(y.log != "no" & ! is.null(y.lim)){
+        if(any(y.lim <= 0)){
+            tempo.cat <- paste0("ERROR IN ", function.name, "\ny.lim ARGUMENT CANNOT HAVE ZERO OR NEGATIVE VALUES WITH THE y.log ARGUMENT SET TO ", y.log, ":\n", paste(y.lim, collapse = " "))
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else if(any( ! is.finite(if(y.log == "log10"){log10(y.lim)}else{log2(y.lim)}))){
+            tempo.cat <- paste0("ERROR IN ", function.name, "\ny.lim ARGUMENT RETURNS INF/NA WITH THE y.log ARGUMENT SET TO ", y.log, "\nAS SCALE COMPUTATION IS ", ifelse(y.log == "log10", "log10", "log2"), ":\n", paste(if(y.log == "log10"){log10(y.lim)}else{log2(y.lim)}, collapse = " "))
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }
+    }
+    if(y.log != "no" & y.include.zero == TRUE){
+        warn.count <- warn.count + 1
+        tempo.warn <- paste0("(", warn.count,") y.log ARGUMENT SET TO ", y.log, " AND y.include.zero ARGUMENT SET TO TRUE -> y.include.zero ARGUMENT RESET TO FALSE BECAUSE 0 VALUE CANNOT BE REPRESENTED IN LOG SCALE")
+        warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        y.include.zero <- FALSE
+    }
+    # end y.lim management before transfo by y.log
+    # end other checkings
+    # reserved word checking
+    #already done above
+    # end reserved word checking
+    # end second round of checking and data preparation
+    
+    
+    # package checking
+    fun_pack(req.package = c(
+        "gridExtra", 
+        "ggplot2", 
+        "lemon", 
+        "scales"
+    ), lib.path = lib.path)
+    # packages Cairo and grid tested by fun_gg_point_rast()
+    # end package checking
+    
+    
+    
+    
+    # main code
+    # axes management
+    if(is.null(x.lim)){
+        if(any(unlist(mapply(FUN = "[[", data1, x, SIMPLIFY = FALSE)) %in% c(Inf, -Inf))){
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") THE x COLUMN IN data1 CONTAINS -Inf OR Inf VALUES THAT WILL NOT BE CONSIDERED IN THE PLOT RANGE")
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        }
+        x.lim <- suppressWarnings(range(unlist(mapply(FUN = "[[", data1, x, SIMPLIFY = FALSE)), na.rm = TRUE, finite = TRUE)) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only. y.lim added here. If NULL, ok if y argument has values
+    }else if(x.log != "no"){
+        x.lim <- get(x.log)(x.lim) # no env = sys.nframe(), inherit = FALSE in get() because look for function in the classical scope
+    }
+    if(x.log != "no"){
+        if(any( ! is.finite(x.lim))){
+            tempo.cat <- paste0("ERROR IN ", function.name, "\nx.lim ARGUMENT CANNOT HAVE ZERO OR NEGATIVE VALUES WITH THE x.log ARGUMENT SET TO ", x.log, ":\n", paste(x.lim, collapse = " "), "\nPLEASE, CHECK DATA VALUES (PRESENCE OF ZERO OR INF VALUES)")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }
+    }
+    if(suppressWarnings(all(x.lim %in% c(Inf, -Inf)))){ # happen when x is only NULL
+        if(all(unlist(geom) %in% c("geom_vline", "geom_stick"))){
+            tempo.cat <- paste0("ERROR IN ", function.name, " NOT POSSIBLE TO DRAW geom_vline OR geom_stick KIND OF LINES ALONE IF x.lim ARGUMENT IS SET TO NULL, SINCE NO X-AXIS DEFINED (", ifelse(length(x)== 1L, "x", paste0("ELEMENT ", i1, " OF x")), " ARGUMENT MUST BE NULL FOR THESE KIND OF LINES)")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else{
+            tempo.cat <- paste0("ERROR IN ", function.name, " x.lim ARGUMENT MADE OF NA, -Inf OR Inf ONLY: ", paste(x.lim, collapse = " "))
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }
+    }
+    x.lim.order <- order(x.lim) # to deal with inverse axis
+    # print(x.lim.order)
+    x.lim <- sort(x.lim)
+    x.lim[1] <- x.lim[1] - abs(x.lim[2] - x.lim[1]) * ifelse(diff(x.lim.order) > 0, x.right.extra.margin, x.left.extra.margin) # diff(x.lim.order) > 0 means not inversed axis
+    x.lim[2] <- x.lim[2] + abs(x.lim[2] - x.lim[1]) * ifelse(diff(x.lim.order) > 0, x.left.extra.margin, x.right.extra.margin) # diff(x.lim.order) > 0 means not inversed axis
+    if(x.include.zero == TRUE){ # no need to check x.log != "no" because done before
+        x.lim <- range(c(x.lim, 0), na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
+    }
+    x.lim <- x.lim[x.lim.order]
+    if(any(is.na(x.lim))){
+        tempo.cat <- paste0("ERROR IN ", function.name, ": CODE INCONSISTENCY 3")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+    }
+    if(is.null(y.lim)){
+        if(any(unlist(mapply(FUN = "[[", data1, y, SIMPLIFY = FALSE)) %in% c(Inf, -Inf))){
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") THE y COLUMN IN data1 CONTAINS -Inf OR Inf VALUES THAT WILL NOT BE CONSIDERED IN THE PLOT RANGE")
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        }
+        y.lim <- suppressWarnings(range(unlist(mapply(FUN = "[[", data1, y, SIMPLIFY = FALSE)), na.rm = TRUE, finite = TRUE)) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only. y.lim added here. If NULL, ok if y argument has values
+    }else if(y.log != "no"){
+        y.lim <- get(y.log)(y.lim) # no env = sys.nframe(), inherit = FALSE in get() because look for function in the classical scope
+    }
+    if(y.log != "no"){
+        if(any( ! is.finite(y.lim))){
+            tempo.cat <- paste0("ERROR IN ", function.name, "\ny.lim ARGUMENT CANNOT HAVE ZERO OR NEGATIVE VALUES WITH THE y.log ARGUMENT SET TO ", y.log, ":\n", paste(y.lim, collapse = " "), "\nPLEASE, CHECK DATA VALUES (PRESENCE OF ZERO OR INF VALUES)")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }
+    }
+    if(suppressWarnings(all(y.lim %in% c(Inf, -Inf)))){ # happen when y is only NULL
+        if(all(unlist(geom) == "geom_vline")){
+            tempo.cat <- paste0("ERROR IN ", function.name, " NOT POSSIBLE TO DRAW geom_vline KIND OF LINES ALONE IF y.lim ARGUMENT IS SET TO NULL, SINCE NO Y-AXIS DEFINED (", ifelse(length(y)== 1L, "y", paste0("ELEMENT ", i1, " OF y")), " ARGUMENT MUST BE NULL FOR THESE KIND OF LINES)")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else{
+            tempo.cat <- paste0("ERROR IN ", function.name, " y.lim ARGUMENT MADE OF NA, -Inf OR Inf ONLY: ", paste(y.lim, collapse = " "))
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }
+    }
+    y.lim.order <- order(y.lim) # to deal with inverse axis
+    y.lim <- sort(y.lim)
+    y.lim[1] <- y.lim[1] - abs(y.lim[2] - y.lim[1]) * ifelse(diff(y.lim.order) > 0, y.bottom.extra.margin, y.top.extra.margin) # diff(y.lim.order) > 0 means not inversed axis
+    y.lim[2] <- y.lim[2] + abs(y.lim[2] - y.lim[1]) * ifelse(diff(y.lim.order) > 0, y.top.extra.margin, y.bottom.extra.margin) # diff(y.lim.order) > 0 means not inversed axis
+    if(y.include.zero == TRUE){ # no need to check y.log != "no" because done before
+        y.lim <- range(c(y.lim, 0), na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
+    }
+    y.lim <- y.lim[y.lim.order]
+    if(any(is.na(y.lim))){
+        tempo.cat <- paste0("ERROR IN ", function.name, ": CODE INCONSISTENCY 4")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+    }
+    # end axes management
+    
+    
+    
+    
+    # create a fake categ if NULL to deal with legend display
+    if(is.null(categ)){
+        categ <- vector("list", length(data1))
+        categ[] <- "fake_categ"
+        for(i2 in 1:length(data1)){
+            data1[[i2]] <- cbind(data1[[i2]], fake_categ = "", stringsAsFactors = TRUE)
+            if(geom[[i2]] == "geom_hline" | geom[[i2]] == "geom_vline"){
+                data1[[i2]][, "fake_categ"] <- factor(paste0("Line_", 1:nrow(data1[[i2]])))
+            }
+        }
+        warn.count <- warn.count + 1
+        tempo.warn <- paste0("(", warn.count,") NULL categ ARGUMENT -> FAKE \"fake_categ\" COLUMN ADDED TO EACH DATA FRAME OF data1, AND FILLED WITH \"\"")
+        warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+    }
+    # categ is not NULL anymore
+    if(is.null(categ.class.order)){
+        categ.class.order <- vector("list", length = length(data1))
+        tempo.categ.class.order <- NULL
+        for(i2 in 1:length(categ.class.order)){
+            categ.class.order[[i2]] <- levels(data1[[i2]][, categ[[i2]]])
+            names(categ.class.order)[i2] <- categ[[i2]]
+            tempo.categ.class.order <- c(tempo.categ.class.order, ifelse(i2 != 1, "\n", ""), categ.class.order[[i2]])
+        }
+        if(any(unlist(legend.disp))){
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") THE categ.class.order SETTING IS NULL. ALPHABETICAL ORDER WILL BE APPLIED FOR CLASS ORDERING:\n", paste(tempo.categ.class.order, collapse = " "))
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        }
+    }
+    # end create a fake categ if NULL to deal with legend display
+    # categ.class.order is not NULL anymore
+    
+    
+    # vector of color with length as in levels(categ) of data1
+    if(is.null(color)){
+        color <- vector("list", length(data1))
+        length.categ.list <- lapply(lapply(mapply(FUN = "[[", data1, categ, SIMPLIFY = FALSE), FUN = unique), FUN = function(x){length(x[ ! is.na(x)])})
+        length.categ.list[sapply(categ, FUN = "==", "fake_categ")] <- 1 # when is.null(color), a single color for all the dots or lines of data[[i1]] that contain "fake_categ" category
+        total.categ.length <- sum(unlist(length.categ.list), na.rm = TRUE)
+        tempo.color <- fun_gg_palette(total.categ.length)
+        tempo.count <- 0
+        for(i2 in 1:length(data1)){
+            color[[i2]] <- tempo.color[(1:length.categ.list[[i2]]) + tempo.count]
+            tempo.count <- tempo.count + length.categ.list[[i2]]
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") NULL color ARGUMENT -> COLORS RESPECTIVELY ATTRIBUTED TO EACH CLASS OF ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i2, " OF categ ARGUMENT")), " (", categ[[i2]], ") IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i2, " OF data1 ARGUMENT")), ":\n", paste(color[[i2]], collapse = " "), "\n", paste(if(all(levels(data1[[i2]][, categ[[i2]]]) == "")){'\"\"'}else{levels(data1[[i2]][, categ[[i2]]])}, collapse = " "))
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        }
+    }
+    # end vector of color with length as in levels(categ) of data1
+    # color is not NULL anymore
+    
+    
+    
+    
+    
+    # last check
+    for(i1 in 1:length(data1)){
+        if(categ[[i1]] != "fake_categ" & length(color[[i1]]) != length(unique(data1[[i1]][, categ[[i1]]]))){
+            tempo.cat <- paste0("ERROR IN ", function.name, " LAST CHECK: ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), " MUST HAVE THE LENGTH OF LEVELS OF ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), "\nHERE IT IS COLOR LENGTH ", length(color[[i1]]), " VERSUS CATEG LEVELS LENGTH ", length(unique(data1[[i1]][, categ[[i1]]])), "\nREMINDER: A SINGLE COLOR PER CLASS OF CATEG AND A SINGLE CLASS OF CATEG PER COLOR MUST BE RESPECTED")
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }else if(categ[[i1]] == "fake_categ" & length(color[[i1]]) != 1){
+            tempo.cat <- paste0("ERROR IN ", function.name, " LAST CHECK: ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), " MUST HAVE LENGTH 1 WHEN ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IS NULL\nHERE IT IS COLOR LENGTH ", length(color[[i1]]))
+            stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+        }
+    }
+    # end last check
+    
+    
+    
+    
+    
+    # conversion of geom_hline and geom_vline
+    for(i1 in 1:length(data1)){
+        if(geom[[i1]] == "geom_hline" | geom[[i1]] == "geom_vline"){
+            final.data.frame <- data.frame()
+            for(i3 in 1:nrow(data1[[i1]])){
+                tempo.data.frame <- rbind(data1[[i1]][i3, ], data1[[i1]][i3, ], stringsAsFactors = TRUE)
+                if(geom[[i1]] == "geom_hline"){
+                    tempo.data.frame[, x[[i1]]] <- x.lim
+                }else if(geom[[i1]] == "geom_vline"){
+                    tempo.data.frame[, y[[i1]]] <- y.lim
+                }else{
+                    tempo.cat <- paste0("ERROR IN ", function.name, ": CODE INCONSISTENCY 5")
+                    stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+                }
+                # 3 lines below inactivated because I put that above
+                # if(is.null(categ[[i1]])){
+                # data1[, "fake_categ"] <- paste0("Line_", i3)
+                # }
+                final.data.frame <- rbind(final.data.frame, tempo.data.frame, stringsAsFactors = TRUE)
+            }
+            data1[[i1]] <- final.data.frame
+            geom[[i1]] <- "geom_line"
+            if(length(color[[i1]])== 1L){
+                color[[i1]] <- rep(color[[i1]], length(unique(data1[[i1]][ , categ[[i1]]])))
+            }else if(length(color[[i1]]) != length(unique(data1[[i1]][ , categ[[i1]]]))){
+                tempo.cat <- paste0("ERROR IN ", function.name, " geom_hline AND geom_vline CONVERSION TO FIT THE XLIM AND YLIM LIMITS OF THE DATA: ", ifelse(length(color)== 1L, "color", paste0("ELEMENT NUMBER ", i1, " OF color ARGUMENT")), " MUST HAVE THE LENGTH OF LEVELS OF ", ifelse(length(categ)== 1L, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), "\nHERE IT IS COLOR LENGTH ", length(color[[i1]]), " VERSUS CATEG LEVELS LENGTH ", length(unique(data1[[i1]][, categ[[i1]]])))
+                stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+            }
+        }
+    }
+    # end conversion of geom_hline and geom_vline
+    
+    
+    
+    
+    # kind of geom_point (vectorial or raster)
+    scatter.kind <- vector("list", length = length(data1)) # list of same length as data1, that will be used to use either ggplot2::geom_point() (vectorial dot layer) or fun_gg_point_rast() (raster dot layer)
+    fix.ratio <- FALSE
+    if(is.null(raster.threshold)){
+        if(raster == TRUE){
+            scatter.kind[] <- "fun_gg_point_rast" # not important to fill everything: will be only used when geom == "geom_point"
+            fix.ratio <- TRUE
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") RASTER PLOT GENERATED -> ASPECT RATIO OF THE PLOT REGION SET BY THE raster.ratio ARGUMENT (", fun_round(raster.ratio, 2), ") TO AVOID A BUG OF ELLIPSOID DOT DRAWING")
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        }else{
+            scatter.kind[] <- "ggplot2::geom_point"
+        }
+    }else{
+        for(i2 in 1:length(data1)){
+            if(geom[[i2]] == "geom_point"){
+                if(nrow(data1[[i2]]) <= raster.threshold){
+                    scatter.kind[[i2]] <- "ggplot2::geom_point"
+                }else{
+                    scatter.kind[[i2]] <- "fun_gg_point_rast"
+                    fix.ratio <- TRUE
+                    warn.count <- warn.count + 1
+                    tempo.warn <- paste0("(", warn.count,") ", ifelse(length(data1)== 1L, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i2, " OF data1 ARGUMENT")), " LAYER AS RASTER (NOT VECTORIAL)")
+                    warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                }
+            }
+        }
+        if(any(unlist(scatter.kind) == "fun_gg_point_rast")){
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") RASTER PLOT GENERATED -> ASPECT RATIO OF THE PLOT REGION SET BY THE raster.ratio ARGUMENT (", fun_round(raster.ratio, 2), ") TO AVOID A BUG OF ELLIPSOID DOT DRAWING")
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        }
+    }
+    # end kind of geom_point (vectorial or raster)
+    
+    
+    
+    
+    # no need loop part
+    coord.names <- NULL
+    tempo.gg.name <- "gg.indiv.plot."
+    tempo.gg.count <- 0
+    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = paste0("ggplot2::ggplot()", if(is.null(add)){""}else{add})))) # add added here to have the facets
+    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::xlab(if(is.null(x.lab)){x[[1]]}else{x.lab}))
+    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ylab(if(is.null(y.lab)){y[[1]]}else{y.lab}))
+    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ggtitle(title))
+    # text angle management
+    x.tempo.just <- fun_gg_just(angle = x.text.angle, pos = "bottom", kind = "axis")
+    y.tempo.just <- fun_gg_just(angle = y.text.angle, pos = "left", kind = "axis")
+    # end text angle management
+    add.check <- TRUE
+    if( ! is.null(add)){ # if add is NULL, then = 0
+        if(grepl(pattern = "ggplot2::theme", add) == TRUE){
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") \"ggplot2::theme\" STRING DETECTED IN THE add ARGUMENT\n-> INTERNAL GGPLOT2 THEME FUNCTIONS theme() AND theme_classic() HAVE BEEN INACTIVATED, TO BE USED BY THE USER\n-> article ARGUMENT WILL BE IGNORED\nIT IS RECOMMENDED TO USE \"+ theme(aspect.ratio = raster.ratio)\" IF RASTER MODE IS ACTIVATED")
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+            add.check <- FALSE
+        }
+    }
+    if(add.check == TRUE & article == TRUE){
+        # WARNING: not possible to add several times theme(). NO message but the last one overwrites the others
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::theme_classic(base_size = text.size))
+        if(grid == TRUE){
+            assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
+                text = ggplot2::element_text(size = text.size), 
+                plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
+                legend.key = ggplot2::element_rect(color = "white", size = 1.5), # size of the frame of the legend
+                line = ggplot2::element_line(size = 0.5), 
+                axis.line.y.left = ggplot2::element_line(colour = "black"), # draw lines for the y axis
+                axis.line.x.bottom = ggplot2::element_line(colour = "black"), # draw lines for the x axis
+                panel.grid.major.x = ggplot2::element_line(colour = "grey85", size = 0.75), 
+                panel.grid.minor.x = ggplot2::element_line(colour = "grey90", size = 0.25), 
+                panel.grid.major.y = ggplot2::element_line(colour = "grey85", size = 0.75), 
+                panel.grid.minor.y = ggplot2::element_line(colour = "grey90", size = 0.25), 
+                axis.text.x = ggplot2::element_text(angle = x.tempo.just$angle, hjust = x.tempo.just$hjust, vjust = x.tempo.just$vjust),
+                axis.text.y = ggplot2::element_text(angle = y.tempo.just$angle, hjust = y.tempo.just$hjust, vjust = y.tempo.just$vjust), 
+                aspect.ratio = if(fix.ratio == TRUE){raster.ratio}else{NULL} # for raster
+            ))
+        }else{
+            assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
+                text = ggplot2::element_text(size = text.size), 
+                plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
+                line = ggplot2::element_line(size = 0.5), 
+                legend.key = ggplot2::element_rect(color = "white", size = 1.5), # size of the frame of the legend
+                axis.line.y.left = ggplot2::element_line(colour = "black"), 
+                axis.line.x.bottom = ggplot2::element_line(colour = "black"), 
+                axis.text.x = ggplot2::element_text(angle = x.tempo.just$angle, hjust = x.tempo.just$hjust, vjust = x.tempo.just$vjust),
+                axis.text.y = ggplot2::element_text(angle = y.tempo.just$angle, hjust = y.tempo.just$hjust, vjust = y.tempo.just$vjust), 
+                aspect.ratio = if(fix.ratio == TRUE){raster.ratio}else{NULL} # for raster
+            ))
+        }
+    }else if(add.check == TRUE & article == FALSE){
+        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
+            text = ggplot2::element_text(size = text.size), 
+            plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
+            line = ggplot2::element_line(size = 0.5), 
+            legend.key = ggplot2::element_rect(color = "white", size = 1.5), # size of the frame of the legend
+            panel.background = ggplot2::element_rect(fill = "grey95"), 
+            axis.line.y.left = ggplot2::element_line(colour = "black"), 
+            axis.line.x.bottom = ggplot2::element_line(colour = "black"), 
+            panel.grid.major.x = ggplot2::element_line(colour = "grey85", size = 0.75), 
+            panel.grid.minor.x = ggplot2::element_line(colour = "grey90", size = 0.25), 
+            panel.grid.major.y = ggplot2::element_line(colour = "grey85", size = 0.75), 
+            panel.grid.minor.y = ggplot2::element_line(colour = "grey90", size = 0.25), 
+            strip.background = ggplot2::element_rect(fill = "white", colour = "black"), 
+            axis.text.x = ggplot2::element_text(angle = x.tempo.just$angle, hjust = x.tempo.just$hjust, vjust = x.tempo.just$vjust),
+            axis.text.y = ggplot2::element_text(angle = y.tempo.just$angle, hjust = y.tempo.just$hjust, vjust = y.tempo.just$vjust), 
+            aspect.ratio = if(fix.ratio == TRUE){raster.ratio}else{NULL} # for raster
+            # do not work -> legend.position = "none" # to remove the legend completely: https://www.datanovia.com/en/blog/how-to-remove-legend-from-a-ggplot/
+        ))
+    }
+    # end no need loop part
+    
+    
+    # loop part
+    point.count <- 0
+    line.count <- 0
+    lg.order <- vector(mode = "list", length = 6) # order of the legend
+    lg.order <- lapply(lg.order, as.numeric) # order of the legend
+    lg.color <- vector(mode = "list", length = 6) # color of the legend
+    lg.dot.shape <- vector(mode = "list", length = 6) # etc.
+    lg.dot.size <- vector(mode = "list", length = 6) # etc.
+    lg.dot.size <- lapply(lg.dot.size, as.numeric) # etc.
+    lg.dot.border.size <- vector(mode = "list", length = 6) # etc.
+    lg.dot.border.size <- lapply(lg.dot.border.size, as.numeric) # etc.
+    lg.dot.border.color <- vector(mode = "list", length = 6) # etc.
+    lg.line.size <- vector(mode = "list", length = 6) # etc.
+    lg.line.size <- lapply(lg.line.size, as.numeric) # etc.
+    lg.line.type <- vector(mode = "list", length = 6) # etc.
+    lg.alpha <- vector(mode = "list", length = 6) # etc.
+    lg.alpha <- lapply(lg.alpha, as.numeric) # etc.
+    for(i1 in 1:length(data1)){
+        if(geom[[i1]] == "geom_point"){
+            point.count <- point.count + 1
+            if(point.count== 1L){
+                fin.lg.disp[[1]] <- legend.disp[[point.count + line.count]]
+                lg.order[[1]] <- point.count + line.count
+                lg.color[[1]] <- color[[i1]] # if color == NULL -> NULL
+                lg.dot.shape[[1]] <- dot.shape[[i1]]
+                lg.dot.size[[1]] <- dot.size[[i1]]
+                lg.dot.border.size[[1]] <- dot.border.size[[i1]]
+                lg.dot.border.color[[1]] <- dot.border.color[[i1]] # if dot.border.color == NULL -> NULL
+                if(plot == TRUE & fin.lg.disp[[1]] == TRUE & dot.shape[[1]] %in% 0:14 & ((length(dev.list()) > 0 & names(dev.cur()) == "windows") | (length(dev.list())== 0L & Sys.info()["sysname"] == "Windows"))){ # if any Graph device already open and this device is "windows", or if no Graph device opened yet and we are on windows system -> prevention of alpha legend bug on windows using value 1
+                    warn.count <- warn.count + 1
+                    tempo.warn <- paste0("(", warn.count,") GRAPHIC DEVICE USED ON A WINDOWS SYSTEM ->\nTRANSPARENCY OF THE DOTS (DOT LAYER NUMBER ", point.count, ") IS INACTIVATED IN THE LEGEND TO PREVENT A WINDOWS DEPENDENT BUG (SEE https://github.com/tidyverse/ggplot2/issues/2452)\nTO OVERCOME THIS ON WINDOWS, USE ANOTHER DEVICE (pdf() FOR INSTANCE)")
+                    warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                    lg.alpha[[1]] <- 1 # to avoid a bug on windows: if alpha argument is different from 1 for lines (transparency), then lines are not correctly displayed in the legend when using the R GUI (bug https://github.com/tidyverse/ggplot2/issues/2452). No bug when using a pdf
+                }else{
+                    lg.alpha[[1]] <- alpha[[i1]]
+                }
+                class.categ <- levels(factor(data1[[i1]][, categ[[i1]]]))
+                for(i5 in 1:length(color[[i1]])){ # or length(class.categ). It is the same because already checked that lengths are the same
+                    tempo.data.frame <- data1[[i1]][data1[[i1]][, categ[[i1]]] == class.categ[i5], ]
+                    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = scatter.kind[[i1]]))(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], fill = categ[[i1]]), shape = dot.shape[[i1]], size = dot.size[[i1]], stroke = dot.border.size[[i1]], color = if(dot.shape[[i1]] %in% 21:24 & ! is.null(dot.border.color)){dot.border.color[[i1]]}else{color[[i1]][i5]}, alpha = alpha[[i1]], show.legend = if(i5== 1L){TRUE}else{FALSE})) # WARNING: a single color allowed for color argument outside aesthetic, but here a single color for border --> loop could be inactivated but kept for commodity # legend.show option do not remove the legend, only the aesthetic of the legend (dot, line, etc.). Used here to avoid multiple layers of legend which corrupt transparency
+                    coord.names <- c(coord.names, paste0(geom[[i1]], ".", class.categ[i5]))
+                }
+                assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_fill_manual(name = if(is.null(legend.name)){NULL}else{legend.name[[i1]]}, values = as.character(color[[i1]]), breaks = class.categ)) # values are the values of fill, breaks reorder the classes according to class.categ in the legend, order argument of guide_legend determines the order of the different aesthetics in the legend (not order of classes). See guide_legend settings of scale_..._manual below
+            }
+            if(point.count== 2L){
+                fin.lg.disp[[2]] <- legend.disp[[point.count + line.count]]
+                lg.order[[2]] <- point.count + line.count
+                lg.color[[2]] <- color[[i1]] # if color == NULL -> NULL
+                lg.dot.shape[[2]] <- dot.shape[[i1]]
+                lg.dot.size[[2]] <- dot.size[[i1]]
+                lg.dot.border.size[[2]] <- dot.border.size[[i1]]
+                lg.dot.border.color[[2]] <- dot.border.color[[i1]] # if dot.border.color == NULL -> NULL
+                if(plot == TRUE & fin.lg.disp[[2]] == TRUE & dot.shape[[2]] %in% 0:14 & ((length(dev.list()) > 0 & names(dev.cur()) == "windows") | (length(dev.list())== 0L & Sys.info()["sysname"] == "Windows"))){ # if any Graph device already open and this device is "windows", or if no Graph device opened yet and we are on windows system -> prevention of alpha legend bug on windows using value 1
+                    warn.count <- warn.count + 1
+                    tempo.warn <- paste0("(", warn.count,") GRAPHIC DEVICE USED ON A WINDOWS SYSTEM ->\nTRANSPARENCY OF THE DOTS (DOT LAYER NUMBER ", point.count, ") IS INACTIVATED IN THE LEGEND TO PREVENT A WINDOWS DEPENDENT BUG (SEE https://github.com/tidyverse/ggplot2/issues/2452)\nTO OVERCOME THIS ON WINDOWS, USE ANOTHER DEVICE (pdf() FOR INSTANCE)")
+                    warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                    lg.alpha[[2]] <- 1 # to avoid a bug on windows: if alpha argument is different from 1 for lines (transparency), then lines are not correctly displayed in the legend when using the R GUI (bug https://github.com/tidyverse/ggplot2/issues/2452). No bug when using a pdf
+                }else{
+                    lg.alpha[[2]] <- alpha[[i1]]
+                }
+                class.categ <- levels(factor(data1[[i1]][, categ[[i1]]]))
+                for(i5 in 1:length(color[[i1]])){ # or length(class.categ). It is the same because already checked that lengths are the same
+                    tempo.data.frame <- data1[[i1]][data1[[i1]][, categ[[i1]]] == class.categ[i5], ]
+                    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = scatter.kind[[i1]]))(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], shape = categ[[i1]]), size = dot.size[[i1]], stroke = dot.border.size[[i1]], fill = color[[i1]][i5], color = if(dot.shape[[i1]] %in% 21:24 & ! is.null(dot.border.color)){dot.border.color[[i1]]}else{color[[i1]][i5]}, alpha = alpha[[i1]], show.legend = FALSE)) # WARNING: a single color allowed for fill argument outside aesthetic, hence the loop # legend.show option do not remove the legend, only the aesthetic of the legend (dot, line, etc.). Used here to avoid multiple layers of legend which corrupt transparency
+                    coord.names <- c(coord.names, paste0(geom[[i1]], ".", class.categ[i5]))
+                }
+                assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_shape_manual(name = if(is.null(legend.name)){NULL}else{legend.name[[i1]]}, values = rep(dot.shape[[i1]], length(color[[i1]])), breaks = class.categ)) # values are the values of shape, breaks reorder the classes according to class.categ in the legend. See guide_legend settings of scale_..._manual below
+                
+            }
+            if(point.count== 3L){
+                fin.lg.disp[[3]] <- legend.disp[[point.count + line.count]]
+                lg.order[[3]] <- point.count + line.count
+                lg.color[[3]] <- color[[i1]] # if color == NULL -> NULL
+                lg.dot.shape[[3]] <- dot.shape[[i1]]
+                lg.dot.size[[3]] <- dot.size[[i1]]
+                lg.dot.border.size[[3]] <- dot.border.size[[i1]]
+                lg.dot.border.color[[3]] <- dot.border.color[[i1]] # if dot.border.color == NULL -> NULL
+                if(plot == TRUE & fin.lg.disp[[3]] == TRUE & dot.shape[[3]] %in% 0:14 & ((length(dev.list()) > 0 & names(dev.cur()) == "windows") | (length(dev.list())== 0L & Sys.info()["sysname"] == "Windows"))){ # if any Graph device already open and this device is "windows", or if no Graph device opened yet and we are on windows system -> prevention of alpha legend bug on windows using value 1
+                    warn.count <- warn.count + 1
+                    tempo.warn <- paste0("(", warn.count,") GRAPHIC DEVICE USED ON A WINDOWS SYSTEM ->\nTRANSPARENCY OF THE DOTS (DOT LAYER NUMBER ", point.count, ") IS INACTIVATED IN THE LEGEND TO PREVENT A WINDOWS DEPENDENT BUG (SEE https://github.com/tidyverse/ggplot2/issues/2452)\nTO OVERCOME THIS ON WINDOWS, USE ANOTHER DEVICE (pdf() FOR INSTANCE)")
+                    warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                    lg.alpha[[3]] <- 1 # to avoid a bug on windows: if alpha argument is different from 1 for lines (transparency), then lines are not correctly displayed in the legend when using the R GUI (bug https://github.com/tidyverse/ggplot2/issues/2452). No bug when using a pdf
+                }else{
+                    lg.alpha[[3]] <- alpha[[i1]]
+                }
+                class.categ <- levels(factor(data1[[i1]][, categ[[i1]]]))
+                for(i5 in 1:length(color[[i1]])){ # or length(class.categ). It is the same because already checked that lengths are the same
+                    tempo.data.frame <- data1[[i1]][data1[[i1]][, categ[[i1]]] == class.categ[i5], ]
+                    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = scatter.kind[[i1]]))(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], stroke = categ[[i1]]), shape = dot.shape[[i1]], size = dot.size[[i1]], fill = color[[i1]][i5], stroke = dot.border.size[[i1]], color = if(dot.shape[[i1]] %in% 21:24 & ! is.null(dot.border.color)){dot.border.color[[i1]]}else{color[[i1]][i5]}, alpha = alpha[[i1]], show.legend = FALSE)) # WARNING: a single color allowed for color argument outside aesthetic, hence the loop # legend.show option do not remove the legend, only the aesthetic of the legend (dot, line, etc.). Used here to avoid multiple layers of legend which corrupt transparency
+                    coord.names <- c(coord.names, paste0(geom[[i1]], ".", class.categ[i5]))
+                }
+                assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "stroke", name = if(is.null(legend.name)){NULL}else{legend.name[[i1]]}, values = rep(dot.border.size[[i1]], length(color[[i1]])), breaks = class.categ)) # values are the values of stroke, breaks reorder the classes according to class.categ in the legend. See guide_legend settings of scale_..._manual below
+                
+            }
+        }else{
+            line.count <- line.count + 1
+            if(line.count== 1L){
+                fin.lg.disp[[4]] <- legend.disp[[point.count + line.count]]
+                lg.order[[4]] <- point.count + line.count
+                lg.color[[4]] <- color[[i1]] # if color == NULL -> NULL
+                lg.line.size[[4]] <- line.size[[i1]]
+                lg.line.type[[4]] <- line.type[[i1]]
+                if(plot == TRUE & fin.lg.disp[[4]] == TRUE & ((length(dev.list()) > 0 & names(dev.cur()) == "windows") | (length(dev.list())== 0L & Sys.info()["sysname"] == "Windows"))){ # if any Graph device already open and this device is "windows", or if no Graph device opened yet and we are on windows system -> prevention of alpha legend bug on windows using value 1
+                    warn.count <- warn.count + 1
+                    tempo.warn <- paste0("(", warn.count,") GRAPHIC DEVICE USED ON A WINDOWS SYSTEM ->\nTRANSPARENCY OF THE LINES (LINE LAYER NUMBER ", line.count, ") IS INACTIVATED IN THE LEGEND TO PREVENT A WINDOWS DEPENDENT BUG (SEE https://github.com/tidyverse/ggplot2/issues/2452)\nTO OVERCOME THIS ON WINDOWS, USE ANOTHER DEVICE (pdf() FOR INSTANCE)")
+                    warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                    lg.alpha[[4]] <- 1 # to avoid a bug on windows: if alpha argument is different from 1 for lines (transparency), then lines are not correctly displayed in the legend when using the R GUI (bug https://github.com/tidyverse/ggplot2/issues/2452). No bug when using a pdf
+                }else{
+                    lg.alpha[[4]] <- alpha[[i1]]
+                }
+                class.categ <- levels(factor(data1[[i1]][, categ[[i1]]]))
+                for(i5 in 1:length(color[[i1]])){ # or length(class.categ). It is the same because already checked that lengths are the same
+                    tempo.data.frame <- data1[[i1]][data1[[i1]][, categ[[i1]]] == class.categ[i5], ]
+                    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = paste0("ggplot2::", # no CR here te0("ggpl
+                                                                                                                 ifelse(geom[[i1]] == 'geom_stick', 'geom_segment', geom[[i1]]), # geom_segment because geom_stick converted to geom_segment for plotting
+                                                                                                                 "(data = tempo.data.frame, mapping = ggplot2::aes(x = ", 
+                                                                                                                 x[[i1]], 
+                                                                                                                 ifelse(geom[[i1]] == 'geom_stick', ", yend = ", ", y = "), 
+                                                                                                                 y[[i1]], 
+                                                                                                                 if(geom[[i1]] == 'geom_stick'){paste0(', xend = ', x[[i1]], ', y = ', ifelse(is.null(geom.stick.base), y.lim[1], geom.stick.base[[i1]]))}, 
+                                                                                                                 ", linetype = ", 
+                                                                                                                 categ[[i1]], 
+                                                                                                                 "), color = \"", 
+                                                                                                                 color[[i1]][i5], 
+                                                                                                                 "\", size = ", 
+                                                                                                                 line.size[[i1]], 
+                                                                                                                 ifelse(geom[[i1]] == 'geom_path', ', lineend = \"round\"', ''), 
+                                                                                                                 ifelse(geom[[i1]] == 'geom_step', paste0(', direction = \"', geom.step.dir[[i1]], '\"'), ''), 
+                                                                                                                 ", alpha = ", 
+                                                                                                                 alpha[[i1]], 
+                                                                                                                 ", show.legend = ", 
+                                                                                                                 ifelse(i5== 1L, TRUE, FALSE), 
+                                                                                                                 ")"
+                    )))) # WARNING: a single color allowed for color argument outside aesthetic, hence the loop # legend.show option do not remove the legend, only the aesthetic of the legend (dot, line, etc.). Used here to avoid multiple layers of legend which corrupt transparency
+                    coord.names <- c(coord.names, paste0(geom[[i1]], ".", class.categ[i5]))
+                }
+                assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "linetype", name = if(is.null(legend.name)){NULL}else{legend.name[[i1]]}, values = rep(line.type[[i1]], length(color[[i1]])), breaks = class.categ)) # values are the values of linetype. 1 means solid. Regarding the alpha bug, I have tried different things without success: alpha in guide alone, in geom alone, in both, with different values, breaks reorder the classes according to class.categ in the legend
+            }
+            if(line.count== 2L){
+                fin.lg.disp[[5]] <- legend.disp[[point.count + line.count]]
+                lg.order[[5]] <- point.count + line.count
+                lg.color[[5]] <- color[[i1]] # if color == NULL -> NULL
+                lg.line.size[[5]] <- line.size[[i1]]
+                lg.line.type[[5]] <- line.type[[i1]]
+                if(plot == TRUE & fin.lg.disp[[5]] == TRUE & ((length(dev.list()) > 0 & names(dev.cur()) == "windows") | (length(dev.list())== 0L & Sys.info()["sysname"] == "Windows"))){ # if any Graph device already open and this device is "windows", or if no Graph device opened yet and we are on windows system -> prevention of alpha legend bug on windows using value 1
+                    warn.count <- warn.count + 1
+                    tempo.warn <- paste0("(", warn.count,") GRAPHIC DEVICE USED ON A WINDOWS SYSTEM ->\nTRANSPARENCY OF THE LINES (LINE LAYER NUMBER ", line.count, ") IS INACTIVATED IN THE LEGEND TO PREVENT A WINDOWS DEPENDENT BUG (SEE https://github.com/tidyverse/ggplot2/issues/2452)\nTO OVERCOME THIS ON WINDOWS, USE ANOTHER DEVICE (pdf() FOR INSTANCE)")
+                    warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                    lg.alpha[[5]] <- 1 # to avoid a bug on windows: if alpha argument is different from 1 for lines (transparency), then lines are not correctly displayed in the legend when using the R GUI (bug https://github.com/tidyverse/ggplot2/issues/2452). No bug when using a pdf
+                }else{
+                    lg.alpha[[5]] <- alpha[[i1]]
+                }
+                class.categ <- levels(factor(data1[[i1]][, categ[[i1]]]))
+                for(i5 in 1:length(color[[i1]])){ # or length(class.categ). It is the same because already checked that lengths are the same
+                    tempo.data.frame <- data1[[i1]][data1[[i1]][, categ[[i1]]] == class.categ[i5], ]
+                    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = paste0("ggplot2::", # no CR here te0("ggpl
+                                                                                                                 ifelse(geom[[i1]] == 'geom_stick', 'geom_segment', geom[[i1]]), # geom_segment because geom_stick converted to geom_segment for plotting
+                                                                                                                 "(data = tempo.data.frame, mapping = ggplot2::aes(x = ", 
+                                                                                                                 x[[i1]], 
+                                                                                                                 ifelse(geom[[i1]] == 'geom_stick', ", yend = ", ", y = "), 
+                                                                                                                 y[[i1]], 
+                                                                                                                 if(geom[[i1]] == 'geom_stick'){paste0(', xend = ', x[[i1]], ', y = ', ifelse(is.null(geom.stick.base), y.lim[1], geom.stick.base[[i1]]))}, 
+                                                                                                                 ", alpha = ", 
+                                                                                                                 categ[[i1]], 
+                                                                                                                 "), color = \"", 
+                                                                                                                 color[[i1]][i5], 
+                                                                                                                 "\", size = ", 
+                                                                                                                 line.size[[i1]], 
+                                                                                                                 ", linetype = ", 
+                                                                                                                 ifelse(is.numeric(line.type[[i1]]), "", "\""), 
+                                                                                                                 line.type[[i1]], 
+                                                                                                                 ifelse(is.numeric(line.type[[i1]]), "", "\""), 
+                                                                                                                 ifelse(geom[[i1]] == 'geom_path', ', lineend = \"round\"', ''), 
+                                                                                                                 ifelse(geom[[i1]] == 'geom_step', paste0(', direction = \"', geom.step.dir[[i1]], '\"'), ''), 
+                                                                                                                 ", show.legend = FALSE)"
+                    )))) # WARNING: a single color allowed for color argument outside aesthetic, hence the loop # legend.show option do not remove the legend, only the aesthetic of the legend (dot, line, etc.). Used here to avoid multiple layers of legend which corrupt transparency
+                    coord.names <- c(coord.names, paste0(geom[[i1]], ".", class.categ[i5]))
+                }
+                assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "alpha", name = if(is.null(legend.name)){NULL}else{legend.name[[i1]]}, values = rep(alpha[[i1]], length(color[[i1]])), breaks = class.categ)) # values are the values of linetype. 1 means solid. Regarding the alpha bug, I have tried different things without success: alpha in guide alone, in geom alone, in both, with different values, breaks reorder the classes according to class.categ in the legend
+            }
+            if(line.count== 3L){
+                fin.lg.disp[[6]] <- legend.disp[[point.count + line.count]]
+                lg.order[[6]] <- point.count + line.count
+                lg.color[[6]] <- color[[i1]] # if color == NULL -> NULL
+                lg.line.size[[6]] <- line.size[[i1]]
+                lg.line.type[[6]] <- line.type[[i1]]
+                if(plot == TRUE & fin.lg.disp[[6]] == TRUE & ((length(dev.list()) > 0 & names(dev.cur()) == "windows") | (length(dev.list())== 0L & Sys.info()["sysname"] == "Windows"))){ # if any Graph device already open and this device is "windows", or if no Graph device opened yet and we are on windows system -> prevention of alpha legend bug on windows using value 1
+                    warn.count <- warn.count + 1
+                    tempo.warn <- paste0("(", warn.count,") GRAPHIC DEVICE USED ON A WINDOWS SYSTEM ->\nTRANSPARENCY OF THE LINES (LINE LAYER NUMBER ", line.count, ") IS INACTIVATED IN THE LEGEND TO PREVENT A WINDOWS DEPENDENT BUG (SEE https://github.com/tidyverse/ggplot2/issues/2452)\nTO OVERCOME THIS ON WINDOWS, USE ANOTHER DEVICE (pdf() FOR INSTANCE)")
+                    warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+                    lg.alpha[[6]] <- 1 # to avoid a bug on windows: if alpha argument is different from 1 for lines (transparency), then lines are not correctly displayed in the legend when using the R GUI (bug https://github.com/tidyverse/ggplot2/issues/2452). No bug when using a pdf
+                }else{
+                    lg.alpha[[6]] <- alpha[[i1]]
+                }
+                class.categ <- levels(factor(data1[[i1]][, categ[[i1]]]))
+                for(i5 in 1:length(color[[i1]])){ # or length(class.categ). It is the same because already checked that lengths are the same
+                    tempo.data.frame <- data1[[i1]][data1[[i1]][, categ[[i1]]] == class.categ[i5], ]
+                    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = paste0("ggplot2::", # no CR here te0("ggpl
+                                                                                                                 ifelse(geom[[i1]] == 'geom_stick', 'geom_segment', geom[[i1]]), # geom_segment because geom_stick converted to geom_segment for plotting
+                                                                                                                 "(data = tempo.data.frame, mapping = ggplot2::aes(x = ", 
+                                                                                                                 x[[i1]], 
+                                                                                                                 ifelse(geom[[i1]] == 'geom_stick', ", yend = ", ", y = "), 
+                                                                                                                 y[[i1]], 
+                                                                                                                 if(geom[[i1]] == 'geom_stick'){paste0(', xend = ', x[[i1]], ', y = ', ifelse(is.null(geom.stick.base), y.lim[1], geom.stick.base[[i1]]))}, 
+                                                                                                                 ", size = ", 
+                                                                                                                 categ[[i1]], 
+                                                                                                                 "), color = \"", 
+                                                                                                                 color[[i1]][i5], 
+                                                                                                                 "\", linetype = ", 
+                                                                                                                 ifelse(is.numeric(line.type[[i1]]), "", "\""), 
+                                                                                                                 line.type[[i1]], 
+                                                                                                                 ifelse(is.numeric(line.type[[i1]]), "", "\""), 
+                                                                                                                 ifelse(geom[[i1]] == 'geom_path', ', lineend = \"round\"', ''), 
+                                                                                                                 ifelse(geom[[i1]] == 'geom_step', paste0(', direction = \"', geom.step.dir[[i1]], '\"'), ''), 
+                                                                                                                 ", alpha = ", 
+                                                                                                                 alpha[[i1]], 
+                                                                                                                 ", show.legend = FALSE)"
+                    )))) # WARNING: a single color allowed for color argument outside aesthetic, hence the loop # legend.show option do not remove the legend, only the aesthetic of the legend (dot, line, etc.). Used here to avoid multiple layers of legend which corrupt transparency
+                    coord.names <- c(coord.names, paste0(geom[[i1]], ".", class.categ[i5]))
+                }
+                assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "size", name = if(is.null(legend.name)){NULL}else{legend.name[[i1]]}, values = rep(line.size[[i1]], length(color[[i1]])), breaks = class.categ)) # values are the values of linetype. 1 means solid. Regarding the alpha bug, I have tried different things without success: alpha in guide alone, in geom alone, in both, breaks reorder the classes according to class.categ in the legend
+            }
+        }
+    }
+    # end loop part
+    
+    
+    
+    
+    # legend display
+    tempo.legend.final <- 'ggplot2::guides(
 fill = if(fin.lg.disp[[1]] == TRUE){
 ggplot2::guide_legend(
 order = lg.order[[1]], 
@@ -13390,25 +13395,25 @@ FALSE
 }
 )' # clip = "off" to have secondary ticks outside plot region does not work
 if( ! is.null(legend.width)){
-if(any(unlist(legend.disp))){ # means some TRUE
-tempo.graph.info <- suppressMessages(ggplot2::ggplot_build(eval(parse(text = paste0(paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "), ' + ', tempo.legend.final))))) # will be recovered later again, when ylim will be considered
-legend.final <- fun_gg_get_legend(ggplot_built = tempo.graph.info, fun.name = function.name) # get legend
-fin.lg.disp[] <- FALSE # remove all the legends. Must be done even if fin.lg.disp is not appearing in the code thenafter. Otherwise twice the legend
-if(is.null(legend.final) & plot == TRUE){ # even if any(unlist(legend.disp)) is TRUE
-legend.final <- fun_gg_empty_graph() # empty graph instead of legend
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") LEGEND REQUESTED (NON-NULL categ ARGUMENT OR legend.show ARGUMENT SET TO TRUE)\nBUT IT SEEMS THAT THE PLOT HAS NO LEGEND -> EMPTY LEGEND SPACE CREATED BECAUSE OF THE NON-NULL legend.width ARGUMENT\n")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
-}else if(plot == TRUE){ # means all FALSE
-legend.final <- ggplot2::ggplot()+ggplot2::theme_void() # empty graph instead of legend
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") LEGEND REQUESTED (NON-NULL categ ARGUMENT OR legend.show ARGUMENT SET TO TRUE)\nBUT IT SEEMS THAT THE PLOT HAS NO LEGEND -> EMPTY LEGEND SPACE CREATED BECAUSE OF THE NON-NULL legend.width ARGUMENT\n")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
-}
+    if(any(unlist(legend.disp))){ # means some TRUE
+        tempo.graph.info <- suppressMessages(ggplot2::ggplot_build(eval(parse(text = paste0(paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "), ' + ', tempo.legend.final))))) # will be recovered later again, when ylim will be considered
+        legend.final <- fun_gg_get_legend(ggplot_built = tempo.graph.info, fun.name = function.name) # get legend
+        fin.lg.disp[] <- FALSE # remove all the legends. Must be done even if fin.lg.disp is not appearing in the code thenafter. Otherwise twice the legend
+        if(is.null(legend.final) & plot == TRUE){ # even if any(unlist(legend.disp)) is TRUE
+            legend.final <- fun_gg_empty_graph() # empty graph instead of legend
+            warn.count <- warn.count + 1
+            tempo.warn <- paste0("(", warn.count,") LEGEND REQUESTED (NON-NULL categ ARGUMENT OR legend.show ARGUMENT SET TO TRUE)\nBUT IT SEEMS THAT THE PLOT HAS NO LEGEND -> EMPTY LEGEND SPACE CREATED BECAUSE OF THE NON-NULL legend.width ARGUMENT\n")
+            warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+        }
+    }else if(plot == TRUE){ # means all FALSE
+        legend.final <- ggplot2::ggplot()+ggplot2::theme_void() # empty graph instead of legend
+        warn.count <- warn.count + 1
+        tempo.warn <- paste0("(", warn.count,") LEGEND REQUESTED (NON-NULL categ ARGUMENT OR legend.show ARGUMENT SET TO TRUE)\nBUT IT SEEMS THAT THE PLOT HAS NO LEGEND -> EMPTY LEGEND SPACE CREATED BECAUSE OF THE NON-NULL legend.width ARGUMENT\n")
+        warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+    }
 }
 if( ! any(unlist(legend.disp))){
-fin.lg.disp[] <- FALSE # remove all the legends. Must be done even if fin.lg.disp is not appearing in the code thenafter. Otherwise twice the legend
+    fin.lg.disp[] <- FALSE # remove all the legends. Must be done even if fin.lg.disp is not appearing in the code thenafter. Otherwise twice the legend
 }
 assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = tempo.legend.final)))
 # end legend display
@@ -13421,135 +13426,135 @@ assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(t
 tempo.coord <- suppressMessages(ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + ", ' + ggplot2::scale_x_continuous(expand = c(0, 0), limits = sort(x.lim), oob = scales::rescale_none) + ggplot2::scale_y_continuous(expand = c(0, 0), limits = sort(y.lim), oob = scales::rescale_none)'))))$layout$panel_params[[1]]) # here I do not need the x-axis and y-axis orientation, I just need the number of main ticks
 # x.second.tick.positions # coordinates of secondary ticks (only if x.second.tick.nb argument is non-null or if x.log argument is different from "no")
 if(x.log != "no"){ # integer main ticks for log2 and log10
-tempo.scale <- (as.integer(min(x.lim, na.rm = TRUE)) - 1):(as.integer(max(x.lim, na.rm = TRUE)) + 1)
+    tempo.scale <- (as.integer(min(x.lim, na.rm = TRUE)) - 1):(as.integer(max(x.lim, na.rm = TRUE)) + 1)
 }else{
-tempo <- if(is.null(attributes(tempo.coord$x$breaks))){tempo.coord$x$breaks}else{unlist(attributes(tempo.coord$x$breaks))}
-if(all(is.na(tempo))){
-tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nONLY NA IN tempo.coord$x$breaks")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-if(length(unique(x.lim)) <= 1){
-tempo.cat <- paste0("ERROR IN ", function.name, "\nIT SEEMS THAT X-AXIS VALUES HAVE A NULL RANGE: ", paste(x.lim, collapse = " "), "\nPLEASE, USE THE x.lim ARGUMENT WITH 2 DIFFERENT VALUES TO SOLVE THIS")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-tempo.scale <- fun_scale(lim = x.lim, n = ifelse(is.null(x.tick.nb), length(tempo[ ! is.na(tempo)]), x.tick.nb)) # in ggplot 3.3.0, tempo.coord$x.major_source replaced by tempo.coord$x$breaks. If fact: n = ifelse(is.null(x.tick.nb), length(tempo[ ! is.na(tempo)]), x.tick.nb)) replaced by n = ifelse(is.null(x.tick.nb), 4, x.tick.nb))
-}
+    tempo <- if(is.null(attributes(tempo.coord$x$breaks))){tempo.coord$x$breaks}else{unlist(attributes(tempo.coord$x$breaks))}
+    if(all(is.na(tempo))){
+        tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nONLY NA IN tempo.coord$x$breaks")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+    }
+    if(length(unique(x.lim)) <= 1){
+        tempo.cat <- paste0("ERROR IN ", function.name, "\nIT SEEMS THAT X-AXIS VALUES HAVE A NULL RANGE: ", paste(x.lim, collapse = " "), "\nPLEASE, USE THE x.lim ARGUMENT WITH 2 DIFFERENT VALUES TO SOLVE THIS")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+    }else{
+        tempo.scale <- fun_scale(lim = x.lim, n = ifelse(is.null(x.tick.nb), length(tempo[ ! is.na(tempo)]), x.tick.nb)) # in ggplot 3.3.0, tempo.coord$x.major_source replaced by tempo.coord$x$breaks. If fact: n = ifelse(is.null(x.tick.nb), length(tempo[ ! is.na(tempo)]), x.tick.nb)) replaced by n = ifelse(is.null(x.tick.nb), 4, x.tick.nb))
+    }
 }
 x.second.tick.values <- NULL
 x.second.tick.pos <- NULL
 if(x.log != "no"){
-tempo <- fun_inter_ticks(lim = x.lim, log = x.log)
-x.second.tick.values <- tempo$values
-x.second.tick.pos <- tempo$coordinates
-# if(vertical == TRUE){ # do not remove in case the bug is fixed
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(
-geom = "segment", x = x.second.tick.pos, 
-xend = x.second.tick.pos, 
-y = if(diff(y.lim) > 0){tempo.coord$y.range[1]}else{tempo.coord$y.range[2]}, 
-yend = if(diff(y.lim) > 0){tempo.coord$y.range[1] + abs(diff(tempo.coord$y.range)) / 80}else{tempo.coord$y.range[2] - abs(diff(tempo.coord$y.range)) / 80}
-))
-# }else{ # not working because of the ggplot2 bug
-# assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", y = x.second.tick.pos, yend = x.second.tick.pos, x = tempo.coord$x.range[1], xend = tempo.coord$x.range[1] + diff(tempo.coord$x.range) / 80))
-# }
-coord.names <- c(coord.names, "x.second.tick.positions")
+    tempo <- fun_inter_ticks(lim = x.lim, log = x.log)
+    x.second.tick.values <- tempo$values
+    x.second.tick.pos <- tempo$coordinates
+    # if(vertical == TRUE){ # do not remove in case the bug is fixed
+    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(
+        geom = "segment", x = x.second.tick.pos, 
+        xend = x.second.tick.pos, 
+        y = if(diff(y.lim) > 0){tempo.coord$y.range[1]}else{tempo.coord$y.range[2]}, 
+        yend = if(diff(y.lim) > 0){tempo.coord$y.range[1] + abs(diff(tempo.coord$y.range)) / 80}else{tempo.coord$y.range[2] - abs(diff(tempo.coord$y.range)) / 80}
+    ))
+    # }else{ # not working because of the ggplot2 bug
+    # assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", y = x.second.tick.pos, yend = x.second.tick.pos, x = tempo.coord$x.range[1], xend = tempo.coord$x.range[1] + diff(tempo.coord$x.range) / 80))
+    # }
+    coord.names <- c(coord.names, "x.second.tick.positions")
 }else if(( ! is.null(x.second.tick.nb)) & x.log == "no"){
-# if(x.second.tick.nb > 0){ #inactivated because already checked before
-if(length(tempo.scale) < 2){
-tempo.cat1 <- c("x.tick.nb", "x.second.tick.nb")
-tempo.cat2 <- sapply(list(x.tick.nb, x.second.tick.nb), FUN = paste0, collapse = " ")
-tempo.sep <- sapply(mapply(" ", max(nchar(tempo.cat1)) - nchar(tempo.cat1) + 3, FUN = rep, SIMPLIFY = FALSE), FUN = paste0, collapse = "")
-tempo.cat <- paste0("ERROR IN ", function.name, "\nTHE NUMBER OF GENERATED TICKS FOR THE X-AXIS IS NOT CORRECT: ", length(tempo.scale), "\nUSING THESE ARGUMENT SETTINGS (NO DISPLAY MEANS NULL VALUE):\n", paste0(tempo.cat1, tempo.sep, tempo.cat2, collapse = "\n"), "\nPLEASE, TEST OTHER VALUES")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else{
-tempo <- fun_inter_ticks(lim = x.lim, log = x.log, breaks = tempo.scale, n = x.second.tick.nb)
-}
-x.second.tick.values <- tempo$values
-x.second.tick.pos <- tempo$coordinates
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(
-geom = "segment", 
-x = x.second.tick.pos, 
-xend = x.second.tick.pos, 
-y = if(diff(y.lim) > 0){tempo.coord$y.range[1]}else{tempo.coord$y.range[2]}, 
-yend = if(diff(y.lim) > 0){tempo.coord$y.range[1] + abs(diff(tempo.coord$y.range)) / 80}else{tempo.coord$y.range[2] - abs(diff(tempo.coord$y.range)) / 80}
-))
-coord.names <- c(coord.names, "x.second.tick.positions")
+    # if(x.second.tick.nb > 0){ #inactivated because already checked before
+    if(length(tempo.scale) < 2){
+        tempo.cat1 <- c("x.tick.nb", "x.second.tick.nb")
+        tempo.cat2 <- sapply(list(x.tick.nb, x.second.tick.nb), FUN = paste0, collapse = " ")
+        tempo.sep <- sapply(mapply(" ", max(nchar(tempo.cat1)) - nchar(tempo.cat1) + 3, FUN = rep, SIMPLIFY = FALSE), FUN = paste0, collapse = "")
+        tempo.cat <- paste0("ERROR IN ", function.name, "\nTHE NUMBER OF GENERATED TICKS FOR THE X-AXIS IS NOT CORRECT: ", length(tempo.scale), "\nUSING THESE ARGUMENT SETTINGS (NO DISPLAY MEANS NULL VALUE):\n", paste0(tempo.cat1, tempo.sep, tempo.cat2, collapse = "\n"), "\nPLEASE, TEST OTHER VALUES")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+    }else{
+        tempo <- fun_inter_ticks(lim = x.lim, log = x.log, breaks = tempo.scale, n = x.second.tick.nb)
+    }
+    x.second.tick.values <- tempo$values
+    x.second.tick.pos <- tempo$coordinates
+    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(
+        geom = "segment", 
+        x = x.second.tick.pos, 
+        xend = x.second.tick.pos, 
+        y = if(diff(y.lim) > 0){tempo.coord$y.range[1]}else{tempo.coord$y.range[2]}, 
+        yend = if(diff(y.lim) > 0){tempo.coord$y.range[1] + abs(diff(tempo.coord$y.range)) / 80}else{tempo.coord$y.range[2] - abs(diff(tempo.coord$y.range)) / 80}
+    ))
+    coord.names <- c(coord.names, "x.second.tick.positions")
 }
 # for the ggplot2 bug with x.log, this does not work: eval(parse(text = ifelse(vertical == FALSE & x.log == "log10", "ggplot2::scale_x_continuous", "ggplot2::scale_x_continuous")))
 assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_x_continuous(
-breaks = tempo.scale, 
-minor_breaks = x.second.tick.pos, 
-labels = if(x.log == "log10"){scales::trans_format("identity", scales::math_format(10^.x))}else if(x.log == "log2"){scales::trans_format("identity", scales::math_format(2^.x))}else if(x.log == "no"){ggplot2::waiver()}else{tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nCODE INCONSISTENCY 10") ; stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)}, 
-expand = c(0, 0), # remove space after after axis limits
-limits = sort(x.lim), # NA indicate that limits must correspond to data limits but xlim() already used
-oob = scales::rescale_none, 
-trans = ifelse(diff(x.lim) < 0, "reverse", "identity") # equivalent to ggplot2::scale_x_reverse() but create the problem of x-axis label disappearance with x.lim decreasing. Thus, do not use. Use xlim() below and after this
+    breaks = tempo.scale, 
+    minor_breaks = x.second.tick.pos, 
+    labels = if(x.log == "log10"){scales::trans_format("identity", scales::math_format(10^.x))}else if(x.log == "log2"){scales::trans_format("identity", scales::math_format(2^.x))}else if(x.log == "no"){ggplot2::waiver()}else{tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nCODE INCONSISTENCY 10") ; stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)}, 
+    expand = c(0, 0), # remove space after after axis limits
+    limits = sort(x.lim), # NA indicate that limits must correspond to data limits but xlim() already used
+    oob = scales::rescale_none, 
+    trans = ifelse(diff(x.lim) < 0, "reverse", "identity") # equivalent to ggplot2::scale_x_reverse() but create the problem of x-axis label disappearance with x.lim decreasing. Thus, do not use. Use xlim() below and after this
 ))
 # end x.second.tick.positions
 # y.second.tick.positions # coordinates of secondary ticks (only if y.second.tick.nb argument is non-null or if y.log argument is different from "no")
 if(y.log != "no"){ # integer main ticks for log2 and log10
-tempo.scale <- (as.integer(min(y.lim, na.rm = TRUE)) - 1):(as.integer(max(y.lim, na.rm = TRUE)) + 1)
+    tempo.scale <- (as.integer(min(y.lim, na.rm = TRUE)) - 1):(as.integer(max(y.lim, na.rm = TRUE)) + 1)
 }else{
-tempo <- if(is.null(attributes(tempo.coord$y$breaks))){tempo.coord$y$breaks}else{unlist(attributes(tempo.coord$y$breaks))}
-if(all(is.na(tempo))){
-tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nONLY NA IN tempo.coord$y$breaks")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}
-if(length(unique(y.lim)) <= 1){
-tempo.cat <- paste0("ERROR IN ", function.name, "\nIT SEEMS THAT Y-AXIS VALUES HAVE A NULL RANGE: ", paste(y.lim, collapse = " "), "\nPLEASE, USE THE y.lim ARGUMENT WITH 2 DIFFERENT VALUES TO SOLVE THIS")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-tempo.scale <- fun_scale(lim = y.lim, n = ifelse(is.null(y.tick.nb), length(tempo[ ! is.na(tempo)]), y.tick.nb)) # in ggplot 3.3.0, tempo.coord$y.major_source replaced by tempo.coord$y$breaks. If fact: n = ifelse(is.null(y.tick.nb), length(tempo[ ! is.na(tempo)]), y.tick.nb)) replaced by n = ifelse(is.null(y.tick.nb), 4, y.tick.nb))
-}
+    tempo <- if(is.null(attributes(tempo.coord$y$breaks))){tempo.coord$y$breaks}else{unlist(attributes(tempo.coord$y$breaks))}
+    if(all(is.na(tempo))){
+        tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nONLY NA IN tempo.coord$y$breaks")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+    }
+    if(length(unique(y.lim)) <= 1){
+        tempo.cat <- paste0("ERROR IN ", function.name, "\nIT SEEMS THAT Y-AXIS VALUES HAVE A NULL RANGE: ", paste(y.lim, collapse = " "), "\nPLEASE, USE THE y.lim ARGUMENT WITH 2 DIFFERENT VALUES TO SOLVE THIS")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+    }else{
+        tempo.scale <- fun_scale(lim = y.lim, n = ifelse(is.null(y.tick.nb), length(tempo[ ! is.na(tempo)]), y.tick.nb)) # in ggplot 3.3.0, tempo.coord$y.major_source replaced by tempo.coord$y$breaks. If fact: n = ifelse(is.null(y.tick.nb), length(tempo[ ! is.na(tempo)]), y.tick.nb)) replaced by n = ifelse(is.null(y.tick.nb), 4, y.tick.nb))
+    }
 }
 y.second.tick.values <- NULL
 y.second.tick.pos <- NULL
 if(y.log != "no"){
-tempo <- fun_inter_ticks(lim = y.lim, log = y.log)
-y.second.tick.values <- tempo$values
-y.second.tick.pos <- tempo$coordinates
-# if(vertical == TRUE){ # do not remove in case the bug is fixed
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(
-geom = "segment", 
-y = y.second.tick.pos, 
-yend = y.second.tick.pos, 
-x = if(diff(x.lim) > 0){tempo.coord$x.range[1]}else{tempo.coord$x.range[2]}, 
-xend = if(diff(x.lim) > 0){tempo.coord$x.range[1] + abs(diff(tempo.coord$x.range)) / 80}else{tempo.coord$x.range[2] - abs(diff(tempo.coord$x.range)) / 80}
-))
-# }else{ # not working because of the ggplot2 bug
-# assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", x = y.second.tick.pos, xend = y.second.tick.pos, y = tempo.coord$y.range[1], yend = tempo.coord$y.range[1] + diff(tempo.coord$y.range) / 80))
-# }
-coord.names <- c(coord.names, "y.second.tick.positions")
+    tempo <- fun_inter_ticks(lim = y.lim, log = y.log)
+    y.second.tick.values <- tempo$values
+    y.second.tick.pos <- tempo$coordinates
+    # if(vertical == TRUE){ # do not remove in case the bug is fixed
+    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(
+        geom = "segment", 
+        y = y.second.tick.pos, 
+        yend = y.second.tick.pos, 
+        x = if(diff(x.lim) > 0){tempo.coord$x.range[1]}else{tempo.coord$x.range[2]}, 
+        xend = if(diff(x.lim) > 0){tempo.coord$x.range[1] + abs(diff(tempo.coord$x.range)) / 80}else{tempo.coord$x.range[2] - abs(diff(tempo.coord$x.range)) / 80}
+    ))
+    # }else{ # not working because of the ggplot2 bug
+    # assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", x = y.second.tick.pos, xend = y.second.tick.pos, y = tempo.coord$y.range[1], yend = tempo.coord$y.range[1] + diff(tempo.coord$y.range) / 80))
+    # }
+    coord.names <- c(coord.names, "y.second.tick.positions")
 }else if(( ! is.null(y.second.tick.nb)) & y.log == "no"){
-# if(y.second.tick.nb > 0){ #inactivated because already checked before
-if(length(tempo.scale) < 2){
-tempo.cat1 <- c("y.tick.nb", "y.second.tick.nb")
-tempo.cat2 <- sapply(list(y.tick.nb, y.second.tick.nb), FUN = paste0, collapse = " ")
-tempo.sep <- sapply(mapply(" ", max(nchar(tempo.cat1)) - nchar(tempo.cat1) + 3, FUN = rep, SIMPLIFY = FALSE), FUN = paste0, collapse = "")
-tempo.cat <- paste0("ERROR IN ", function.name, "\nTHE NUMBER OF GENERATED TICKS FOR THE Y-AXIS IS NOT CORRECT: ", length(tempo.scale), "\nUSING THESE ARGUMENT SETTINGS (NO DISPLAY MEANS NULL VALUE):\n", paste0(tempo.cat1, tempo.sep, tempo.cat2, collapse = "\n"), "\nPLEASE, TEST OTHER VALUES")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
-}else{
-tempo <- fun_inter_ticks(lim = y.lim, log = y.log, breaks = tempo.scale, n = y.second.tick.nb)
-}
-y.second.tick.values <- tempo$values
-y.second.tick.pos <- tempo$coordinates
-assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(
-geom = "segment", 
-y = y.second.tick.pos, 
-yend = y.second.tick.pos, 
-x = if(diff(x.lim) > 0){tempo.coord$x.range[1]}else{tempo.coord$x.range[2]}, 
-xend = if(diff(x.lim) > 0){tempo.coord$x.range[1] + abs(diff(tempo.coord$x.range)) / 80}else{tempo.coord$x.range[2] - abs(diff(tempo.coord$x.range)) / 80}
-))
-coord.names <- c(coord.names, "y.second.tick.positions")
+    # if(y.second.tick.nb > 0){ #inactivated because already checked before
+    if(length(tempo.scale) < 2){
+        tempo.cat1 <- c("y.tick.nb", "y.second.tick.nb")
+        tempo.cat2 <- sapply(list(y.tick.nb, y.second.tick.nb), FUN = paste0, collapse = " ")
+        tempo.sep <- sapply(mapply(" ", max(nchar(tempo.cat1)) - nchar(tempo.cat1) + 3, FUN = rep, SIMPLIFY = FALSE), FUN = paste0, collapse = "")
+        tempo.cat <- paste0("ERROR IN ", function.name, "\nTHE NUMBER OF GENERATED TICKS FOR THE Y-AXIS IS NOT CORRECT: ", length(tempo.scale), "\nUSING THESE ARGUMENT SETTINGS (NO DISPLAY MEANS NULL VALUE):\n", paste0(tempo.cat1, tempo.sep, tempo.cat2, collapse = "\n"), "\nPLEASE, TEST OTHER VALUES")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE) # == in stop() to be able to add several messages between ==
+    }else{
+        tempo <- fun_inter_ticks(lim = y.lim, log = y.log, breaks = tempo.scale, n = y.second.tick.nb)
+    }
+    y.second.tick.values <- tempo$values
+    y.second.tick.pos <- tempo$coordinates
+    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(
+        geom = "segment", 
+        y = y.second.tick.pos, 
+        yend = y.second.tick.pos, 
+        x = if(diff(x.lim) > 0){tempo.coord$x.range[1]}else{tempo.coord$x.range[2]}, 
+        xend = if(diff(x.lim) > 0){tempo.coord$x.range[1] + abs(diff(tempo.coord$x.range)) / 80}else{tempo.coord$x.range[2] - abs(diff(tempo.coord$x.range)) / 80}
+    ))
+    coord.names <- c(coord.names, "y.second.tick.positions")
 }
 # for the ggplot2 bug with y.log, this does not work: eval(parse(text = ifelse(vertical == FALSE & y.log == "log10", "ggplot2::scale_x_continuous", "ggplot2::scale_y_continuous")))
 assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_y_continuous(
-breaks = tempo.scale, 
-minor_breaks = y.second.tick.pos, 
-labels = if(y.log == "log10"){scales::trans_format("identity", scales::math_format(10^.x))}else if(y.log == "log2"){scales::trans_format("identity", scales::math_format(2^.x))}else if(y.log == "no"){ggplot2::waiver()}else{tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nCODE INCONSISTENCY 10") ; stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)}, 
-expand = c(0, 0), # remove space after axis limits
-limits = sort(y.lim), # NA indicate that limits must correspond to data limits but ylim() already used
-oob = scales::rescale_none, 
-trans = ifelse(diff(y.lim) < 0, "reverse", "identity") # equivalent to ggplot2::scale_y_reverse() but create the problem of y-axis label disappearance with y.lim decreasing. Thus, do not use. Use ylim() below and after this
+    breaks = tempo.scale, 
+    minor_breaks = y.second.tick.pos, 
+    labels = if(y.log == "log10"){scales::trans_format("identity", scales::math_format(10^.x))}else if(y.log == "log2"){scales::trans_format("identity", scales::math_format(2^.x))}else if(y.log == "no"){ggplot2::waiver()}else{tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, "\nCODE INCONSISTENCY 10") ; stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)}, 
+    expand = c(0, 0), # remove space after axis limits
+    limits = sort(y.lim), # NA indicate that limits must correspond to data limits but ylim() already used
+    oob = scales::rescale_none, 
+    trans = ifelse(diff(y.lim) < 0, "reverse", "identity") # equivalent to ggplot2::scale_y_reverse() but create the problem of y-axis label disappearance with y.lim decreasing. Thus, do not use. Use ylim() below and after this
 ))
 # end y.second.tick.positions
 assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::coord_cartesian(xlim = x.lim, ylim = y.lim)) # clip = "off" to have secondary ticks outside plot region. The problem is that points out of bounds are also drawn outside the plot region. Thus, I cannot use it # at that stage, x.lim and y.lim not NULL anymore
@@ -13562,15 +13567,15 @@ assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::coo
 fin.plot <- eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + ")))
 grob.save <- NULL
 if(plot == TRUE){
-if( ! is.null(legend.width)){ # any(unlist(legend.disp)) == TRUE removed to have empty legend space # not & any(unlist(fin.lg.disp)) == TRUE here because converted to FALSE
-grob.save <- suppressMessages(suppressWarnings(gridExtra::grid.arrange(fin.plot, legend.final, ncol=2, widths=c(1, legend.width))))
-}else{
-grob.save <- suppressMessages(suppressWarnings(print(fin.plot)))
-}
+    if( ! is.null(legend.width)){ # any(unlist(legend.disp)) == TRUE removed to have empty legend space # not & any(unlist(fin.lg.disp)) == TRUE here because converted to FALSE
+        grob.save <- suppressMessages(suppressWarnings(gridExtra::grid.arrange(fin.plot, legend.final, ncol=2, widths=c(1, legend.width))))
+    }else{
+        grob.save <- suppressMessages(suppressWarnings(print(fin.plot)))
+    }
 }else{
-warn.count <- warn.count + 1
-tempo.warn <- paste0("(", warn.count,") PLOT NOT SHOWN AS REQUESTED")
-warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
+    warn.count <- warn.count + 1
+    tempo.warn <- paste0("(", warn.count,") PLOT NOT SHOWN AS REQUESTED")
+    warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn)))
 }
 # end drawing
 
@@ -13578,49 +13583,49 @@ warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn
 
 # output
 if(warn.print == TRUE & ! is.null(warn)){
-on.exit(warning(paste0("FROM ", function.name, ":\n\n", warn), call. = FALSE))
+    on.exit(warning(paste0("FROM ", function.name, ":\n\n", warn), call. = FALSE))
 }
 on.exit(exp = options(warning.length = ini.warning.length), add = TRUE)
 if(return == TRUE){
-output <- suppressMessages(ggplot2::ggplot_build(fin.plot))
-# output$data <- output$data[-1] # yes for boxplot but not for scatter # remove the first data because corresponds to the initial empty boxplot
-if(length(output$data) != length(coord.names)){
-tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, ": length(output$data) AND length(coord.names) MUST BE IDENTICAL. CODE HAS TO BE MODIFIED")
-stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
-}else{
-names(output$data) <- coord.names
-}
-if(is.null(unlist(removed.row.nb))){
-removed.row.nb <- NULL
-removed.rows <- NULL
-}else{
-for(i3 in 1:length(data1)){
-if( ! is.null(removed.row.nb[[i3]])){
-removed.row.nb[[i3]] <- sort(removed.row.nb[[i3]])
-removed.rows[[i3]] <- data1.ini[[i3]][removed.row.nb[[i3]], ]
-}
-}
-}
-tempo <- output$layout$panel_params[[1]]
-output <- list(
-data = data1, 
-removed.row.nb = removed.row.nb, 
-removed.rows = removed.rows, 
-plot = c(output$data, x.second.tick.values = list(x.second.tick.values), y.second.tick.values = list(y.second.tick.values)), 
-panel = facet.categ, 
-axes = list(
-x.range = tempo$x.range, 
-x.labels = if(is.null(attributes(tempo$x$breaks))){tempo$x$breaks}else{tempo$x$scale$get_labels()}, # is.null(attributes(tempo$x$breaks)) test if it is number (TRUE) or character (FALSE)
-x.positions = if(is.null(attributes(tempo$x$breaks))){tempo$x$breaks}else{unlist(attributes(tempo$x$breaks))}, 
-y.range = tempo$y.range, 
-y.labels = if(is.null(attributes(tempo$y$breaks))){tempo$y$breaks}else{tempo$y$scale$get_labels()}, 
-y.positions = if(is.null(attributes(tempo$y$breaks))){tempo$y$breaks}else{unlist(attributes(tempo$y$breaks))}
-), 
-warn = paste0("\n", warn, "\n\n"), 
-ggplot = if(return.ggplot == TRUE){fin.plot}else{NULL}, # fin.plot plots the graph if return == TRUE
-gtable = if(return.gtable == TRUE){grob.save}else{NULL} #
-)
-return(output) # this plots the graph if return.ggplot is TRUE and if no assignment
+    output <- suppressMessages(ggplot2::ggplot_build(fin.plot))
+    # output$data <- output$data[-1] # yes for boxplot but not for scatter # remove the first data because corresponds to the initial empty boxplot
+    if(length(output$data) != length(coord.names)){
+        tempo.cat <- paste0("INTERNAL CODE ERROR IN ", function.name, ": length(output$data) AND length(coord.names) MUST BE IDENTICAL. CODE HAS TO BE MODIFIED")
+        stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n", ifelse(is.null(warn), "", paste0("IN ADDITION\nWARNING", ifelse(warn.count > 1, "S", ""), ":\n\n", warn))), call. = FALSE)
+    }else{
+        names(output$data) <- coord.names
+    }
+    if(is.null(unlist(removed.row.nb))){
+        removed.row.nb <- NULL
+        removed.rows <- NULL
+    }else{
+        for(i3 in 1:length(data1)){
+            if( ! is.null(removed.row.nb[[i3]])){
+                removed.row.nb[[i3]] <- sort(removed.row.nb[[i3]])
+                removed.rows[[i3]] <- data1.ini[[i3]][removed.row.nb[[i3]], ]
+            }
+        }
+    }
+    tempo <- output$layout$panel_params[[1]]
+    output <- list(
+        data = data1, 
+        removed.row.nb = removed.row.nb, 
+        removed.rows = removed.rows, 
+        plot = c(output$data, x.second.tick.values = list(x.second.tick.values), y.second.tick.values = list(y.second.tick.values)), 
+        panel = facet.categ, 
+        axes = list(
+            x.range = tempo$x.range, 
+            x.labels = if(is.null(attributes(tempo$x$breaks))){tempo$x$breaks}else{tempo$x$scale$get_labels()}, # is.null(attributes(tempo$x$breaks)) test if it is number (TRUE) or character (FALSE)
+            x.positions = if(is.null(attributes(tempo$x$breaks))){tempo$x$breaks}else{unlist(attributes(tempo$x$breaks))}, 
+            y.range = tempo$y.range, 
+            y.labels = if(is.null(attributes(tempo$y$breaks))){tempo$y$breaks}else{tempo$y$scale$get_labels()}, 
+            y.positions = if(is.null(attributes(tempo$y$breaks))){tempo$y$breaks}else{unlist(attributes(tempo$y$breaks))}
+        ), 
+        warn = paste0("\n", warn, "\n\n"), 
+        ggplot = if(return.ggplot == TRUE){fin.plot}else{NULL}, # fin.plot plots the graph if return == TRUE
+        gtable = if(return.gtable == TRUE){grob.save}else{NULL} #
+    )
+    return(output) # this plots the graph if return.ggplot is TRUE and if no assignment
 }
 # end output
 # end main code
diff --git a/cute_little_R_functions.docx b/cute_little_R_functions.docx
index d2fc4eb45df5d8c614ef67ac53bb4240c670f541..fb20dd5f9d11b6696c4aaaf72e18d0fc672e3997 100644
GIT binary patch
delta 362942
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
P%HyF3#v~jR`22qX5+3?v

delta 362853
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
a54I1s64w9kfRQ2ixL7!nwloY5mj5r6A9i*C

-- 
GitLab