From 0aba76a4cafa10f1237141c9bd9a1bd47b0be882 Mon Sep 17 00:00:00 2001 From: gmillot <gael.millot@pasteur.fr> Date: Fri, 31 Jul 2020 15:36:39 +0200 Subject: [PATCH] fun_gg_boxplot tempo, legend solved --- boxplot_examples.R | 2 +- cute_little_R_functions.R | 3225 ------------------------------------- fun_gg_boxplot.docx | Bin 102376 -> 105493 bytes scatter.docx | Bin 104742 -> 104718 bytes 4 files changed, 1 insertion(+), 3226 deletions(-) diff --git a/boxplot_examples.R b/boxplot_examples.R index bb1ad6d..187f27d 100644 --- a/boxplot_examples.R +++ b/boxplot_examples.R @@ -166,5 +166,5 @@ cat(warn$warnings) ### add ggplot2 functions obs1 <- data.frame(Time = log10((1:20) * 100), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) fun_gg_boxplot(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), add = "+ggplot2::theme_classic()") - +fun_gg_boxplot(data1 = obs1, y = "Time", categ = "Group1", add = "+ggplot2::facet_wrap(facets = 'Group2')") diff --git a/cute_little_R_functions.R b/cute_little_R_functions.R index c51c250..024bf2f 100644 --- a/cute_little_R_functions.R +++ b/cute_little_R_functions.R @@ -7752,3228 +7752,3 @@ return(output) # do not use cat() because the idea is to reuse the message -# add legend width from scatter (empty legend space notably). Ok with facet? -# transfert the 2nd tick part to scatter -# improve grid -> put secondary grids. Then trasfert to scatter -# replace .categ.legend.name by box.legend.name -# replace dot.categ.legend.name by dot.legend.name -# facet in bold and with variable name https://github.com/rstudio/cheatsheets/blob/master/data-visualization-2.1.pdf -# still errors to solve for these examples: -# obs1 <- data.frame(Time = 1:1000, Group1 = rep(c("G", "H"), times = 500), Group2 = rep(LETTERS[1:5], each = 200)) -# a <- fun_gg_boxplot(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = "same", dot.tidy = TRUE, dot.tidy.bin.nb = 100, return = TRUE, dot.categ = "Group2", dot.categ.class.order=c("B", "D", "E", "A", "C")) # error with dot.categ.class.order - -# obs1 <- data.frame(Time = 1:1000, Group1 = rep(c("G", "H"), times = 500), Group2 = rep(LETTERS[1:5], each = 200)) -# a <- fun_gg_boxplot(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = "same", dot.tidy = TRUE, dot.tidy.bin.nb = 100, return = TRUE, dot.categ = "Group2", dot.categ.class.order=c("A", "B", "C", "D", "E")) # error with dot.categ.class.order - -# set.seed(1) -# obs1 <- data.frame(Time = c(sort(rnorm(10)), sort(rnorm(10)) + 2), Group1 = rep(c("G", "H"), each = 10), Group2 = rep(c("A", "B"), time = 10), Group3 = rep(c("I", "J", "K", "L"), time = 5)) -# set.seed(NULL) -# obs1 -# obs1$Time[1:10] <- NA ; -# a <- fun_gg_boxplot(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = 1:4, dot.tidy = FALSE, dot.tidy.bin.nb = 100, return = TRUE, dot.categ = "Group3") # error with dot.categ.class.order -# obs1 <- data.frame(x = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) -# fun_gg_boxplot(data1 = obs1, y = "x", categ = c("Group1", "Group2"), categ.class.order = list(NULL, c("B", "A")), categ.legend.name = "", categ.color = c("red", "blue"), box.width = 0.25, box.whisker.width = 0.8, dot.color = "grey", dot.tidy = FALSE, dot.tidy.bin.nb = 30, dot.jitter = 1, dot.size = 4, dot.border.size = 0, dot.alpha = 1, y.lim = c(0, 25), 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, stat.disp = "above", stat.size = 4, stat.dist = 2, x.lab = "GROUP", y.lab = "VALUE", vertical = FALSE, text.size = 12, title = "", title.text.size = 8, text.angle = 45, article = TRUE, grid = TRUE, return = TRUE, plot = TRUE, add = NULL, warn.print = TRUE, lib.path = NULL) -# add warning message when Nan or Inf values -# double legends with suppressMessages(suppressWarnings(gridExtra::grid.arrange(fin.plot, legend.final, ncol=2, widths=c(1, legend.width)))) - - - -fun_gg_boxplot <- function( -data1, -y, -categ, -categ.class.order = NULL, -categ.legend.name = NULL, -categ.color = NULL, -box.fill = FALSE, -box.width = 0.5, -box.space = 0.1, -box.line.size = 0.5, -box.notch = FALSE, -box.alpha = 1, -box.mean = TRUE, -box.whisker.kind = "std", -box.whisker.width = 0, -dot.color = "black", -dot.categ = NULL, -dot.categ.class.order = NULL, -dot.categ.legend.name = NULL, -dot.tidy = FALSE, -dot.tidy.bin.nb = 50, -dot.jitter = 0.5, -dot.size = 3, -dot.alpha = 0.5, -dot.border.size = 0.5, -dot.border.color = NULL, -x.lab = NULL, -y.lab = NULL, -y.lim = 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, -stat.disp = NULL, -stat.disp.mean = FALSE, -stat.size = 4, -stat.dist = 2, -vertical = TRUE, -text.size = 12, -text.angle = 0, -title = "", -title.text.size = 8, -legend.show = TRUE, -legend.width = 0.5, -article = TRUE, -grid = FALSE, -return = FALSE, -return.ggplot = FALSE, -plot = TRUE, -add = NULL, -warn.print = FALSE, -lib.path = NULL -){ -# AIM -# ggplot2 boxplot with the possibility to add background or foreground dots -# 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 -# To have a single box, 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 boxs, 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 below -# with separated boxs (categ argument with only one element), box.width argument defines each box width. The box.width argument also defines the space between boxs by using (1 - box.width). In addition, xmin and xmax of the fun_gg_boxplot() output report the box boundaries (around x-axis unit 1, 2, 3, etc., for each box) -# with grouped boxs (categ argument with two elements), box.width argument defines each set of grouped box width. The box.width argument also defines the space between set of grouped boxs by using (1 - box.width). In addition, 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) -# The dot.alpha argument can alter the display of the color boxes when using pdf output -# ARGUMENTS -# data1: dataframe containing one column of values (see y argument below) and one or two columns of categories (see 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 boxs 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 factor). Must be either one or two column names. If a single column name (further refered to as categ1), then one box per class of categ1. If two column names (further refered to as categ1 and categ2), then one box per class of categ2, which form a group of boxs in each class of categ1. BEWARE: 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 boxs, 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) -# 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 compartment can be NULL and other not -# categ.legend.name: character string of the legend title for categ2. If categ.legend.name == NULL, then categ.legend.name <- categ1 if only categ1 is present, and categ.legend.name <- categ2 if categ1 and categ2 are present. Write "" if no legend required -# categ.color: vector of color character string for box frame -#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 boxs 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 (beware: a single color per class of categ1 and a single class of categ1 per color must be respected). 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 categ.color -# If categ.color is non null and categ1 and categ2 specified, all the rules described above will apply to categ2 instead of categ1 (colors will be determined for boxs inside a group of boxs) -# box.fill: logical. Fill the box? If TRUE, the categ.color argument will be used to generate filled boxplot (the box frames being black) as well as filled outlier dots (the dot border being controled by the dot.border.color argument) and 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, and if all the dots are plotted, they will be beneath the boxes -# box.width: numeric value (from 0 to 1) of the box or set of grouped box width (see warnings above) -# box.space: numeric value (from 0 to 1) indicating the box separation in grouped boxes. 0 means no space and 1 means boxes shrinked to a vertical line. Ignored if no grouped boxes -# box.line.size: numeric value of line size of boxes and whiskers (in mm) -# box.notch: logical. Notched boxplot? It TRUE, display notched boxplot, the 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: numeric value (from 0 to 1) of box transparency (full transparent to full opaque, respectively). BEWARE: work only for the fill of boxplots, not for the frame. See https://github.com/tidyverse/ggplot2/issues/252 -# box.mean: logical. Add mean value? It TRUE, a losange dot, additional to the solid median bar and corresponding to the mean value, is incorporated into 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: numeric value (from 0 to 1) of the whisker width, with 0 meaning no whiskers and 1 meaning a width equal to the corresponding boxplot width -# dot.color: vector of color character string for color of dots. -# If NULL, no dots plotted -# If "same", the dots will have the same colors as the respective boxplots -# Otherwise, colors will 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. Color strings can be (1), (2) or (3) of 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). See examples Put in example or leave here? -> Example: with categ = "Group1", dot.color = "red" and dot.categ = NULL, all the dots will be red, whatever the classes in Group1 column of data1, and no legend will be display for dots. With categ = c("Group1", "Group2"), dot.color = c("red", "blue") and dot.categ = NULL, the dots will be red for first class of Group2 and blue for the 2nd class of Group2, and no legend will be display for dots. With categ = c("Group1", "Group2"), dot.color = c("red", "blue") and dot.categ = "Group1", the dots will be red for first class of Group1 and blue for the 2nd class of Group1, and a legend will be display for dots -# dot.categ: optional single character string of a data1 column name (further refered to as categ3), which is associated to the dot.color argument to generate a legend for dots. If non NULL, then a legend will be created for the dots, in addition to the legend for the boxes. If NULL, no legend created and the colors of dot will depend on dot.color and categ arguments (see the explanation in dot.color) -# dot.categ.class.order: optional vector of character strings indicating the order of the classes of categ3. 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.categ.legend.name: optional character string of the legend title for categ3. If dot.categ.legend.name == NULL, categ3 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. BEWARE: change the true coordinates of dots that are aligned. Thus the gain in aestheticism is associated with a loss in precision that can be very important. If FALSE, dots are randomly spread, using the dot.jitter argument (see below) keeping the true dot 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 the size the width of the bin. In other words, increase the number to have smaller dots. Not considered if dot.tidy is FALSE -# dot.jitter: numeric value (from 0 to 1) of random dot horizontal dispersion, with 0 meaning no dispersion and 1 meaning a dispersion in the corresponding box width interval. Not considered if dot.tidy is TRUE -# dot.size: numeric value of dot size (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 size (in mm). Write zero for no dot border. If dot.tidy is TRUE, value 0 remove the border. Another one 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 -# 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 -# 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). BEWARE: not possible to have horizontal boxs 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 label values (i.e., main ticks) on the y-axis (n argument of the the cute::fun_scale() function). BEWARE: provide this number even if y.log is "log2" or "log10", which can be difficult to read (e.g., ..., 2^2, 2^2.5, 2^3, ...). If NULL and if y.log is "no", then the number of label values is set by ggplot2. If NULL and if y.log is "log2" or "log10", then the number of label values correspond to integer units between y.lim (e.g., ..., 2^1, 2^2, 2^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 * 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.disp: add the median number above the corresponding box. Either NULL (no number shown), "top" (at the top of the figure region) or "above" (above each box) -# stat.disp.mean: logical. Diplay means instead of medians ? -# stat.size: numeric value of the stat size (in points). Increase the value to increase text size -# stat.dist: numeric value of the stat distance. Increase the value to increase the distance from the box plot -# vertical: logical. Vertical boxs? BEWARE: will be automatically set to TRUE if y.log argument is other than "no". Indeed, not possible to have horizontal boxs with a log axis, due to a bug in ggplot2 (see https://github.com/tidyverse/ggplot2/issues/881) -# text.size: numeric value of the size of the (1) axis numbers and axis legends, (2) texts in the graphic legend, (3) stats above boxs (in points) -# text.angle: integer value of the text angle for the x-axis labels. 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. -# title: character string of the graph title -# title.text.size: numeric value of the title size (in points) -# 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 a article theme (article like). If FALSE, use a classic related ggplot theme. Use the add argument (add = "+ggplot2::theme_classic()" for the exact classic ggplot theme -# grid: logical. Draw horizontal lines in the background to better read the box values? Not considered if article == FALSE -# 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 -# plot: logical. Plot the graphic? If FALSE and return argument is TRUE, graphical parameters and associated warnings are provided without plotting -# add: character string allowing to add more ggplot2 features (dots, lines, themes, facet, etc.). Ignored if NULL -# BEWARE: (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 -# 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 -# REQUIRED PACKAGES -# ggplot2 -# scales -# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION -# 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() -# 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. WARNING: if the y.log argument is not "no", y values are log2 or log10 converted in $data -# $stat: the graphic statistics -# $removed.row.nb: which rows have been removed due to NA detection in y and categ columns (NULL if no row removed) -# $removed.rows: removed rows containing NA (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: diamon mean coordinates (only if box.mean argument is TRUE) -# $stat.display.positive: coordinates of stat numbers when positive (only if stat.disp argument is TRUE) -# $stat.display.negative: coordinates of stat numbers when negative (only if stat.disp argument is TRUE) -# 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). BEWARE: 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. BEWARE: some of the warning messages (those 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 -# EXAMPLE -# obs1 <- data.frame(x = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_boxplot(data1 = obs1, y = "x", categ = c("Group1", "Group2"), categ.class.order = list(NULL, c("B", "A")), categ.legend.name = "", categ.color = c("red", "blue"),box.fill = FALSE, box.width = 0.5, box.space = 0.1, box.line.size = 0.5, box.notch = FALSE, box.alpha = 1, box.mean = TRUE, box.whisker.kind = "std", box.whisker.width = 0, dot.color = "black", dot.categ = NULL, dot.categ.class.order = NULL, dot.categ.legend.name = NULL, dot.tidy = TRUE, dot.tidy.bin.nb = 50, dot.jitter = 0.5, dot.size = 3, dot.alpha = 0.5, dot.border.size = 0.5, dot.border.color = NULL, x.lab = NULL, y.lab = NULL, y.lim = 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, stat.disp = NULL, stat.disp.mean = FALSE, stat.size = 4, stat.dist = 2, vertical = TRUE, text.size = 12, text.angle = 0, title = "", title.text.size = 8, legend.width = 0.5, article = TRUE, grid = FALSE, return = FALSE, return.ggplot = FALSE, plot = TRUE, add = NULL, warn.print = TRUE, lib.path = NULL) -# DEBUGGING -# set.seed(1) ; obs1 <- data.frame(Time = c(rnorm(10), rnorm(10) + 2), Group1 = rep(c("G", "H"), each = 10)) ; set.seed(NULL) ; obs1$Time[1:10] <- NA ; data1 = obs1 ; y = "Time" ; categ = c("Group1") ; categ.class.order = NULL ; categ.legend.name = NULL ; categ.color = c("green") ; box.fill = FALSE ; box.width = 0.5 ; box.space = 0.1 ; box.notch = FALSE ; box.line.size = 0.5 ; box.alpha = 0.5 ; box.mean = TRUE ; box.whisker.kind = "std" ; box.whisker.width = 0.5 ; dot.color = "black" ; dot.categ = "Group1"; dot.categ.class.order = c("G", "H") ; dot.categ.legend.name = NULL ; dot.tidy = TRUE ; dot.tidy.bin.nb = 50 ; dot.jitter = 0.25 ; dot.size = 3 ; dot.alpha = 0.5 ; dot.border.size = 0.5 ; dot.border.color = NULL ; y.lim = 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 ; stat.disp = NULL ; stat.disp.mean = FALSE ; stat.size = 4 ; stat.dist = 2 ; x.lab = NULL ; y.lab = NULL ; vertical = TRUE ; text.size = 12 ; title = "" ; title.text.size = 8 ; legend.width = 0.5 ; text.angle = 0 ; article = FALSE ; grid = FALSE ; return = TRUE ; return.ggplot = FALSE ; plot = TRUE ; add = NULL ; warn.print = FALSE ; lib.path = NULL -# set.seed(1) ; obs1 <- data.frame(Time = c(rnorm(10), rnorm(10) + 2), Group1 = rep(c("G", "H"), each = 10), Group2 = rep(c("A", "B"), time = 10), Group3 = rep(c("I", "J"), time = 10)) ; set.seed(NULL) ; obs1$Time[1:10] <- NA ; data1 = obs1 ; y = "Time" ; categ = c("Group1", "Group2") ; categ.class.order = list(c("G", "H"), c("A", "B")); categ.legend.name = NULL ; categ.color = c("green", "blue") ; box.fill = FALSE ; box.width = 0.5 ; box.space = 0.1 ; box.notch = FALSE ; box.line.size = 0.5 ; box.alpha = 0.5 ; box.mean = TRUE ; box.whisker.kind = "std" ; box.whisker.width = 0.5 ; dot.color = "black" ; dot.categ = "Group1" ; dot.categ.class.order = NULL ; dot.categ.legend.name = NULL ; dot.tidy = TRUE ; dot.tidy.bin.nb = 30 ; dot.jitter = 0.25 ; dot.size = 3 ; dot.alpha = 0.5 ; dot.border.size = 0.5 ; dot.border.color = NULL ; y.lim = 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 ; stat.disp = NULL ; stat.disp.mean = FALSE ; stat.size = 4 ; stat.dist = 2 ; x.lab = NULL ; y.lab = NULL ; vertical = TRUE ; text.size = 12 ; title = "" ; title.text.size = 8 ; legend.width = 0.5 ; text.angle = 0 ; article = FALSE ; grid = FALSE ; return = FALSE ; return.ggplot = FALSE ; plot = TRUE ; add = NULL ; warn.print = FALSE ; lib.path = NULL -# set.seed(1) ; obs1 <- data.frame(Time = c(rnorm(10), rnorm(10) + 2), Group1 = rep(c("G", "H"), each = 10), Group2 = rep(c("A", "B"), time = 10)) ; set.seed(NULL) ; data1 = obs1 ; y = "Time" ; categ = c("Group1") ; categ.class.order = list(c("H", "G")); categ.legend.name = NULL ; categ.color = c("blue") ; box.fill = FALSE ; box.width = 0.5 ; box.space = 0.1 ; box.notch = TRUE ; box.line.size = 1 ; box.alpha = 1 ; box.mean = FALSE ; box.whisker.kind = "max" ; box.whisker.width = 0 ; dot.color = "black" ; dot.categ = "Group1" ; dot.categ.class.order = NULL ; dot.categ.legend.name = NULL ; dot.tidy = TRUE ; dot.tidy.bin.nb = 30 ; dot.jitter = 0.25 ; dot.size = 3 ; dot.alpha = 0.5 ; dot.border.size = 0.5 ; dot.border.color = NULL ; y.lim = NULL ; y.log = "log10" ; 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 ; stat.disp = NULL ; stat.disp.mean = FALSE ; stat.size = 4 ; stat.dist = 2 ; x.lab = NULL ; y.lab = NULL ; vertical = TRUE ; text.size = 12 ; title = "" ; title.text.size = 8 ; legend.width = 0.5 ; text.angle = 0 ; article = FALSE ; grid = FALSE ; return = FALSE ; return.ggplot = FALSE ; plot = TRUE ; add = NULL ; warn.print = FALSE ; lib.path = NULL -# function name -function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()") -# 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" -) -for(i1 in req.function){ -if(length(find(i1, mode = "function")) == 0){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, "\nREQUIRED ", i1, "() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n") -stop(tempo.cat) -} -} -# 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") -# end reserved words to avoid bugs (used in this function) -# 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$fun.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) -} -if( ! is.null(categ.legend.name)){ -tempo <- fun_check(data = categ.legend.name, class = "vector", mode = "character", fun.name = function.name) ; eval(ee) -} -if( ! is.null(categ.color)){ -tempo1 <- fun_check(data = categ.color, class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name, print = FALSE) -tempo2 <- fun_check(data = categ.color, class = "factor", na.contain = TRUE, fun.name = function.name, print = FALSE) -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, fun.name = function.name, print = FALSE)$problem -if(tempo.check.color == TRUE){ -tempo.cat <- paste0("categ.color ARGUMENT MUST BE A FACTOR OR CHARACTER VECTOR OR INTEGER VECTOR") # integer possible because dealt above -text.check <- c(text.check, tempo.cat) -arg.check <- c(arg.check, TRUE) -} -} -} -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, print = FALSE) -tempo2 <- fun_check(data = dot.color, class = "factor", na.contain = TRUE, fun.name = function.name, print = FALSE) -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, fun.name = function.name, print = FALSE)$problem -if(tempo.check.color == TRUE){ -tempo.cat <- paste0("dot.color MUST BE A FACTOR OR CHARACTER VECTOR OR INTEGER VECTOR") # integer possible because dealt above -text.check <- c(text.check, tempo.cat) -arg.check <- c(arg.check, TRUE) -} -} -} -if( ! is.null(dot.categ)){ -tempo <- fun_check(data = dot.categ, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee) -} -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) -} -if( ! is.null(dot.categ.legend.name)){ -tempo <- fun_check(data = dot.categ.legend.name, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee) -} -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) -tempo <- fun_check(data = dot.jitter, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee) -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, print = FALSE) -tempo2 <- fun_check(data = dot.border.color, class = "vector", typeof = "integer", double.as.integer.allowed = TRUE, length = 1, fun.name = function.name, print = FALSE) -if(tempo1$problem == TRUE & tempo2$problem == TRUE){ -# integer colors into gg_palette -tempo.cat <- paste0("dot.border.color MUST BE A SINGLE CHARACTER STRING OF COLOR OR A SINGLE INTEGER VALUE") # integer possible because dealt above -text.check <- c(text.check, tempo.cat) -arg.check <- c(arg.check, TRUE) -} -} -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) -} -} -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) -} -} -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("y.lim ARGUMENT CANNOT CONTAIN -Inf OR Inf VALUES") -text.check <- c(text.check, tempo.cat) -arg.check <- c(arg.check, TRUE) -} -} -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("y.tick.nb ARGUMENT MUST BE A NON NULL POSITIVE INTEGER") -text.check <- c(text.check, tempo.cat) -arg.check <- c(arg.check, TRUE) -} -} -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("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) -} -} -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.disp)){ -tempo <- fun_check(data = stat.disp, options = c("top", "above"), length = 1, fun.name = function.name) ; eval(ee) -} -tempo <- fun_check(data = stat.disp.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 = 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 = 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 = 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) -if( ! is.null(legend.width)){ -tempo <- fun_check(data = legend.width, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee) -} -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) -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 = plot, 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) -if(tempo$problem == FALSE & ! grepl(pattern = "^\\s*\\+", add)){ # check that the add string start by + -tempo.cat <- paste0("add ARGUMENT MUST START WITH \"+\": ", paste(unique(add), collapse = " ")) -text.check <- c(text.check, tempo.cat) -arg.check <- c(arg.check, TRUE) -}else if(tempo$problem == FALSE & ! grepl(pattern = "(ggplot2|lemon)\\s*::", add)){ # -tempo.cat <- paste0("FOR EASIER FUNCTION DETECTION, add ARGUMENT MUST CONTAIN \"ggplot2::\" OR \"lemon::\" IN FRONT OF EACH GGPLOT2 FUNCTION: ", paste(unique(add), collapse = " ")) -text.check <- c(text.check, tempo.cat) -arg.check <- c(arg.check, TRUE) -}else if(tempo$problem == FALSE & ! grepl(pattern = ")\\s*$", add)){ # check that the add string finished by ) -tempo.cat <- paste0("add ARGUMENT MUST FINISH BY \")\": ", paste(unique(add), collapse = " ")) -text.check <- c(text.check, tempo.cat) -arg.check <- c(arg.check, TRUE) -} -} -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("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) -} -} -} -if(any(arg.check) == TRUE){ -stop(paste0("\n\n================\n\nERROR IN ", function.name, "\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.2/r_debugging_tools-v1.2.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 -warn <- NULL -warn.count <- 0 -if(any(duplicated(names(data1)))){ -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"), call. = FALSE) -} -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"), call. = FALSE) -}else{ -tempo <- fun_check(data = data1[, y], data.name = "y COLUMN OF data1", class = "vector", mode = "numeric", na.contain = TRUE, fun.name = function.name) ; eval(ee) -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"), call. = FALSE) -} -} -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"), call. = FALSE) -}else if( ! all(categ %in% names(data1))){ -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"), call. = FALSE) -} -# reserved word checking -if(any(names(data1) %in% reserved.words)){ -if(any(duplicated(names(data1)))){ -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"), call. = FALSE) -} -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])){ -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))) -} -# BEWARE: names of y argument potentially replaced -if(any(categ == tempo.output$ini[i2])){ -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))) -} -# BEWARE: names of categ argument potentially replaced -if( ! is.null(dot.categ)){ -if(any(dot.categ == tempo.output$ini[i2])){ -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))) -} -} -# BEWARE: 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"), call. = FALSE) -} -} -} -# end reserved word checking -# 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"))){ -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))){ # BEWARE: 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), collapse = " "), "\nPLEASE REWRITE THE add STRING AND RERUN") -stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n"), call. = FALSE) -} -} -# 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, print = FALSE) -tempo2 <- fun_check(data = data1[, categ[i1]], data.name = paste0("categ NUMBER ", i1, " OF data1"), class = "factor", na.contain = TRUE, fun.name = function.name, print = FALSE) -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"), call. = FALSE) -}else if(tempo1$problem == FALSE){ # character vector -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 -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"), call. = FALSE) -}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) ; eval(ee) # 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(any(duplicated(categ.class.order[[i3]]))){ -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"), call. = FALSE) -}else if( ! (all(categ.class.order[[i3]] %in% unique(data1[, categ[i3]])) & all(unique(data1[, categ[i3]]) %in% categ.class.order[[i3]]))){ -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"), call. = FALSE) -}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]]) -} -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(categ.legend.name)){ -warn.count <- warn.count + 1 -tempo.warn <- paste0("(", warn.count,") THE categ.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))) -categ.legend.name <- categ[length(categ)] # if only categ1, then legend name of categ1, if length(categ) == 2, then legend name of categ2 -} -# categ.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, print = FALSE)$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 # -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"), call. = FALSE) -} -if(any(is.na(categ.color))){ -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) == 2, then colors for classes of categ2 -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]]) -data1$categ.color <- factor(data1$categ.color, labels = categ.color) -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) -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"), call. = FALSE) -}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]]))) -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) == 1){ -# 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) -categ.color <- rep(categ.color, length(levels(data1[, categ[categ.len]]))) -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, 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 COULD BE THE PROBLEM") -stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n"), call. = FALSE) -} -}else{ -categ.len <- length(categ) # if only categ1, then colors for classes of categ1, if length(categ) == 2, 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]]) -data1$categ.color <- factor(data1$categ.color, labels = categ.color) -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"), call. = FALSE) -}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]) # 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) -} -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, print = FALSE) -tempo2 <- fun_check(data = data1[, dot.categ], data.name = paste0(dot.categ, " COLUMN OF data1"), class = "factor", na.contain = TRUE, fun.name = function.name, print = FALSE) -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"), call. = FALSE) -} -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))){ -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"), call. = FALSE) -}else if( ! (all(dot.categ.class.order %in% levels(data1[, dot.categ])) & all(levels(data1[, dot.categ]) %in% dot.categ.class.order))){ -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"), call. = FALSE) -}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) == 1){ -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) == 1){ -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"), call. = FALSE) -}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"), call. = FALSE) -} -} -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.categ.legend.name)){ -dot.categ.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.categ.legend.name SETTING IS NULL -> ", dot.categ.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.categ.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, print = FALSE)$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) == 1){ -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 # -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"), call. = FALSE) -} -if(any(is.na(dot.color))){ -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(dot.color) > 1 & length(unique(data1[, dot.categ])) != length(dot.color)){ -tempo.cat <- paste0("ERROR IN ", function.name, "\ndot.color ARGUMENT IS NOT THE SAME LENGTH AS 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"), call. = FALSE) -}else if(length(dot.color) == 1 & length(dot.categ.class.order) > 1){ # to deal with single color -dot.color <- rep(dot.color, length(dot.categ.class.order)) -} -data1 <- data.frame(data1, dot.color = data1[, dot.categ]) -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") -dot.color <- as.character(unique(data1$dot.color[order(data1[, dot.categ])])) # reorder the dot.color character vector -if(length(dot.color) == 1 & 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"), call. = FALSE) -}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) == 2, 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]]) -data1$dot.color <- factor(data1$dot.color, labels = dot.color) -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) -}else if(length(dot.color) == 1 & ! all(dot.color == "same")){ -# 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) -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, 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 COULD BE THE PROBLEM") -stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n"), call. = FALSE) -} -# 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.categ.legend.name))){ -warn.count <- warn.count + 1 -tempo.warn <- paste0("(", warn.count,") dot.categ OR dot.categ.class.order OR dot.categ.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"), call. = FALSE) -} -if( ! is.null(dot.border.color)){ -tempo1 <- fun_check(data = dot.border.color, class = "vector", mode = "character", length = 1, fun.name = function.name, print = FALSE) -tempo2 <- fun_check(data = dot.border.color, class = "vector", typeof = "integer", double.as.integer.allowed = TRUE, length = 1, fun.name = function.name, print = FALSE) -if(tempo1$problem == FALSE & tempo2$problem == TRUE & ! (all(dot.border.color %in% colors() | grepl(pattern = "^#", dot.border.color)))){ # check that all strings of low.color start by # -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\nHERE IT IS: ", paste(unique(dot.border.color), collapse = " ")) -stop(paste0("\n\n================\n\n", tempo.cat, "\n\n================\n\n"), call. = FALSE) -}else if(tempo1$problem == TRUE & tempo2$problem == FALSE){ # convert integers into colors -dot.border.color <- fun_gg_palette(max(dot.border.color, na.rm = TRUE))[dot.border.color] -} -# end integer colors into gg_palette -} -# management of log scale -if(y.log != "no"){ -data1[, y] <- suppressWarnings(get(y.log)(data1[, y])) -} -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"), 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 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"), 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 -} -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 BOXS 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 -# end second round of checking and data preparation - - -# package checking -fun_pack(req.package = c("ggplot2"), lib.path = lib.path) -fun_pack(req.package = c("scales"), lib.path = lib.path) -# end package checking - - - -# main code -# na detection and removal (done now to be sure of the correct length of categ) -column.check <- c(y, categ, "categ.color", if( ! is.null(dot.color)){"dot.color"}, if( ! is.null(dot.color) & ! is.null(dot.categ)){if(dot.categ != ini.dot.categ){dot.categ}}, if( ! is.null(facet.categ)){facet.categ}) # dot.categ because can be a 3rd column of data1 -if(any(is.na(data1[, column.check]))){ -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]]))){ -warn.count <- warn.count + 1 -tempo.warn <- paste0("(", warn.count,") NA REMOVAL DUE TO COLUMN ", column.check[i2], " OF data1") -warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn))) -} -} -removed.row.nb <- unlist(lapply(lapply(c(data1[column.check]), FUN = is.na), FUN = which)) -removed.rows <- data1[removed.row.nb, ] -column.check <- column.check[ ! column.check == y] # remove y to keep quali columns -if(length(removed.row.nb) != 0){ -data1 <- data1[-removed.row.nb, ] -for(i3 in 1:length(column.check)){ -if(any( ! unique(removed.rows[, column.check[i3]]) %in% unique(data1[, column.check[i3]]))){ -warn.count <- warn.count + 1 -tempo.warn <- paste0("(", warn.count,") IN COLUMN ", column.check[i3], " OF data1, THE FOLLOWING CLASSES HAVE DISAPPEARED AFTER NA 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] == ini.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] == "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) == 1 & 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) == 1 & 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)) -} -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) -} -} -}else{ -removed.row.nb <- NULL -removed.rows <- NULL -} -# end na detection and removal (done now to be sure of the correct length of categ) - - -# y coordinates recovery (create ini.box.coord, dot.coord and modify data1) -if(length(categ) == 1){ -# 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]]) -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 = categ.legend.name, values = if(is.null(dot.color)){rep(NA, length(unique(data1[, categ[1]])))}else if(length(dot.color) == 1){rep(dot.color, length(unique(data1[, categ[1]])))}else{dot.color})) -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 boxs -assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "fill", name = categ.legend.name, values = if(length(categ.color) == 1){rep(categ.color, length(unique(data1[, categ[1]])))}else{categ.color})) -# end per box dots coordinates recovery -}else if(length(categ) == 2){ -# 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 boxs length(categ) == 1 -# 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))) -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 = categ.legend.name, values = if(is.null(dot.color)){rep(NA, length(unique(data1[, categ[2]])))}else if(length(dot.color) == 1){rep(dot.color, length(unique(data1[, categ[2]])))}else{dot.color})) -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 boxs -assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "fill", name = categ.legend.name, values = if(length(categ.color) == 1){rep(categ.color, length(unique(data1[, categ[2]])))}else{categ.color})) -# end per box dots coordinates recovery -}else{ -tempo.cat <- paste0("\n\n============\n\nINTERNAL CODE ERROR IN ", function.name, "\nCODE INCONSISTENCY 2\n\n============\n\n") -stop(tempo.cat) -} -tempo.graph.info.ini <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + ")))) -dot.coord <- tempo.graph.info.ini$data[[1]] -ini.box.coord <- tempo.graph.info.ini$data[[2]] -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), ], -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 -) # 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]) # avoid the renaming -} -if( ! is.null(facet.categ)){ -dot.coord <- data.frame(dot.coord, data1[order(data1$categ.check, data1[, y]), ][facet.categ]) # 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("\n\n================\n\nINTERNAL CODE ERROR IN ", function.name, "\nas.integer(dot.coord$PANEL) AND tempo.test MUST BE IDENTICAL. CODE HAS TO BE MODIFIED\n\n================\n\n") -stop(tempo.cat) -} -} -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]) # 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) -}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) == 2){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) == 2){"."}, -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 -))) # 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) == 1){ -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 -))) # 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) -} -} -if( ! (identical(dot.coord$y, dot.coord$y.check) & identical(dot.coord$group, dot.coord$categ.check))){ -tempo.cat <- paste0("\n\n================\n\nINTERNAL 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\n\n================\n\n") -stop(tempo.cat) -}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("\n\n================\n\nINTERNAL 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\n\n================\n\n") -stop(tempo.cat) -}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) -} -} -# 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) - - - - - - - - - - - - - -# stat output (will also serve for boxplot and mean display) -ini.box.coord <- ini.box.coord[order(ini.box.coord$group), ] -stat <- data.frame(MIN = ini.box.coord$ymin, QUART1 = ini.box.coord$lower, MEDIAN = ini.box.coord$middle, QUART3 = ini.box.coord$upper, MAX = ini.box.coord$ymax, NOTCHUPPER = ini.box.coord$notchupper, NOTCHLOWER = ini.box.coord$notchlower, OUTLIERS = ini.box.coord["outliers"], COLOR = ini.box.coord$fill, stringsAsFactors = TRUE) # ini.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" -tempo.mean <- tempo.mean[order(tempo.mean$BOX), ] -if( ! fun_comp_2d(ini.box.coord[c("PANEL", "group")], tempo.mean[c("PANEL", "BOX")])$identical.content){ -tempo.cat <- paste0("\n\n================\n\nINTERNAL CODE ERROR IN ", function.name, "\nini.box.coord[c(\"PANEL\", \"group\")] AND tempo.mean[c(\"PANEL\", \"BOX\")] MUST BE IDENTICAL. CODE HAS TO BE MODIFIED\n\n================\n\n") -stop(tempo.cat) -}else{ -stat <- data.frame(stat[c("MIN", "QUART1", "MEDIAN")], MEAN = tempo.mean$MEAN, stat[c("QUART3", "MAX", "NOTCHUPPER", "NOTCHLOWER", "OUTLIERS")], tempo.mean[colnames(tempo.mean) != "MEAN"], stat["COLOR"], stringsAsFactors = TRUE) # ini.box.coord["outliers"] written like this because it is a list -} -# end stat output (will also serve for boxplot and mean display) - - - - - -# ylim range -if(is.null(y.lim)){ -if(any(data1[, y] %in% c(Inf, -Inf))){ -warn.count <- warn.count + 1 -tempo.warn <- paste0("(", warn.count,") THE data1 ARGUMENT CONTAINS -Inf OR Inf VALUES IN THE y COLUMN, 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 <- range(data1[, y], 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 -}else if(y.log != "no"){ -y.lim <- get(y.log)(y.lim) -} -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"), call. = FALSE) -} -} -if(suppressWarnings(all(y.lim %in% c(Inf, -Inf)))){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " COMPUTED y.lim CONTAINS Inf VALUES, BECAUSE VALUES FROM data1 ARGUMENTS ARE NA OR Inf ONLY\n\n================\n\n") -stop(tempo.cat) -} -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))){ -tempo.cat <- paste0("\n\n============\n\nINTERNAL CODE ERROR IN ", function.name, "\nCODE INCONSISTENCY 4\n\n============\n\n") -stop(tempo.cat) -} -# 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 -tempo.just <- fun_gg_just(angle = text.angle, axis = ifelse(vertical == TRUE, "x", "y")) -# 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 -> 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){ -# BEWARE: 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")}, -panel.grid.major.y = if(vertical == TRUE){ggplot2::element_line(colour = "grey85")}else{NULL}, -axis.text.x = if(vertical == TRUE){ggplot2::element_text(angle = tempo.just$angle, hjust = tempo.just$hjust, vjust = tempo.just$vjust)}else{NULL}, -axis.text.y = if(vertical == TRUE){NULL}else{ggplot2::element_text(angle = tempo.just$angle, hjust = tempo.just$hjust, vjust = tempo.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 = tempo.just$angle, hjust = tempo.just$hjust, vjust = tempo.just$vjust)}else{NULL}, -axis.text.y = if(vertical == TRUE){NULL}else{ggplot2::element_text(angle = tempo.just$angle, hjust = tempo.just$hjust, vjust = tempo.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"), -panel.grid.major.y = ggplot2::element_line(colour = "grey85"), -panel.grid.minor.x = ggplot2::element_blank(), -panel.grid.minor.y = ggplot2::element_blank(), -strip.background = ggplot2::element_rect(fill = NA, colour = NA), -axis.text.x = if(vertical == TRUE){ggplot2::element_text(angle = tempo.just$angle, hjust = tempo.just$hjust, vjust = tempo.just$vjust)}else{NULL}, -axis.text.y = if(vertical == TRUE){NULL}else{ggplot2::element_text(angle = tempo.just$angle, hjust = tempo.just$hjust, vjust = tempo.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 - - - - -# x coordinates management (for random plotting and for stat display) -# boxs -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 = categ.legend.name, values = if(length(categ.color) == 1){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.disp when just box are plotted -box.coord <- box.coord[order(box.coord$group), ] -if(stat.disp.mean == TRUE){ # for mean display -if( ! identical(tempo.mean$BOX, box.coord$group)){ -tempo.cat <- paste0("\n\n============\n\nINTERNAL CODE ERROR IN ", function.name, "\ntempo.mean$BOX AND box.coord$group DO NOT HAVE THE SAME VALUE ORDER\n\n============\n\n") -stop(tempo.cat) -}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}) -for(i3 in tempo){ -names(tempo.mean)[names(tempo.mean) == i3] <- paste0(i3, ".mean") -} -box.coord <- data.frame(box.coord, tempo.mean) -warn.count <- warn.count + 1 -tempo.warn <- paste0("(", warn.count,") MEAN VALUES INSTEAD OF MEDIAN VALUES DISPLAYED") -warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn))) - -} -} -# 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(box.coord$group, stat$BOX)){ -tempo.cat <- paste0("\n\n================\n\nINTERNAL CODE ERROR IN ", function.name, "\n(box.coord$group AND stat$BOX) MUST BE IDENTICAL. CODE HAS TO BE MODIFIED\n\n================\n\n") -stop(tempo.cat) -}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$NOTCHUPPER < stat$QUART3 & stat$NOTCHLOWER > stat$QUART1) & 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 -# end boxs -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 boxs into the coord data.frame of the dots (in the column x.y). BEWARE: 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("\n\n================\n\nINTERNAL CODE ERROR IN ", function.name, "\nTHE merge() FUNCTION DID NOT RETURN A CORRECT dot.coord.rd1 DATA FRAME. CODE HAS TO BE MODIFIED\n\n================\n\n") -stop(tempo.cat) -} -set.seed(1) -sampled.dot.jitter <- if(nrow(dot.coord.rd1) == 1){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) # set the dot.jitter thanks to runif and dot.jitter range. Then, send the coord of the boxs into the coord data.frame of the dots (in the column x.y) -set.seed(NULL) -if(length(categ) == 1){ -tempo.data1 <- unique(data.frame(data1[categ[1]], group = as.integer(data1[, categ[1]]))) # 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) == 2){ -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 -))) # 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("\n\n============\n\nINTERNAL CODE ERROR IN ", function.name, "\nCODE INCONSISTENCY 6\n\n============\n\n") -stop(tempo.cat) -} -dot.coord.rd3 <- merge(dot.coord.rd2, tempo.data1, by = intersect("group", "group"), sort = FALSE) # send the factors of data1 into coord. BEWARE: 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("\n\n================\n\nINTERNAL CODE ERROR IN ", function.name, "\nTHE merge() FUNCTION DID NOT RETURN A CORRECT dot.coord.rd3 DATA FRAME. CODE HAS TO BE MODIFIED\n\n================\n\n") -stop(tempo.cat) -} -# 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 == 1){ -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("QUART1", "QUART1", "QUART3", "QUART3", "QUART1")])), 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 == 1){ -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("QUART1", "QUART1", "NOTCHLOWER", "MEDIAN", "NOTCHUPPER", "QUART3", "QUART3", "NOTCHUPPER", "MEDIAN", "NOTCHLOWER", "QUART1")])), 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., "Group1_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]) -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))), COLOR = c(t(stat[, c("COLOR", "COLOR", "COLOR", "COLOR", "COLOR")])), GROUP = c(t(stat[, c("BOX", "BOX", "BOX", "BOX", "BOX")])), stringsAsFactors = TRUE) -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 -)) -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 = QUART3, yend = MAX, 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 = QUART1, yend = MIN, 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 = MAX, yend = MAX, 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 = MIN, yend = MIN, 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 * 2, -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.categ.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. BEWARE: 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), -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, # BEWARE: 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), -binaxis = "y", -stackdir = "center", -fill = NA, -stroke = NA, -color = NA, -# BEWARE: 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.categ.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. BEWARE: 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.categ.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. BEWARE: 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(tempo.coord, FUN = nrow) == nrow(data1))) > if(is.null(dot.categ)){1}else{2}){ # if(is.null(dot.categ)){1}else{2} because 1 dotplot if dot.categ is NULL and 2 dotplots is not, with the second being a blank dotplot with wrong coordinates. Thus take the first in that situation -tempo.cat <- paste0("\n\n================\n\nINTERNAL CODE ERROR IN ", function.name, "\nMORE THAN ", if(is.null(dot.categ)){1}else{2}, " COMPARTMENT WITH NROW EQUAL TO nrow(data1) IN THE tempo.coord LIST (FOR TIDY DOT COORDINATES). CODE HAS TO BE MODIFIED\n\n================\n\n") -stop(tempo.cat) -}else{ -dot.coord.tidy1 <- tempo.coord[[which(sapply(tempo.coord, FUN = nrow) == nrow(data1))[1]]] # the second being a blank dotplot with wrong coordinates. Thus take the first whatever situation -} -tempo.box.coord <- merge(box.coord, unique(dot.coord[, c("PANEL", "group", categ)]), by = c("PANEL", "group"), sort = FALSE) # do not add dot.categ and tidy_group_coord here because the coordinates are for stats. Add the categ in box.coord. BEWARE: 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("\n\n================\n\nINTERNAL CODE ERROR IN ", function.name, "\nTHE merge() FUNCTION DID NOT RETURN A CORRECT tempo.box.coord DATA FRAME. CODE HAS TO BE MODIFIED\n\n================\n\n") -stop(tempo.cat) -} -dot.coord.tidy2 <- merge(dot.coord.tidy1, tempo.box.coord[c("fill", "PANEL", "group", "x", categ)], by = c("PANEL", "group"), sort = FALSE) # send the coord of the boxs into the coord data.frame of the dots (in the column x.y).BEWARE: 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 Group1 Group2 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("\n\n================\n\nINTERNAL CODE ERROR IN ", function.name, "\nTHE merge() FUNCTION DID NOT RETURN A CORRECT dot.coord.tidy2 DATA FRAME. CODE HAS TO BE MODIFIED\n\n================\n\n") -stop(tempo.cat) -} -# From here, check for dot.coord.tidy3 which wil be important for stat over the plot. BEWARE: dot.categ has nothing to do here for stat coordinates. Thus, not in tempo.data1 -if(length(categ) == 1){ -tempo.data1 <- unique(data.frame(data1[categ[1]], group = as.integer(data1[, categ[1]]))) # 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) == 2){ -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 -))) # 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("\n\n============\n\nINTERNAL CODE ERROR IN ", function.name, "\nCODE INCONSISTENCY 7\n\n============\n\n") -stop(tempo.cat) -} -dot.coord.tidy3 <- merge(dot.coord.tidy2, tempo.data1, by = intersect("group", "group"), sort = FALSE) # send the factors of data1 into coord. BEWARE: 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("\n\n================\n\nINTERNAL CODE ERROR IN ", function.name, "\nTHE merge() FUNCTION DID NOT RETURN A CORRECT dot.coord.tidy3 DATA FRAME. CODE HAS TO BE MODIFIED\n\n================\n\n") -stop(tempo.cat) -} -# end coordinates of tidy dots -} -} -# end dot display - - - -# boxplot display (if box.fill = FALSE, otherwise, already plotted above) -if(box.fill == TRUE){ -assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "fill", name = categ.legend.name, values = if(length(categ.color) == 1){rep(categ.color, length(unique(data1[, categ[length(categ)]])))}else{categ.color})) #, 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. BEWARE: 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 = categ.legend.name, values = rep(hsv(0, 0, 0, alpha = box.alpha), length(unique(data1[, categ[length(categ)]]))))) # , 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. BEWARE: 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 = QUART3, yend = MAX, 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 = QUART1, yend = MIN, 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 = MAX, yend = MAX, 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 = MIN, yend = MIN, 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 * 2, -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 = categ.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. BEWARE: 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 = categ.legend.name, values = if(length(categ.color) == 1){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()) == 0 & 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. BEWARE: 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()) == 0 & 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,") FROM FUNCTION ", function.name, ": 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))) -} -} -# 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.disp)){ -if(stat.disp == "top"){ -assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "text", x = stat$X, y = y.lim[2], label = if(stat.disp.mean == FALSE){fun_round(stat$MEDIAN, 2)}else{fun_round(stat$MEAN, 2)}, size = stat.size, color = "black", hjust = ifelse(vertical == TRUE, 0.5, 1.1), vjust = ifelse(vertical == TRUE, 1.1, 0.5))) # beware: 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.display") -}else if(stat.disp == "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) == 1){list(tempo.stat.ini$group, tempo.stat.ini$x.y, tempo.stat.ini[, categ[1]])}else if(length(categ) == 2){list(tempo.stat.ini$group, tempo.stat.ini$x.y, tempo.stat.ini[, categ[1]], tempo.stat.ini[, categ[2]])} ; names(x.env) <- if(length(categ) == 1){c("group", "x.y", categ[1])}else if(length(categ) == 2){c("group", "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) == 1){list(tempo.stat.ini$group, tempo.stat.ini$x.y, tempo.stat.ini[, categ[1]])}else if(length(categ) == 2){list(tempo.stat.ini$group, tempo.stat.ini$x.y, tempo.stat.ini[, categ[1]], tempo.stat.ini[, categ[2]])} ; names(x.env) <- if(length(categ) == 1){c("group", "x.y", categ[1])}else if(length(categ) == 2){c("group", "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$x), ], stat.coord1[order(stat.coord1$x.y), ], stat.coord2[order(stat.coord2$x.y), ]) # should be ok to use box.coord$x and stat.coord$x.y to assemble the two data frames because x coordinates of the boxs. Thus, we cannot have identical values -if( ! all(identical(round(stat.coord3$x, 9), round(stat.coord3$x.y, 9)))){ -tempo.cat <- paste0("\n\n================\n\nINTERNAL 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\n\n================\n\n") -stop(tempo.cat) -} -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), ] -text.coord <- text.coord[order(text.coord$x), ] # to be sure to have the two objects in the same order for x. BEWARE: 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(text.coord$x, box.coord$x)){ -tempo.cat <- paste0("\n\n============\n\nINTERNAL CODE ERROR IN ", function.name, "\ntext.coord AND box.coord DO NOT HAVE THE SAME x COLUMN CONTENT\n\n============\n\n") -stop(tempo.cat) -} -} -# 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.disp.mean == FALSE){ -tempo.log.high <- if(diff(y.lim) > 0){box.coord$middle >= 0}else{box.coord$middle < 0} -tempo.log.low <- if(diff(y.lim) > 0){box.coord$middle < 0}else{box.coord$middle >= 0} -}else{ -tempo.log.high <- if(diff(y.lim) > 0){box.coord$MEAN >= 0}else{box.coord$MEAN < 0} -tempo.log.low <- if(diff(y.lim) > 0){box.coord$MEAN < 0}else{box.coord$MEAN >= 0} -} -if(any(tempo.log.high) == TRUE){ -assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate( -geom = "text", -x = get(if(is.null(dot.color)){"box.coord"}else{"text.coord"})$x[tempo.log.high], # get(if(is.null(dot.color)){"box.coord"}else{"text.coord"}) for text just above error boxs or dots -y = get(if(is.null(dot.color)){"box.coord"}else{"text.coord"})[tempo.log.high, if(is.null(dot.color)){"middle"}else{"text.max.pos"}], -label = if(stat.disp.mean == FALSE){fun_round(box.coord$middle, 2)[tempo.log.high]}else{fun_round(box.coord$MEAN, 2)[tempo.log.high]}, -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) -)) # beware: no need of order() for labels because box.coord$x set the order -} -if(any(tempo.log.low) == TRUE){ -assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate( -geom = "text", -x = get(if(is.null(dot.color)){"box.coord"}else{"text.coord"})$x[tempo.log.low], # get(if(is.null(dot.color)){"box.coord"}else{"text.coord"}) for text just above error boxs or dots -y = get(if(is.null(dot.color)){"box.coord"}else{"text.coord"})[tempo.log.low, if(is.null(dot.color)){"middle"}else{"text.min.pos"}], -label = if(stat.disp.mean == FALSE){fun_round(box.coord$middle, 2)[tempo.log.low]}else{fun_round(box.coord$MEAN, 2)[tempo.log.low]}, -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) -)) # beware: no need of order() for labels because box.coord$x set the order -} -# end stat display -coord.names <- c(coord.names, "stat.display.positive", "stat.display.negative") -}else{ -tempo.cat <- paste0("\n\n============\n\nINTERNAL CODE ERROR IN ", function.name, "\nCODE INCONSISTENCY 9\n\n============\n\n") -stop(tempo.cat) -} -} -# end stat display - - - -# 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 -final.plot <- ggplot2::ggplot_build(eval(parse(text = paste(paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "), ' + if(vertical == TRUE){ggplot2::coord_cartesian(ylim = if(diff(y.lim) < 0){rev(y.lim)}else{y.lim})}else{ggplot2::coord_flip(ylim = y.lim)}')))) -tempo.coord <- 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))){ -tempo.cat <- paste0("\n\n============\n\nINTERNAL CODE ERROR IN ", function.name, "\nONLY NA IN tempo.coord$y$breaks\n\n============\n\n") -stop(tempo.cat) -} -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 -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 secondary ticks -# 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("\n\n============\n\nINTERNAL CODE ERROR IN ", function.name, "\nCODE INCONSISTENCY 10\n\n============\n\n") ; stop(tempo.cat)}, -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 taht it redraw new breaks # coord_cartesian(ylim = y.lim)) not used because bug -> y-axis label disappearance with y.lim decreasing # 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 - -} -# 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 = final.plot, fun.name = function.name, lib.path = lib.path) # get legend -} -# end legend management - - -# drawing -fin.plot <- suppressMessages(suppressWarnings(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))) -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)){ -suppressMessages(suppressWarnings(print(fin.plot))) -}else{ -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 - - - -# outputs -# 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)){ -warning(paste0("FROM ", function.name, " FUNCTION:\n\n", warn), call. = FALSE) # to recover the warning messages, use return = 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("\n\n================\n\nINTERNAL CODE ERROR IN ", function.name, "\nlength(tempo.output$data) AND length(coord.names) MUST BE IDENTICAL. CODE HAS TO BE MODIFIED\n\n================\n\n") -stop(tempo.cat) -}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, -stat = stat, -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 -) -return(output) # this plots the graph if return.ggplot is TRUE and if no assignment -} -# end outputs -# end main code -} - - - - - -# add return.ggplot = FALSE, from boxplot -# add facet from boxplot if data1 is a dataframe or list of length 1 -# error to fix: 1) accept integers as color, 2) fun_scale but xhuld be ok when importing the job from boxplot -# inter.tick x and y do not work: see labbook CL -# change the rule of categ -# add dot.size and line.size as list except if one value, idem color and geom and alpha -# http://www.sthda.com/english/articles/24-ggpubr-publication-ready-plots/76-add-p-values-and-significance-levels-to-ggplots/ -# geom_step. Add "hv" or "vh", see also https://stackoverflow.com/questions/42633374/how-to-get-a-step-plot-using-geom-step-with-different-colors-for-the-segments -# ERROR IN fun_scale(): lim ARGUMENT HAS A NULL RANGE (2 IDENTICAL VALUES) : remove this error if x.lim is not NULL range -> draw a line of dots -# add categ.order -# check that x and y are numeric ? -# add categ.class.order replacing levels(factor(data1[[i1]][, categ[[i1]]])), thus check data1[[i1]][, categ[[i1]]] -# for the length of ticks see ?unit in grid package and https://stackoverflow.com/questions/17311917/ggplot2-the-unit-of-size - -# Problem of 1: Ignoring unknown parameters: lineend -# problem of 2nd tick values not printed - - - -fun_gg_scatter <- function( -data1, -x, -y, -categ = NULL, -legend.name = NULL, -color = NULL, -geom = "geom_point", -alpha = 0.5, -dot.size = 2, -line.size = 0.5, -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, -text.size = 12, -title = "", -title.text.size = 12, -legend.show = TRUE, -legend.width = 0.5, -raster = FALSE, -raster.ratio = 1, -raster.threshold = NULL, -article = TRUE, -grid = FALSE, -return = FALSE, -plot = TRUE, -add = NULL, -warn.print = TRUE, -lib.path = NULL -){ -# AIM -# 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(y, categ)] will be removed before processing, with a warning (see below) -# ARGUMENTS -# data1: a dataframe compatible with ggplot2, or a list of data frames -# x: character string of the data1 column name for x-axis. If data1 is a list, then x must be a list of 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: character string of the data1 column name for y-axis. If data1 is a list, then y must be a list of 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: character string of the data1 column name for categories. If categ == NULL, no categories -> no legend displayed. If data1 is a list, then categ 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 -# legend.name: character string of the legend title. If legend.name == NULL and categ != 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 # add with other legends below -# color: vector of character string of the colors of categ arguments. If color == NULL, default colors of ggplot2. If non null, it can be either: (1) a single color string (all the dots of the corresponding data1 will have this color, whatever categ NULL or not), (2) if categ non null, a vector of string colors, one for each class of categ (each color will be associated according to the alphabetical order of categ classes), (3) if categ non null, a vector or factor of string colors, like if it was one of the column of data1 data frame (beware: a single color per class of categ and a single class of categ per color must be respected). 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. If data1 is a list, then color must be a list of character strings or integers, of same size as data1, with compartment 1 related to compartment 1 of data1, etc. Some of the compartments can be NULL. In that case, a different grey color will be used for each NULL compartment -# geom: character string of the kind of plot. Either "geom_point" (scatterplot), "geom_line" (coordinates plotted then line connection from the lowest to highest coordinates), "geom_path" (line connection respecting the order in data1), "geom_step" line connection respecting the order in data1 but drawn in steps), "geom_hline" (horizontal line) or "geom_vline" (vertical line). BEWARE: for "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"), (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. If data1 is a list, then geom must be a list of character strings, of same size as data1, with compartment 1 related to compartment 1 of data1, etc. -# alpha: numeric value (from 0 to 1) of transparency. If data1 is a list, then alpha must be a list of numeric value, of same size as data1, with compartment 1 related to compartment 1 of data1, etc. -# dot.size: numeric value of point size -# line.size: numeric value of line size -# x.lim: 2 numeric values for x-axis range. If NULL, range of x in data1. Order of the 2 values matters (for inverted axis). BEWARE: values of the x.lim must be already in the corresponding log if x.log argument is not "no" (see below) -# x.lab: a character string or expression for x-axis legend. If NULL, x 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 argument column of the data1 data frame will be log2 transformed and x-axis will be log2 scaled) or "log10" (values in the x argument column of the data1 data frame will be log10 transformed and x-axis will be log10 scaled) -# x.tick.nb: approximate number of desired label values on the x-axis (n argument of the fun_scale() function). If NULL, the number is managed by ggplot2 -# 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 * 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 bottom of x-axis -# x.text.angle: integer value of the text angle for the x-axis labels. 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.lim: 2 numeric values for y-axis range. If NULL, range of y in data1. Order of the 2 values matters (for inverted axis). BEWARE: values of the y.lim must be already in the corresponding log if y.log argument is not "no" (see below) -# y.lab: a character string or expression for y-axis legend. If NULL, y 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 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) -# y.tick.nb: approximate number of desired label values on the y-axis (n argument of the fun_scale() function). If NULL, the number is managed by ggplot2 -# 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.left.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 * y.left.extra.margin (e.g., abs(y.lim[2] - y.lim[1]) * y.left.extra.margin) to the left of y-axis -# y.right.extra.margin: idem as y.left.extra.margin but to the bottom of y-axis -# y.text.angle: integer value of the text angle for the y-axis labels. 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. -# text.size: numeric value of the size of the (1) axis numbers and axis legends and (2) texts in the graphic legend -# title: character string of the graph title -# title.text.size: numeric value of the title size (in points) -# legend.show: logical. Show legend? Ignored if categ argument is NULL, because this already generate no legend -# 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. If categ argument is NULL or legend.show argument is FALSE, an empty legend space is created, which can be useful when desiring graphs of exactly the same width, whatever they have legends or not. 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 -# raster: logical. Dots in raster mode? If FALSE, dots from each geom_point from geom argument are in vectorial mode (bigger pdf and long to display if millions of dots). If TRUE, dots from each geom_point from geom argument are in matricial mode (smaller pdf and easy display if millions of dots, but long 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 raster.threshold if non NULL -# raster.ratio: single numeric value indicating the height / width ratio of the graphic device used (for instance provided by the $dim of 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 from geom argument switch from vectorial mode to raster mode (see the raster argument). If any layer is raster, then raster.ratio argument is used to avoid an ellipsoid representation of the dots. Inactive the raster argument if non NULL -# article: logical. If TRUE, use a article theme (article like). If FALSE, use a classic related ggplot theme. Use the add argument (add = "+ggplot2::theme_classic()" for the exact classic ggplot theme -# grid: logical. Draw horizontal and vertical lines in the background to better read the values? Not considered if article == FALSE -# return: logical. Return the graph info? -# plot: logical. Plot the graphic? If FALSE and return argument is TRUE, graphical parameters and associated warnings are provided without plotting -# add: character string allowing to add more ggplot2 features (dots, lines, themes, facet, etc.). Ignored if NULL -# BEWARE: (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 -# warn.print: logical. Print warnings at the end of the execution? If TRUE, no print if no warning message generated -# 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 -# REQUIRED PACKAGES -# ggplot2 -# if raster plots are drawn (see the raster and raster.threshold arguments): -# Cairo -# grid -# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION -# fun_gg_empty_graph() -# fun_gg_palette() -# fun_gg_point_rast() -# fun_pack() -# fun_check() -# fun_round() -# fun_scale() -# fun_inter_ticks() -# RETURN -# a scatter plot is plot argument is TRUE -# a list of the graph info if return argument is TRUE: -# $data: the graphic info coordinates -# $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 -# $axes: the x-axis and y-axis info -# $warn: the warning messages. Use cat() for proper display. NULL if no warning -# EXAMPLES -# DEBUGGING -# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 10, 3), time = rnorm(1000, 10, 3), group1 = rep(c("A1", "A2"), 500)) ; obs2 <-data.frame(km = rnorm(1000, 15, 3), time = rnorm(1000, 15, 3), group2 = rep(c("G1", "G2"), 500)) ; 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") ; legend.name = NULL ; color = list(L1 = 4:5, L2 = 7:8) ; geom = list(L1 = "geom_point", L2 = "geom_point") ; alpha = list(L1 = 0.5, L2 = 0.5) ; dot.size = 3 ; line.size = 0.5 ; x.lim = NULL ; x.lab = "KM" ; x.log = "no" ; x.tick.nb = 10 ; x.second.tick.nb = 1 ; x.left.extra.margin = 0 ; x.right.extra.margin = 0 ; y.lim = c(1, 25) ; y.lab = "TIME (s)" ; y.log = "no" ; y.tick.nb = 5 ; y.second.tick.nb = 2 ; y.top.extra.margin = 0 ; y.bottom.extra.margin = 0 ; x.include.zero = TRUE ; y.include.zero = TRUE ; x.text.angle = 0 ; y.text.angle = 0 ; text.size = 12 ; title = "" ; title.text.size = 8 ; legend.show = TRUE ; legend.width = 0.5 ; article = FALSE ; grid = FALSE ; raster = TRUE ; raster.ratio = 1 ; raster.threshold = NULL ; return = FALSE ; plot = TRUE ; add = NULL ; warn.print = TRUE ; lib.path = NULL -# data1 <- list(L1 = data.frame(a = 1:6, b = (1:6)^2, group = c("A", "A", "A", "B", "B", "B")), L2 = data.frame(a = (1:6)*2, b = ((1:6)^2)*2, group = c("A1", "A1", "A1", "B1", "B1", "B1")), L3 = data.frame(a = (1:6)*3, b = ((1:6)^2)*3, group3 = c("A4", "A5", "A6", "A7", "B4", "B5"))) ; data1$L1$a[3] <- NA ; data1$L1$group[5] <- NA ; data1$L3$group3[4] <- NA ; data1 ; x = list(L1 = names(data1$L1)[1], L2 = names(data1$L2)[1], L3 = NULL) ; y = list(L1 = names(data1$L1)[2], L2 = names(data1$L2)[2], L3 = "a") ; categ = list(L1 = "group", L2 = NULL, L3 = NULL) ; legend.name = NULL ; color = NULL ; geom = list(L1 = "geom_point", L2 = "geom_point", L3 = "geom_hline") ; alpha = list(L1 = 0.5, L2 = 0.5, L3 = 0.5) ; dot.size = 1 ; line.size = 0.5 ; x.lim = c(14, 4) ; x.lab = NULL ; x.log = "log10" ; x.tick.nb = 10 ; x.second.tick.nb = 4 ; x.left.extra.margin = 0 ; x.right.extra.margin = 0 ; y.lim = c(60, 5) ; y.lab = NULL ; y.log = "log10" ; y.tick.nb = 10 ; y.second.tick.nb = 2 ; y.top.extra.margin = 0 ; y.bottom.extra.margin = 0 ; x.include.zero = TRUE ; y.include.zero = TRUE ; x.text.angle = 0 ; y.text.angle = 0 ; text.size = 12 ; title = "" ; title.text.size = 8 ; legend.show = TRUE ; legend.width = 0.5 ; article = TRUE ; grid = FALSE ; raster = FALSE ; raster.ratio = 1 ; raster.threshold = NULL ; return = TRUE ; plot = TRUE ; add = NULL ; warn.print = TRUE ; lib.path = NULL -# data1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; data1 ; x = "km"; y = "time"; categ = "group"; legend.name = NULL ; color = NULL ; geom = "geom_point"; alpha = 0.1 ; dot.size = 1 ; line.size = 0.5 ; x.lim = c(1,10) ; x.lab = NULL ; x.log = "log10" ; x.tick.nb = 10 ; x.second.tick.nb = 4 ; x.left.extra.margin = 0 ; x.right.extra.margin = 0 ; y.lim = NULL ; y.lab = expression(paste("TIME (", 10^-20, " s)")) ; y.log = "log10" ; y.tick.nb = 10 ; y.second.tick.nb = 2 ; y.top.extra.margin = 0 ; y.bottom.extra.margin = 0 ; x.include.zero = TRUE ; y.include.zero = TRUE ; x.text.angle = 0 ; y.text.angle = 0 ; text.size = 12 ; title = "" ; title.text.size = 8 ; legend.show = TRUE ; legend.width = 0.5 ; article = FALSE ; grid = FALSE ; raster = FALSE ; raster.ratio = 1 ; raster.threshold = NULL ; return = FALSE ; plot = TRUE ; add = NULL ; warn.print = TRUE ; lib.path = NULL -# function name -function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()") -# 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" -) -for(i1 in req.function){ -if(length(find(i1, mode = "function")) == 0){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED ", i1, "() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n") -stop(tempo.cat) -} -} -# end required function checking -# reserved words to avoid bugs (used in this function) -reserved.words <- c("fake_x", "fake_y", "fake_categ", "color") -# end reserved words to avoid bugs (used in this function) -# primary argument 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$fun.name)) -tempo1 <- fun_check(data = data1, class = "data.frame", na.contain = TRUE, fun.name = function.name, print = FALSE) -tempo2 <- fun_check(data = data1, class = "list", na.contain = TRUE, fun.name = function.name, print = FALSE) -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, print = FALSE) -tempo2 <- fun_check(data = x, class = "list", na.contain = TRUE, fun.name = function.name, print = FALSE) -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) -} -} -if( ! is.null(y)){ -tempo1 <- fun_check(data = y, class = "vector", mode = "character", na.contain = TRUE, length = 1, fun.name = function.name, print = FALSE) -tempo2 <- fun_check(data = y, class = "list", na.contain = TRUE, fun.name = function.name, print = FALSE) -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) -} -} -if( ! is.null(categ)){ -tempo1 <- fun_check(data = categ, class = "vector", mode = "character", na.contain = TRUE, length = 1, fun.name = function.name, print = FALSE) -tempo2 <- fun_check(data = categ, class = "list", na.contain = TRUE, fun.name = function.name, print = FALSE) -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) -} -} -if( ! is.null(legend.name)){ -tempo1 <- fun_check(data = legend.name, class = "vector", mode = "character", na.contain = TRUE, length = 1, fun.name = function.name, print = FALSE) -tempo2 <- fun_check(data = legend.name, class = "list", na.contain = TRUE, fun.name = function.name, print = FALSE) -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) -} -} -if( ! is.null(color)){ -tempo1 <- fun_check(data = color, class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name, print = FALSE) -tempo2 <- fun_check(data = color, class = "list", na.contain = TRUE, fun.name = function.name, print = FALSE) -if(tempo1$problem == TRUE & tempo2$problem == TRUE){ -tempo.cat <- paste0("ERROR IN ", function.name, ": color ARGUMENT MUST BE A VECTOR OF CHARACTER STRING OR A LIST OF CHARACTER VECTORS") -text.check <- c(text.check, tempo.cat) -arg.check <- c(arg.check, TRUE) -} -} -if( ! is.null(geom)){ -tempo1 <- fun_check(data = geom, class = "vector", mode = "character", na.contain = TRUE, length = 1, fun.name = function.name, print = FALSE) -tempo2 <- fun_check(data = geom, class = "list", na.contain = TRUE, fun.name = function.name, print = FALSE) -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 = alpha, prop = TRUE, length = 1, fun.name = function.name, print = FALSE) -tempo2 <- fun_check(data = alpha, class = "list", na.contain = TRUE, fun.name = function.name, print = FALSE) -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) -} -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 = line.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee) -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) -} -} -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) -} -} -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) -} -} -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) -} -} -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) -} -} -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) -} -} -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) -} -} -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) -} -} -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 = 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) -} -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) -} -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) -tempo <- fun_check(data = return, 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) -if( ! is.null(add)){ -tempo <- fun_check(data = add, class = "vector", mode = "character", 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) -} -} -} -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.2/r_debugging_tools-v1.2.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 primary argument checking - - - - - - - - -# second round of checking and data preparation -# check list lengths (and names of data1 compartments if non name present) -warn <- NULL -warn.count <- 0 -if(all(class(data1) == "list")){ -if(length(data1) > 6){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": data1 ARGUMENT MUST BE A LIST OF 6 DATA FRAMES MAXIMUM (6 OVERLAYS MAX)\n\n================\n\n") -stop(tempo.cat, 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("\n\n================\n\nERROR IN ", function.name, ": x ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -} -}else{ -x <- vector("list", length(data1)) -} -if( ! is.null(y)){ -if( ! (all(class(y) == "list") & length(data1) == length(y))){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": y ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -} -}else{ -y <- vector("list", length(data1)) -} -if( ! is.null(categ)){ -if( ! (all(class(categ) == "list") & length(data1) == length(categ))){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": categ ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -} -} -if( ! is.null(legend.name)){ -if( ! (all(class(legend.name) == "list") & length(data1) == length(legend.name))){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": legend.name ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -} -} -if( ! is.null(color)){ -if( ! (all(class(color) == "list") & length(data1) == length(color))){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": color ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -} -} -if( ! (all(class(geom) == "list") & length(data1) == length(geom))){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": geom ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -} -if( ! (all(class(alpha) == "list") & length(data1) == length(alpha))){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": alpha ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -} -} -# end check list lengths (and names of data1 compartments if non name present) -# conversion into lists -if(all(is.data.frame(data1))){ -data1 <- list(L1 = data1) -if(all(class(x) == "list")){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": x ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -}else{ -x <- list(L1 = x) -} -if(all(class(y) == "list")){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": y ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -}else{ -y <- list(L1 = y) -} -if( ! is.null(categ)){ -if(all(class(categ) == "list")){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": categ ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -}else{ -categ <- list(L1 = categ) -} -} -if( ! is.null(legend.name)){ -if(all(class(legend.name) == "list")){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": legend.name ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -}else{ -legend.name <- list(L1 = legend.name) -} -} -if( ! is.null(color)){ -if(all(class(color) == "list")){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": color ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -}else{ -color <- list(L1 = color) -} -} -if(all(class(geom) == "list")){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": geom ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -}else{ -geom <- list(L1 = geom) -} -if(all(class(alpha) == "list")){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": alpha ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -}else{ -alpha <- list(L1 = alpha) -} -}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("\n\n================\n\nERROR IN ", function.name, ": data1 ARGUMENT MUST BE A DATA FRAME OR A LIST OF DATA FRAMES\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -} -# data, x, y, geom, alpha are list now -# if non NULL, categ, legend.name, color are list now -# end conversion into lists -# 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("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ": color ARGUMENT CANNOT CONTAIN NA\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -} -tempo.check.color <- c(tempo.check.color, fun_check(data = color[[i1]], data.name = ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), class = "integer", double.as.integer.allowed = TRUE, na.contain = TRUE, fun.name = function.name, print = FALSE)$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 - - -# second round of argument checking -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 -removed.rows <- vector("list", length = length(data1)) # to report NA removal -for(i1 in 1:length(data1)){ -tempo <- fun_check(data = data1[[i1]], data.name = ifelse(length(data1) == 1, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), class = "data.frame", na.contain = TRUE, fun.name = function.name) ; eval(ee) -# 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("\n\n================\n\nERROR IN ", function.name, ": COLUMN NAMES OF ", ifelse(length(data1) == 1, "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\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -} -# end reserved word checking -# check of geom now because required for y argument -tempo <- fun_check(data = geom[[i1]], data.name = ifelse(length(geom) == 1, "geom", paste0("geom NUMBER ", i1)), options = c("geom_point", "geom_line", "geom_path", "geom_step", "geom_hline", "geom_vline"), length = 1, fun.name = function.name) ; eval(ee) -# end check of geom now because required for y argument -if(is.null(x[[i1]])){ -if(all(geom[[i1]] != "geom_hline")){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(x) == 1, "x", paste0("ELEMENT ", i1, " OF x ARGUMENT")), " IN ", ifelse(length(data1) == 1, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ": x ARGUMENT CANNOT BE NULL EXCEPT IF ", ifelse(length(geom) == 1, "x", paste0("geom NUMBER ", i1)), " ARGUMENT IS \"geom_hline\"\nHERE geom ARGUMENT IS: ", paste(geom[[i1]], collapse = " "), "\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -}else{ -x[[i1]] <- "fake_x" -data1[[i1]] <- cbind(data1[[i1]], fake_x = NA) -data1[[i1]][, "fake_x"] <- as.numeric(data1[[i1]][, "fake_x"]) -warn.count <- warn.count + 1 -tempo.warn <- paste0("(", warn.count,") NULL ", ifelse(length(x) == 1, "x", paste0("ELEMENT ", i1, " OF x")), " ARGUMENT ASSOCIATED TO ", ifelse(length(geom) == 1, "geom", paste0("geom NUMBER ", i1)), " ARGUMENT ", geom[[i1]], " -> FAKE COLUMN ADDED TO DATA FRAME ", ifelse(length(data1) == 1, "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("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(x) == 1, "x", paste0("ELEMENT ", i1, " OF x ARGUMENT")), " IN ", ifelse(length(data1) == 1, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ": x ARGUMENT MUST BE NULL IF ", ifelse(length(geom) == 1, "geom", paste0("geom NUMBER ", i1)), " ARGUMENT IS \"geom_hline\"\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -} -tempo <- fun_check(data = x[[i1]], data.name = ifelse(length(x) == 1, "x", paste0("ELEMENT ", i1, " OF x ARGUMENT")), class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee) -} -if(is.null(y[[i1]])){ -if(all(geom[[i1]] != "geom_vline")){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(y) == 1, "y", paste0("ELEMENT ", i1, " OF y ARGUMENT")), " IN ", ifelse(length(data1) == 1, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ": y ARGUMENT CANNOT BE NULL EXCEPT IF ", ifelse(length(geom) == 1, "y", paste0("geom NUMBER ", i1)), " ARGUMENT IS \"geom_vline\"\nHERE geom ARGUMENT IS: ", paste(geom[[i1]], collapse = " "), "\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -}else{ -y[[i1]] <- "fake_y" -data1[[i1]] <- cbind(data1[[i1]], fake_y = NA) -data1[[i1]][, "fake_y"] <- as.numeric(data1[[i1]][, "fake_y"]) -warn.count <- warn.count + 1 -tempo.warn <- paste0("(", warn.count,") NULL ", ifelse(length(y) == 1, "y", paste0("ELEMENT ", i1, " OF y")), " ARGUMENT ASSOCIATED TO ", ifelse(length(geom) == 1, "geom", paste0("geom NUMBER ", i1)), " ARGUMENT ", geom[[i1]], " -> FAKE COLUMN ADDED TO DATA FRAME ", ifelse(length(data1) == 1, "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("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(y) == 1, "y", paste0("ELEMENT ", i1, " OF y ARGUMENT")), " IN ", ifelse(length(data1) == 1, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ": y ARGUMENT MUST BE NULL IF ", ifelse(length(geom) == 1, "geom", paste0("geom NUMBER ", i1)), " ARGUMENT IS \"geom_vline\"\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -} -tempo <- fun_check(data = y[[i1]], data.name = ifelse(length(y) == 1, "y", paste0("ELEMENT ", i1, " OF y ARGUMENT")), class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee) -} -if( ! (x[[i1]] %in% names(data1[[i1]]))){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(x) == 1, "x", paste0("ELEMENT ", i1, " OF x")), " ARGUMENT MUST BE A COLUMN NAME OF ", ifelse(length(data1) == 1, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), "\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -} -if( ! (y[[i1]] %in% names(data1[[i1]]))){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(y) == 1, "y", paste0("ELEMENT ", i1, " OF y")), " ARGUMENT MUST BE A COLUMN NAME OF ", ifelse(length(data1) == 1, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), "\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -} -# na detection and removal (done now to be sure of the correct length of categ) -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("\n\n============\n\nERROR 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, " \n\n============\n\n") -stop(tempo.cat, call. = FALSE) -} -if(any(is.na(data1[[i1]][, c(if(x[[i1]] == "fake_x"){NULL}else{x[[i1]]}, if(y[[i1]] == "fake_y"){NULL}else{y[[i1]]})]))){ -tempo.removed.row.nb <- unlist(lapply(lapply(c(data1[[i1]][c(if(x[[i1]] == "fake_x"){NULL}else{x[[i1]]}, if(y[[i1]] == "fake_y"){NULL}else{y[[i1]]})]), FUN = is.na), FUN = which)) -removed.row.nb[[i1]] <- c(removed.row.nb[[i1]], tempo.removed.row.nb) -# report of removed rows will be performed at the very end -data1[[i1]] <- data1[[i1]][-tempo.removed.row.nb, ] -warn.count <- warn.count + 1 -tempo.warn <- paste0("(", warn.count,") NA DETECTED IN COLUMN ", if(x[[i1]] == "fake_x"){""}else{ifelse(length(x) == 1, "x", paste0("ELEMENT ", i1, " OF x ARGUMENT"))}, if(x[[i1]] != "fake_x" & y[[i1]] != "fake_y"){" AND "}, if(y[[i1]] == "fake_y"){""}else{ifelse(length(y) == 1, "y", paste0("ELEMENT ", i1, " OF y ARGUMENT"))}, " IN ", ifelse(length(data1) == 1, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ". CORRESPONDING ROWS HAVE BEEN REMOVED (SEE $removed.row.nb AND $removed.rows)") -warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn))) -} -# end na detection and removal (done now to be sure of the correct length of categ) -tempo <- fun_check(data = data1[[i1]][, x[[i1]]], data.name = ifelse(length(x) == 1, "x OF data1 ARGUMENT", paste0("ELEMENT ", i1, " OF x ARGUMENT", " IN DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), class = "vector", mode = "numeric", na.contain = ifelse(x[[i1]] == "fake_x", TRUE, FALSE), fun.name = function.name) ; eval(ee) -tempo <- fun_check(data = data1[[i1]][, y[[i1]]], data.name = ifelse(length(y) == 1, "y OF data1 ARGUMENT", paste0("ELEMENT ", i1, " OF y ARGUMENT", " IN DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), class = "vector", mode = "numeric", na.contain = ifelse(y[[i1]] == "fake_y", TRUE, FALSE), fun.name = function.name) ; eval(ee) -if(( ! is.null(categ)) & ( ! is.null(categ[[i1]]))){ # if categ[[i1]] = NULL, fake_categ will be created later on -tempo <- fun_check(data = categ[[i1]], data.name = ifelse(length(categ) == 1, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")),, class = "vector", mode = "character", length = 1, fun.name = function.name) -if( ! (categ[[i1]] %in% names(data1[[i1]]))){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(categ) == 1, "categ", paste0("ELEMENT ", i1, " OF categ")), " ARGUMENT MUST BE A COLUMN NAME OF ", ifelse(length(data1) == 1, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), "\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -} -# na detection and removal (done now to be sure of the correct length of categ) -if(any(is.na(data1[[i1]][, categ[[i1]]]))){ -tempo.removed.row.nb <- unlist(lapply(lapply(c(data1[[i1]][categ[[i1]]]), FUN = is.na), FUN = which)) -removed.row.nb[[i1]] <- c(removed.row.nb[[i1]], tempo.removed.row.nb) -# report of removed rows will be performed at the very end -data1[[i1]] <- data1[[i1]][-tempo.removed.row.nb, ] -warn.count <- warn.count + 1 -tempo.warn <- paste0("(", warn.count,") IN ", ifelse(length(categ) == 1, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1) == 1, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ", THE CATEGORY COLUMN:\n", paste(categ[[i1]], collapse = " "), "\nCONTAINS NA") -warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn))) -} -# end na detection and removal (done now to be sure of the correct length of categ) -tempo1 <- fun_check(data = data1[[i1]][, categ[[i1]]], data.name = ifelse(length(categ) == 1, "categ OF data1 ARGUMENT", paste0("ELEMENT ", i1, " OF categ ARGUMENT IN DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), class = "vector", mode = "character", na.contain = FALSE, fun.name = function.name, print = FALSE) -tempo2 <- fun_check(data = data1[[i1]][, categ[[i1]]], data.name = ifelse(length(categ) == 1, "categ OF data1 ARGUMENT", paste0("ELEMENT ", i1, " OF categ ARGUMENT IN DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), class = "factor", na.contain = FALSE, fun.name = function.name, print = FALSE) -if(tempo1$problem == TRUE & tempo2$problem == TRUE){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(categ) == 1, "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\n\n================\n\n") -stop(tempo.cat, 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) == 1, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1) == 1, "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))) - -} -# OK: all the non NULL categ columns of data1 are factors from here -if(geom[[i1]] == "geom_vline" | geom[[i1]] == "geom_hline"){ -if(length(unique(data1[[i1]][, categ[[i1]]])) != nrow(data1[[i1]])){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(geom) == 1, "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) == 1, "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)\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -} -} -}else if(( ! is.null(categ)) & is.null(categ[[i1]])){ # if categ[[i1]] = NULL, fake_categ will be created. BEWARE: 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]]) and 1 is ok -> single color for data1[[i1]] -warn.count <- warn.count + 1 -tempo.warn <- paste0("(", warn.count,") NULL ", ifelse(length(categ) == 1, "categ", paste0("ELEMENT ", i1, " OF categ")), " ARGUMENT BUT CORRESPONDING COLORS IN ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " 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]] <- NULL # will provide a single color below -} -categ[[i1]] <- "fake_categ" -data1[[i1]] <- cbind(data1[[i1]], fake_categ = "") -# 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) == 1, "categ", paste0("ELEMENT ", i1, " OF categ")), " ARGUMENT -> FOR DATA FRAME ", ifelse(length(data1) == 1, "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))) -} -if( ! is.null(legend.name[[i1]])){ -tempo <- fun_check(data = legend.name[[i1]], data.name = ifelse(length(legend.name) == 1, "legend.name", paste0("legend.name NUMBER ", i1)),, class = "vector", mode = "character", length = 1, fun.name = function.name) -} -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) == 1, "color", paste0("color NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "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) == 1, "color", paste0("color NUMBER ", i1)), class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name, print = FALSE) -tempo2 <- fun_check(data = color[[i1]], data.name = ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), class = "factor", na.contain = TRUE, fun.name = function.name, print = FALSE) -if(tempo1$problem == TRUE & tempo2$problem == TRUE){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " MUST BE A FACTOR OR CHARACTER VECTOR OR INTEGER VECTOR\n\n================\n\n") # integer possible because dealt above -stop(tempo.cat, 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("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # AND/OR COLOR NAMES GIVEN BY colors(): ", paste(unique(color[[i1]]), collapse = " "), "\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -} -if(any(is.na(color[[i1]]))){ -warn.count <- warn.count + 1 -tempo.warn <- paste0("(", warn.count,") IN ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 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("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT MUST BE A SINGLE COLOR IF categ IS NULL\n\n================\n\n") -stop(tempo.cat, 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("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT MUST BE A SINGLE COLOR IF ", ifelse(length(categ) == 1, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IS NULL\n\n================\n\n") -stop(tempo.cat, 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) == 1, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1) == 1, "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]]) -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("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT HAS THE LENGTH OF ", ifelse(length(categ) == 1, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1) == 1, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), " COLUMN VALUES\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"), "\n\n================\n\n") -stop(tempo.cat, 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) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT HAS THE LENGTH OF ", ifelse(length(categ) == 1, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1) == 1, "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]]) == 1){ -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) == 1, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1) == 1, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), ", COLOR HAS LENGTH 1 MEANING THAT ALL THE DIFFERENT CLASSES OF ", ifelse(length(categ) == 1, "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("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT MUST BE (1) LENGTH 1, OR (2) THE LENGTH OF ", ifelse(length(categ) == 1, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1) == 1, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i1, " OF data1 ARGUMENT")), " COLUMN VALUES, OR (3) THE LENGTH OF THE CLASSES IN THIS COLUMN. HERE 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]]])), "\n\n================\n\n") -stop(tempo.cat, 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(color) == 1, "color", paste0("color NUMBER ", i1)), prop = TRUE, length = 1, fun.name = function.name) ; eval(ee) -# management of log scale -if(x.log != "no"){ -data1[[i1]][, x[[i1]]] <- suppressWarnings(get(x.log)(data1[[i1]][, x[[i1]]])) -} -if(y.log != "no"){ -data1[[i1]][, y[[i1]]] <- suppressWarnings(get(y.log)(data1[[i1]][, y[[i1]]])) -} -# end management of log scale -} -if(length(data1) > 1){ -if(length(unique(unlist(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))) > 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("\n\n================\n\nERROR IN ", function.name, ": geom ARGUMENT CANNOT HAVE MORE THAN THREE \"geom_point\" ELEMENTS\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -}else if(length(geom) - sum(geom %in% "geom_point") > 3){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": geom ARGUMENT CANNOT HAVE MORE THAN THREE LINE ELEMENTS\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -} -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"), 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 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"), 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 -} -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"), 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 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"), 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 management of log scale -if( ! is.null(add)){ -if( ! grepl(pattern = "^\\+", add)){ # check that the add string start by + -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": add ARGUMENT MUST START WITH \"+\": ", paste(unique(add), collapse = " "), "\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -}else if( ! grepl(pattern = "ggplot2::", add)){ # -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": add ARGUMENT MUST CONTAIN \"ggplot2::\" IN FRONT OF EACH GGPLOT2 FUNCTION: ", paste(unique(add), collapse = " "), "\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -}else if( ! grepl(pattern = ")$", add)){ # check that the add string finished by ) -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": add ARGUMENT MUST FINISH BY \")\": ", paste(unique(add), collapse = " "), "\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -} -} -# end second round of argument checking -# end second round of checking and data preparation - - - - - -# package checking -fun_pack(req.package = c("ggplot2", "gridExtra"), 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) -} -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"), call. = FALSE) -} -} -if(suppressWarnings(all(x.lim %in% c(Inf, -Inf)))){ # happen when x is only NULL -if(all(unlist(geom) == "geom_vline")){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " NOT POSSIBLE TO ONLY DRAW geom_vline KIND OF LINES IF x.lim ARGUMENT IS SET TO NULL, SINCE NO X-AXIS DEFINED (", ifelse(length(x) == 1, "x", paste0("ELEMENT ", i1, " OF x")), " ARGUMENT MUST BE NULL FOR THESE KIND OF LINES)\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -}else{ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " x.lim ARGUMENT MADE OF NA, -Inf OR Inf ONLY: ", paste(x.lim, collapse = " "), "\n\n================\n\n") -stop(tempo.cat, 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("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 3\n\n============\n\n") -stop(tempo.cat, 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) -} -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"), 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("\n\n================\n\nERROR IN ", function.name, " NOT POSSIBLE TO ONLY DRAW geom_vline KIND OF LINES IF y.lim ARGUMENT IS SET TO NULL, SINCE NO Y-AXIS DEFINED (", ifelse(length(y) == 1, "y", paste0("ELEMENT ", i1, " OF y")), " ARGUMENT MUST BE NULL FOR THESE KIND OF LINES)\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -}else{ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " y.lim ARGUMENT MADE OF NA, -Inf OR Inf ONLY: ", paste(y.lim, collapse = " "), "\n\n================\n\n") -stop(tempo.cat, 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("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 4\n\n============\n\n") -stop(tempo.cat, 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 = "") -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))) -} -# end create a fake categ if NULL to deal with legend display - - - - -# vector of color with length as in 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(i3 in 1:length(data1)){ -color[[i3]] <- tempo.color[(1:length.categ.list[[i3]]) + tempo.count] -tempo.count <- tempo.count + length.categ.list[[i3]] -warn.count <- warn.count + 1 -tempo.warn <- paste0("(", warn.count,") NULL color ARGUMENT -> COLORS RESPECTIVELY ATTRIBUTED TO EACH CLASS OF ", ifelse(length(categ) == 1, "categ", paste0("ELEMENT ", i3, " OF categ ARGUMENT")), " (", categ[[i3]], ") IN ", ifelse(length(data1) == 1, "data1 ARGUMENT", paste0("DATA FRAME NUMBER ", i3, " OF data1 ARGUMENT")), ":\n", paste(color[[i3]], collapse = " "), "\n", paste(if(all(levels(data1[[i3]][, categ[[i3]]]) == "")){'\"\"'}else{levels(data1[[i3]][, categ[[i3]]])}, collapse = " ")) -warn <- paste0(ifelse(is.null(warn), tempo.warn, paste0(warn, "\n\n", tempo.warn))) -} -} -# end vector of color with length as in data1 - - - - -# 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("\n\n================\n\nERROR IN ", function.name, " LAST CHECK: ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT MUST HAVE THE LENGTH OF LEVELS OF ", ifelse(length(categ) == 1, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1) == 1, "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]]])), "\n\n================\n\n") -stop(tempo.cat, call. = FALSE) -}else if(categ[[i1]] == "fake_categ" & length(color[[i1]]) != 1){ -tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " LAST CHECK: ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT MUST HAVE LENGTH 1 WHEN ", ifelse(length(categ) == 1, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IS NULL\nHERE IT IS COLOR LENGTH ", length(color[[i1]]), "\n\n================\n\n") -stop(tempo.cat, 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, ]) -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("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 5\n\n============\n\n") -stop(tempo.cat, 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) -} -data1[[i1]] <- final.data.frame -geom[[i1]] <- "geom_line" -if(length(color[[i1]]) == 1){ -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("\n\n================\n\nERROR IN ", function.name, " geom_hline AND geom_vline CONVERSION TO FIT THE XLIM AND YLIM LIMITS OF THE DATA: ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT MUST HAVE THE LENGTH OF LEVELS OF ", ifelse(length(categ) == 1, "categ", paste0("ELEMENT ", i1, " OF categ ARGUMENT")), " IN ", ifelse(length(data1) == 1, "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]]])), "\n\n================\n\n") -stop(tempo.cat, 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) == 1, "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), ggplot2::ggplot()) -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, axis = "x") -y.tempo.just <- fun_gg_just(angle = y.text.angle, axis = "y") -# 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 -> INTERNAL GGPLOT2 THEME FUNCTIONS theme() AND theme_classic() HAVE BEEN INACTIVATED, TO BE USED BY THE USER. -\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){ -# BEWARE: 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 = "grey75"), -panel.grid.major.y = ggplot2::element_line(colour = "grey75"), -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 = "grey75"), -panel.grid.major.y = ggplot2::element_line(colour = "grey75"), -panel.grid.minor.x = ggplot2::element_blank(), -panel.grid.minor.y = ggplot2::element_blank(), -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 - -# add categ.class.order replacing levels(factor(data1[[i1]][, categ[[i1]]])), thus check data1[[i1]][, categ[[i1]]] - -# 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.alpha <- vector(mode = "list", length = 6) # order of the legend -lg.alpha <- lapply(lg.alpha, as.numeric) # alpha of the legend -for(i1 in 1:length(data1)){ -if(geom[[i1]] == "geom_point"){ -point.count <- point.count + 1 -if(point.count == 1){ -fin.lg.disp[[1]] <- legend.disp[[point.count + line.count]] -lg.order[[1]] <- point.count + line.count -lg.color[[1]] <- color[[i1]] -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]]), size = dot.size, color = color[[i1]][i5], alpha = alpha[[i1]])) # beware: 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.) -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, guide = ggplot2::guide_legend(override.aes = list(colour = color[[i1]], linetype = 0)))) # 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) -} -if(point.count == 2){ -fin.lg.disp[[2]] <- legend.disp[[point.count + line.count]] -lg.order[[2]] <- point.count + line.count -lg.color[[2]] <- color[[i1]] -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, color = color[[i1]][i5], alpha = alpha[[i1]])) # beware: 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.) -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(19, length(color[[i1]])), breaks = class.categ, guide = ggplot2::guide_legend(override.aes = list(colour = color[[i1]], linetype = 0)))) # values are the values of shape, breaks reorder the classes according to class.categ in the legend -} -if(point.count == 3){ -fin.lg.disp[[3]] <- legend.disp[[point.count + line.count]] -lg.order[[3]] <- point.count + line.count -lg.color[[3]] <- color[[i1]] -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]]), size = dot.size, color = color[[i1]][i5], alpha = alpha[[i1]])) # beware: 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.) -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(0.5, length(color[[i1]])), breaks = class.categ, guide = ggplot2::guide_legend(override.aes = list(colour = color[[i1]], linetype = 0)))) # values are the values of stroke, breaks reorder the classes according to class.categ in the legend -} -}else{ -line.count <- line.count + 1 -if(line.count == 1){ -fin.lg.disp[[4]] <- legend.disp[[point.count + line.count]] -lg.order[[4]] <- point.count + line.count -lg.color[[4]] <- color[[i1]] -if(plot == TRUE & fin.lg.disp[[4]] == TRUE & ((length(dev.list()) > 0 & names(dev.cur()) == "windows") | (length(dev.list()) == 0 & 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 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 = paste("ggplot2::", geom[[i1]], sep ="")))(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], linetype = categ[[i1]]), color = color[[i1]][i5], size = line.size, lineend = "round", alpha = alpha[[i1]])) # beware: 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.) -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(1, length(color[[i1]])), breaks = class.categ, guide = ggplot2::guide_legend(override.aes = list(colour = color[[i1]], shape = NA)))) # 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 == 2){ -fin.lg.disp[[5]] <- legend.disp[[point.count + line.count]] -lg.order[[5]] <- point.count + line.count -lg.color[[5]] <- color[[i1]] -if(plot == TRUE & fin.lg.disp[[5]] == TRUE & ((length(dev.list()) > 0 & names(dev.cur()) == "windows") | (length(dev.list()) == 0 & 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 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 = paste("ggplot2::", geom[[i1]], sep ="")))(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], alpha = categ[[i1]]), color = color[[i1]][i5], size = line.size, lineend = "round")) # beware: 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.) -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, guide = ggplot2::guide_legend(override.aes = list(colour = color[[i1]], shape = NA)))) # 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 == 3){ -fin.lg.disp[[6]] <- legend.disp[[point.count + line.count]] -lg.order[[6]] <- point.count + line.count -lg.color[[6]] <- color[[i1]] -if(plot == TRUE & fin.lg.disp[[6]] == TRUE & ((length(dev.list()) > 0 & names(dev.cur()) == "windows") | (length(dev.list()) == 0 & 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 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 = paste("ggplot2::", geom[[i1]], sep ="")))(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], size = categ[[i1]]), color = color[[i1]][i5], alpha = alpha[[i1]], lineend = "round")) # beware: 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.) -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, length(color[[i1]])), breaks = class.categ, guide = ggplot2::guide_legend(override.aes = list(colour = color[[i1]], shape = NA)))) # 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]], override.aes = list(alpha = lg.alpha[[1]], color = lg.color[[1]]))}else{FALSE}, shape = if(fin.lg.disp[[2]] == TRUE){ggplot2::guide_legend(order = lg.order[[2]], override.aes = list(alpha = lg.alpha[[2]], color = lg.color[[2]]))}else{FALSE}, stroke = if(fin.lg.disp[[3]] == TRUE){ggplot2::guide_legend(order = lg.order[[3]], override.aes = list(alpha = lg.alpha[[2]], color = lg.color[[3]]))}else{FALSE}, linetype = if(fin.lg.disp[[4]] == TRUE){ggplot2::guide_legend(order = lg.order[[4]], override.aes = list(alpha = lg.alpha[[4]], color = lg.color[[4]]))}else{FALSE}, alpha = if(fin.lg.disp[[5]] == TRUE){ggplot2::guide_legend(order = lg.order[[5]], override.aes = list(alpha = lg.alpha[[5]], color = lg.color[[5]]))}else{FALSE}, size = if(fin.lg.disp[[6]] == TRUE){ggplot2::guide_legend(order = lg.order[[6]], override.aes = list(alpha = lg.alpha[[6]], color = lg.color[[6]]))}else{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 <- 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 <- 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))) -} -} -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 -} -assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = tempo.legend.final))) -# end legend display - - - - - -# scale management -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 does not work -tempo.coord <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))$layout$panel_params[[1]] -# x-axis ticks and inv -if(is.null(x.tick.nb) & 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) -}else{ -tempo <- if(is.null(attributes(tempo.coord$x$breaks))){tempo.coord$x$breaks}else{unlist(attributes(tempo.coord$x$breaks))} -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 -} -# end x-axis ticks and inv -# x-axis secondary ticks (after ggplot2::coord_cartesian() or ggplot2::coord_flip()) -x.second.tick.values <- NULL -x.tempo.tick.pos <- NULL -if(x.log != "no"){ -tempo <- fun_inter_ticks(lim = x.lim, log = x.log) -x.second.tick.values <- tempo$values -x.tempo.tick.pos <- tempo$coordinates -assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", x = x.tempo.tick.pos, xend = x.tempo.tick.pos, y = tempo.coord$y.range[1], yend = tempo.coord$y.range[1] + abs(diff(tempo.coord$y.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 -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 = tempo.coord$y.range[1], -yend = tempo.coord$y.range[1] + abs(diff(tempo.coord$y.range)) / 80 -)) -coord.names <- c(coord.names, "x.second.tick.positions") -} -assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_x_continuous( -breaks = tempo.scale, -minor_breaks = x.tempo.tick.pos, # add the grid of the minor ticks -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("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 6\n\n============\n\n") ; stop(tempo.cat, call. = FALSE) -}, -expand = c(0, 0), # remove space after after axis limits -limits = NA, # indicate that limits must correspond to data limits -trans = ifelse(diff(x.lim) < 0, "reverse", "identity") # equivalent to ggplot2::scale_x_reverse() -)) -# end x-axis secondary ticks (after ggplot2::coord_cartesian() or ggplot2::coord_flip()) -# y-axis ticks and inv -if(is.null(y.tick.nb) & 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))} -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 -} -# end y-axis ticks and inv -# y-axis secondary ticks (after ggplot2::coord_cartesian() or ggplot2::coord_flip()) -y.second.tick.values <- NULL -y.tempo.tick.pos <- NULL -if(y.log != "no"){ -tempo <- fun_inter_ticks(lim = y.lim, log = y.log) -y.second.tick.values <- tempo$values -y.tempo.tick.pos <- tempo$coordinates -assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", y = y.tempo.tick.pos, yend = y.tempo.tick.pos, x = tempo.coord$x.range[1], xend = tempo.coord$x.range[1] + abs(diff(tempo.coord$x.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 -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 = tempo.coord$x.range[1], -xend = tempo.coord$x.range[1] + abs(diff(tempo.coord$x.range)) / 80 -)) -coord.names <- c(coord.names, "y.second.tick.positions") -} -# end y-axis secondary ticks (after ggplot2::coord_cartesian() or ggplot2::coord_flip()) -assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_y_continuous( -breaks = tempo.scale, -minor_breaks = y.tempo.tick.pos, # add the grid of the minor ticks -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("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 7\n\n============\n\n") ; stop(tempo.cat, call. = FALSE) -}, -expand = c(0, 0), # remove space after after axis limits -limits = NA, # indicate that limits must correspond to data limits -trans = ifelse(diff(y.lim) < 0, "reverse", "identity") # equivalent to ggplot2::scale_y_reverse() -)) -# end scale management - - - - -# drawing -fin.plot <- eval(parse(text = paste(paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "),if(is.null(add)){NULL}else{add}))) -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 -suppressMessages(suppressWarnings(gridExtra::grid.arrange(fin.plot, legend.final, ncol=2, widths=c(1, legend.width)))) -}else{ -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))) -} -# end drawing - - - -# outputs -if(warn.print == TRUE & ! is.null(warn)){ -warning(paste0("FROM ", function.name, " FUNCTION:\n\n", warn), call. = FALSE) # to recover the warning messages, use return = TRUE -} -if(return == TRUE){ -output <- 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("\n\n================\n\nINTERNAL CODE ERROR IN ", function.name, ": length(output$data) AND length(coord.names) MUST BE IDENTICAL. CODE HAS TO BE MODIFIED\n\n================\n\n") -stop(tempo.cat) -}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)), -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") -) -return(output) -} -# end outputs -# end main code -} - - - diff --git a/fun_gg_boxplot.docx b/fun_gg_boxplot.docx index a040f7aff10efb4b8d2befaa9f6dbda0ec2d2161..a63c1056ae5b559bf88703c3c4aab979934d91b8 100644 GIT binary patch delta 90150 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%0Am4e}^A{met&7%u;21$KRL(hGYJL^u#x7 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%0DW**5 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 delta 87005 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	m~tH8VpnzTIQ>|AJ(b&gc3h3>qT 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%0A(derAp$*h=$fk%k5k% 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 diff --git a/scatter.docx b/scatter.docx index b12b41679545f391f11d713882e91da024e95d3b..53db8b89d6a5b16c90287123adf391607693f481 100644 GIT binary patch delta 89576 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ˆ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≫`RuSr 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 delta 89638 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 -- GitLab