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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
PX=hhr>uO|YU|;|M5+3?v

delta 362853
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

-- 
GitLab