From d60683099e5a4c33fcf760ec0a52ede7b9137d6d Mon Sep 17 00:00:00 2001 From: Marc Oudart Date: Wed, 8 Apr 2020 12:39:04 +0200 Subject: [PATCH] Fin de l'exo 4 module 2 et tests --- .../exo4/Calcul_t\303\251l\303\251phone.Rmd" | 226 +- .../exo4/Calcul_t\303\251l\303\251phone.html" | 231 ++- .../exo4/Calcul_t\303\251l\303\251phone.log" | 2 +- .../exo4/Calcul_t\303\251l\303\251phone.tex" | 381 +++- module2/exo4/test notebook.Rmd | 18 + module2/exo4/test notebook.nb.html | 1843 +++++++++++++++++ module2/exo4/test.Rmd | 17 + module2/exo4/test.html | 437 ++++ module2/exo4/test.pdf | Bin 0 -> 76728 bytes 9 files changed, 3112 insertions(+), 43 deletions(-) create mode 100644 module2/exo4/test notebook.Rmd create mode 100644 module2/exo4/test notebook.nb.html create mode 100644 module2/exo4/test.Rmd create mode 100644 module2/exo4/test.html create mode 100644 module2/exo4/test.pdf diff --git "a/module2/exo4/Calcul_t\303\251l\303\251phone.Rmd" "b/module2/exo4/Calcul_t\303\251l\303\251phone.Rmd" index ea91fb1..2854ffa 100644 --- "a/module2/exo4/Calcul_t\303\251l\303\251phone.Rmd" +++ "b/module2/exo4/Calcul_t\303\251l\303\251phone.Rmd" @@ -36,18 +36,21 @@ Tout d'abord on peut plotter les différents paramètres au cours du temps pour ```{r} barplot(df$Appels_emis, names.arg = df$ï..Date) ``` + Les dates sont mal positionnées mais c'est pas grave. Il semble que j'ai beaucoup appelé autour de la date du 17 mars. 2. Appels reçus ```{r} barplot(df$Appels_recus, names.arg = df$ï..Date) ``` + Il semble que j'ai reçu beaucoup d'appels la veille du 17 mars puis que j'ai reçu + d'appels en général après cette période qu'avant. 3. Durée appel ```{r} barplot(df$Duree_appel, names.arg = df$ï..Date) ``` + Là c'est très voyant. J'ai passé beaucoup de temps au téléphone après le 16 mars comparé à avant (sauf 2 fois). 4. Messages reçus @@ -59,6 +62,7 @@ barplot(df$Messages_recus, names.arg = df$ï..Date) ```{r} barplot(df$Messages_envoyes, names.arg = df$ï..Date) ``` + Pour les messages, la tendance est inverse aux appels : je reçois et envoie - de sms depuis le 17 mars comparé à avant. J'ai eput être changé mon usage de l'un à l'autre. Sauf autour du 16-17 mars où j'ai beaucoup communiqué. @@ -165,6 +169,222 @@ library(devtools) #install_github("EvenStar69/significativity.bar/significativity.bar") library(significativity.bar) ``` +Bon j'ai dû un peu changer sa fonction parce qu'elle n'est plus compatible avec ggplot 3.3. +J'ai changé la manière de retrouver les coordonnées y : The position of ymax in ggplot\_build(plot)\$data[[1]] changed from column 6 to 7. +Et j'ai changé la manière de retrouver l'échalle en y : panel_ranges in ggplot\_build(plot)\$layout does not exist anymore ... use panel\_scale\_y instead. +J'ai aussi dû mettre à jour R vers la version 3.6.3. +Voici le code modifié de sa fonction : +```{r} +significativity_bar <- function(plot, groups, text = "*", text_height = 0.0275, size_bar = 1, color_bar = "black", size_text = 8, color_text = "black", font_face = 1, font_style = "serif", line_type = "solid"){ + + + + if (!require("ggplot2", character.only=T, quietly=T)){ # use library ggplot + + install.packages("ggplot2") + + library(ggplot2, character.only=T) + + } + + + + if (class(plot)[1] != "gg"){ + + stop("Your input plot is not a ggplot") + + } + + if (length(groups) != 2){ + + stop("Please select only 2 groups between which you want the error bar") + + } + + if (!is.vector(groups)){ + + stop("Please input your 2 selected groups in a vector") + + } + + if (!is.character(text)) { + + stop("Please input the text above the bar as character") + + } + + if (!is.numeric(text_height) | length(text_height) > 1){ + + stop("Please input one numeric value for the text height") + + } + + if (!is.numeric(size_bar) | length(size_bar) > 1){ + + stop("Please input one numeric value for the bar size") + + } + + if (!is.character(color_bar)){ + + stop("Please input an existing R color, as a character, for the color of the bar") + + } + + if (!is.numeric(size_text) | length(size_text) > 1){ + + stop("Please input one numeric value for the text size") + + } + + if (!is.numeric(font_face) | length(font_face) > 1){ + + stop("Please input one numeric value for the font face") + + } + + if (!is.character(color_text)){ + + stop("Please input an existing R color, as a character, for the color of the text") + + } + + if (!is.character(font_style)){ + + stop("Please input an existing font family, as a character, for the color of the bar") + + } + + if (!is.character(line_type)){ + + stop("Please input an existing line style, as a character, for the color of the bar") + + } + + + + if (text_height >=1){ + + warning("text_height should be between 0 and 1, default value for * and around 0.04 for text are advised") + + } + + + + + + if (class(as.list.environment(plot$layers[[1]])$geom)[1] == "GeomPoint"){ # if the ggplot is a dotplot + + coords = ggplot_build(plot)$data[[1]] # get the coordinates of the points + + xcoords = c() + + ycoords = c() + + for (i in groups){ # get the x coordinates of all coordinates in a vector, for the 2 selected groups + + xcoord_temp = unique(coords$x)[i] + + xcoords = append(xcoords, xcoord_temp) + + } + + for (i in c(1,2)){ + + ycoord_temp = max(coords[coords$x == xcoords[i],]$y) # get the y coordinate of the upper point of each group + + ycoords = append(ycoords, ycoord_temp) + + } + + + + y_range = ggplot_build(plot)$layout$panel_scales_y[[1]]$limits # get the total height of the y scale + # panel_ranges in ggplot_build(plot)$layout does not exist anymore ... use panel_scale_y instead + + y_sum = sum(abs(y_range)) + + y_scale = (7.5/100)*y_sum # starting position of the vertical bar (determined % of the total y scale) + + bar_height = y_scale + ((5/100)*y_sum) # final position of the vertical bar (determined % of the total y scale in addition to y_scale) + + + + ycoord_top = max(ycoords) # the bar should take the heighest of the two groups as a reference + + coord_bar = data.frame(x = c(xcoords[1], xcoords[1], xcoords[2], xcoords[2]), y = c(ycoord_top + y_scale, ycoord_top + bar_height, ycoord_top + bar_height, ycoord_top + y_scale)) # final coordinates of the bar + + + + star_x = mean(xcoords) # x coordinate of the text above the bar (in the middle of the two groups) + + star_y = ycoord_top + bar_height + ((2.75/100)*y_sum) # y coordinate of the text above the bar (above the bar by a determined factor) + + coord_star = c(star_x, star_y) # x,y coordinates of the text above the bar + + + + plot = plot + geom_path(data = coord_bar, aes(x=x, y=y), size = size_bar, color = color_bar, linetype = line_type) + annotate("text", x = star_x, y = star_y, label = text, size = size_text, color = color_text, fontface = font_face, family = font_style) # create the new ggplot + + print(plot) + + + + } else if (class(as.list.environment(plot$layers[[1]])$geom)[1] == "GeomBar") { # if the ggplot is a dotplot + + coords = ggplot_build(plot)$data[[1]] + + xcoords = c() + + ycoords = c() + + for (i in groups){ # get the x and y coordinates of the two groups + + xcoord_temp = mean(c(coords[i,]$xmin, coords[i,]$xmax)) + + xcoords = append(xcoords, xcoord_temp) + + ycoord_temp = coords[i,7] # The position of ymax in ggplot_build(plot)$data[[1]] changed from column 6 to 7 + + ycoords = append(ycoords, ycoord_temp) + + } + + + + y_range = ggplot_build(plot)$layout$panel_scales_y[[1]]$limits # get the total height of the y scale + + y_sum = sum(abs(y_range)) + + y_scale = (7.5/100)*y_sum # starting position of the vertical bar (determined % of the total y scale) + + bar_height = y_scale + ((5/100)*y_sum) # final position of the vertical bar (determined % of the total y scale in addition to y_scale) + + + + ycoord_top = max(ycoords) # the bar should take the heighest of the two groups as a reference + + coord_bar = data.frame(x = c(xcoords[1], xcoords[1], xcoords[2], xcoords[2]), y = c(ycoord_top + y_scale, ycoord_top + bar_height, ycoord_top + bar_height, ycoord_top + y_scale)) # final coordinates of the bar + + + + star_x = mean(xcoords) # x coordinate of the text above the bar (in the middle of the two groups) + + star_y = ycoord_top + bar_height + (text_height*y_sum) # y coordinate of the text above the bar (above the bar by a determined factor) + + coord_star = c(star_x, star_y) # x,y coordinates of the text above the bar + + + + plot = plot + geom_path(data = coord_bar, aes(x=x, y=y), size = size_bar, color = color_bar, linetype = line_type) + annotate("text", x = star_x, y = star_y, label = text, size = size_text, color = color_text, fontface = font_face, family = font_style) # create the new ggplot + + print(plot) + + } + +} +``` + ```{r} gg<- ggplot(c, aes(x = c..aa....ap.., y = as.numeric(m_duree_appel)))+ @@ -172,6 +392,7 @@ gg<- ggplot(c, aes(x = c..aa....ap.., y = as.numeric(m_duree_appel)))+ geom_errorbar(ymin = m_duree_appel-sd_duree_appel, ymax = m_duree_appel+sd_duree_appel)+ ylim(-500,5000)+ labs(title="Duree appel") +significativity_bar(gg, groups = c(1,2)) ``` @@ -193,4 +414,7 @@ En moyenne c'est assez équilibré : je réponds autant de fois qu'on m'envoie u ## Conclusion __J'ai passé pas mal de temps à faire ça mais ça m'a permis de bien prendre en main l'outil. -Je conçois que mon étude est assez sale et que les manières de plotter ne sont vraiment pas optimisées mais ce n'était pas vraiment le but de l'exercice.__ +Je conçois que mon étude est assez sale et que les manières de plotter ne sont vraiment pas optimisées mais ce n'était pas vraiment le but de l'exercice.__ + +__Après avoir compilé, je n'ai pas pû le faire en pdf (des erreurs de polices qui ne passent pas avec LaTeX on dirait ...). +Aussi, j'ai remarqué qu'il fallait laissé un retour chariot après la visualisation du plot sinon le texte se met à côté dans le rendu.__ diff --git "a/module2/exo4/Calcul_t\303\251l\303\251phone.html" "b/module2/exo4/Calcul_t\303\251l\303\251phone.html" index f2b1779..ee51906 100644 --- "a/module2/exo4/Calcul_t\303\251l\303\251phone.html" +++ "b/module2/exo4/Calcul_t\303\251l\303\251phone.html" @@ -420,17 +420,20 @@ head(df)
  • Les appels émis
  • barplot(df$Appels_emis, names.arg = df$ï..Date)
    -

    Les dates sont mal positionnées mais c’est pas grave. Il semble que j’ai beaucoup appelé autour de la date du 17 mars.

    +

    +

    Les dates sont mal positionnées mais c’est pas grave. Il semble que j’ai beaucoup appelé autour de la date du 17 mars.

    1. Appels reçus
    barplot(df$Appels_recus, names.arg = df$ï..Date)
    -

    Il semble que j’ai reçu beaucoup d’appels la veille du 17 mars puis que j’ai reçu + d’appels en général après cette période qu’avant.

    +

    +

    Il semble que j’ai reçu beaucoup d’appels la veille du 17 mars puis que j’ai reçu + d’appels en général après cette période qu’avant.

    1. Durée appel
    barplot(df$Duree_appel, names.arg = df$ï..Date)
    -

    Là c’est très voyant. J’ai passé beaucoup de temps au téléphone après le 16 mars comparé à avant (sauf 2 fois).

    +

    +

    Là c’est très voyant. J’ai passé beaucoup de temps au téléphone après le 16 mars comparé à avant (sauf 2 fois).

    1. Messages reçus
    @@ -440,7 +443,8 @@ head(df)
  • Messages envoyés
  • barplot(df$Messages_envoyes, names.arg = df$ï..Date)
    -

    Pour les messages, la tendance est inverse aux appels : je reçois et envoie - de sms depuis le 17 mars comparé à avant.
    +

    +

    Pour les messages, la tendance est inverse aux appels : je reçois et envoie - de sms depuis le 17 mars comparé à avant.
    J’ai eput être changé mon usage de l’un à l’autre.
    Sauf autour du 16-17 mars où j’ai beaucoup communiqué.

    @@ -568,11 +572,226 @@ library(devtools)
    #Besoin de Rtools 3.5
     #install_github("EvenStar69/significativity.bar/significativity.bar")
     library(significativity.bar)
    +

    Bon j’ai dû un peu changer sa fonction parce qu’elle n’est plus compatible avec ggplot 3.3.
    +J’ai changé la manière de retrouver les coordonnées y : The position of ymax in ggplot_build(plot)$data[[1]] changed from column 6 to 7.
    +Et j’ai changé la manière de retrouver l’échalle en y : panel_ranges in ggplot_build(plot)$layout does not exist anymore … use panel_scale_y instead.
    +J’ai aussi dû mettre à jour R vers la version 3.6.3.
    +Voici le code modifié de sa fonction :

    +
    significativity_bar <- function(plot, groups, text = "*", text_height = 0.0275, size_bar = 1, color_bar = "black", size_text = 8, color_text = "black", font_face = 1, font_style = "serif", line_type = "solid"){
    +  
    +  
    +  
    +  if (!require("ggplot2", character.only=T, quietly=T)){ # use library ggplot
    +    
    +    install.packages("ggplot2")
    +    
    +    library(ggplot2, character.only=T)
    +    
    +  }
    +  
    +  
    +  
    +  if (class(plot)[1] != "gg"){
    +    
    +    stop("Your input plot is not a ggplot")
    +    
    +  }
    +  
    +  if (length(groups) != 2){
    +    
    +    stop("Please select only 2 groups between which you want the error bar")
    +    
    +  }
    +  
    +  if (!is.vector(groups)){
    +    
    +    stop("Please input your 2 selected groups in a vector")
    +    
    +  }
    +  
    +  if (!is.character(text)) {
    +    
    +    stop("Please input the text above the bar as character")
    +    
    +  }
    +  
    +  if (!is.numeric(text_height) | length(text_height) > 1){
    +    
    +    stop("Please input one numeric value for the text height")
    +    
    +  }
    +  
    +  if (!is.numeric(size_bar) | length(size_bar) > 1){
    +    
    +    stop("Please input one numeric value for the bar size")
    +    
    +  }
    +  
    +  if (!is.character(color_bar)){
    +    
    +    stop("Please input an existing R color, as a character, for the color of the bar")
    +    
    +  }
    +  
    +  if (!is.numeric(size_text) | length(size_text) > 1){
    +    
    +    stop("Please input one numeric value for the text size")
    +    
    +  }
    +  
    +  if (!is.numeric(font_face) | length(font_face) > 1){
    +    
    +    stop("Please input one numeric value for the font face")
    +    
    +  }
    +  
    +  if (!is.character(color_text)){
    +    
    +    stop("Please input an existing R color, as a character, for the color of the text")
    +    
    +  }
    +  
    +  if (!is.character(font_style)){
    +    
    +    stop("Please input an existing font family, as a character, for the color of the bar")
    +    
    +  }
    +  
    +  if (!is.character(line_type)){
    +    
    +    stop("Please input an existing line style, as a character, for the color of the bar")
    +    
    +  }
    +  
    +  
    +  
    +  if (text_height >=1){
    +    
    +    warning("text_height should be between 0 and 1, default value for * and around 0.04 for text are advised")
    +    
    +  }
    +  
    +  
    +  
    +  
    +  
    +  if (class(as.list.environment(plot$layers[[1]])$geom)[1] == "GeomPoint"){ # if the ggplot is a dotplot
    +    
    +    coords = ggplot_build(plot)$data[[1]] # get the coordinates of the points
    +    
    +    xcoords = c()
    +    
    +    ycoords = c()
    +    
    +    for (i in groups){ # get the x coordinates of all coordinates in a vector, for the 2 selected groups
    +      
    +      xcoord_temp = unique(coords$x)[i]
    +      
    +      xcoords = append(xcoords, xcoord_temp)
    +      
    +    }
    +    
    +    for (i in c(1,2)){
    +      
    +      ycoord_temp = max(coords[coords$x == xcoords[i],]$y) # get the y coordinate of the upper point of each group
    +      
    +      ycoords = append(ycoords, ycoord_temp)
    +      
    +    }
    +    
    +    
    +    
    +    y_range = ggplot_build(plot)$layout$panel_scales_y[[1]]$limits # get the total height of the y scale
    +    # panel_ranges in ggplot_build(plot)$layout does not exist anymore ... use panel_scale_y instead
    +    
    +    y_sum = sum(abs(y_range)) 
    +    
    +    y_scale = (7.5/100)*y_sum # starting position of the vertical bar (determined % of the total y scale)
    +    
    +    bar_height = y_scale + ((5/100)*y_sum) # final position of the vertical bar (determined % of the total y scale in addition to y_scale)
    +    
    +    
    +    
    +    ycoord_top = max(ycoords) # the bar should take the heighest of the two groups as a reference
    +    
    +    coord_bar = data.frame(x = c(xcoords[1], xcoords[1], xcoords[2], xcoords[2]), y = c(ycoord_top + y_scale, ycoord_top + bar_height, ycoord_top + bar_height, ycoord_top + y_scale)) # final coordinates of the bar
    +    
    +    
    +    
    +    star_x = mean(xcoords) # x coordinate of the text above the bar (in the middle of the two groups)
    +    
    +    star_y = ycoord_top + bar_height + ((2.75/100)*y_sum) # y coordinate of the text above the bar (above the bar by a determined factor)
    +    
    +    coord_star = c(star_x, star_y) # x,y coordinates of the text above the bar
    +    
    +    
    +    
    +    plot = plot + geom_path(data = coord_bar, aes(x=x, y=y), size = size_bar, color = color_bar, linetype = line_type) + annotate("text", x = star_x, y = star_y, label = text, size = size_text, color = color_text, fontface = font_face, family = font_style) # create the new ggplot
    +    
    +    print(plot)
    +    
    +    
    +    
    +  } else if (class(as.list.environment(plot$layers[[1]])$geom)[1] == "GeomBar") { # if the ggplot is a dotplot
    +    
    +    coords = ggplot_build(plot)$data[[1]]
    +    
    +    xcoords = c()  
    +    
    +    ycoords = c()
    +    
    +    for (i in groups){ # get the x and y coordinates of the two groups                                      
    +      
    +      xcoord_temp = mean(c(coords[i,]$xmin, coords[i,]$xmax))
    +      
    +      xcoords = append(xcoords, xcoord_temp)
    +      
    +      ycoord_temp = coords[i,7] # The position of ymax in ggplot_build(plot)$data[[1]] changed from column 6 to 7
    +      
    +      ycoords = append(ycoords, ycoord_temp)
    +      
    +    }
    +    
    +    
    +    
    +    y_range = ggplot_build(plot)$layout$panel_scales_y[[1]]$limits # get the total height of the y scale
    +    
    +    y_sum = sum(abs(y_range))
    +    
    +    y_scale = (7.5/100)*y_sum  # starting position of the vertical bar (determined % of the total y scale)
    +    
    +    bar_height = y_scale + ((5/100)*y_sum) # final position of the vertical bar (determined % of the total y scale in addition to y_scale)
    +    
    +    
    +    
    +    ycoord_top = max(ycoords) # the bar should take the heighest of the two groups as a reference
    +    
    +    coord_bar = data.frame(x = c(xcoords[1], xcoords[1], xcoords[2], xcoords[2]), y = c(ycoord_top + y_scale, ycoord_top + bar_height, ycoord_top + bar_height, ycoord_top + y_scale)) #  final coordinates of the bar
    +    
    +    
    +    
    +    star_x = mean(xcoords) # x coordinate of the text above the bar (in the middle of the two groups)
    +    
    +    star_y = ycoord_top + bar_height + (text_height*y_sum) # y coordinate of the text above the bar (above the bar by a determined factor)
    +    
    +    coord_star = c(star_x, star_y) # x,y coordinates of the text above the bar
    +    
    +    
    +    
    +    plot = plot + geom_path(data = coord_bar, aes(x=x, y=y), size = size_bar, color = color_bar, linetype = line_type) + annotate("text", x = star_x, y = star_y, label = text, size = size_text, color = color_text, fontface = font_face, family = font_style) # create the new ggplot
    +    
    +    print(plot)
    +    
    +  }
    +  
    +}
    gg<- ggplot(c, aes(x = c..aa....ap.., y = as.numeric(m_duree_appel)))+
         geom_bar(stat = "identity")+
         geom_errorbar(ymin = m_duree_appel-sd_duree_appel, ymax = m_duree_appel+sd_duree_appel)+ 
         ylim(-500,5000)+
    -    labs(title="Duree appel")
    + labs(title="Duree appel") +significativity_bar(gg, groups = c(1,2)) +

    Taux de réponses

    @@ -592,6 +811,8 @@ barplot(Ratio)

    Conclusion

    J’ai passé pas mal de temps à faire ça mais ça m’a permis de bien prendre en main l’outil.
    Je conçois que mon étude est assez sale et que les manières de plotter ne sont vraiment pas optimisées mais ce n’était pas vraiment le but de l’exercice.

    +

    Après avoir compilé, je n’ai pas pû le faire en pdf (des erreurs de polices qui ne passent pas avec LaTeX on dirait …).
    +Aussi, j’ai remarqué qu’il fallait laissé un retour chariot après la visualisation du plot sinon le texte se met à côté dans le rendu.

    diff --git "a/module2/exo4/Calcul_t\303\251l\303\251phone.log" "b/module2/exo4/Calcul_t\303\251l\303\251phone.log" index db5cd54..220430a 100644 --- "a/module2/exo4/Calcul_t\303\251l\303\251phone.log" +++ "b/module2/exo4/Calcul_t\303\251l\303\251phone.log" @@ -1,4 +1,4 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.18 (MiKTeX 2.9.6500 64-bit) (preloaded format=pdflatex 2018.1.29) 7 APR 2020 21:22 +This is pdfTeX, Version 3.14159265-2.6-1.40.18 (MiKTeX 2.9.6500 64-bit) (preloaded format=pdflatex 2018.1.29) 8 APR 2020 12:31 entering extended mode **./Calcul_téléphone.tex (Calcul_téléphone.tex diff --git "a/module2/exo4/Calcul_t\303\251l\303\251phone.tex" "b/module2/exo4/Calcul_t\303\251l\303\251phone.tex" index 7d5ae85..1d8856e 100644 --- "a/module2/exo4/Calcul_t\303\251l\303\251phone.tex" +++ "b/module2/exo4/Calcul_t\303\251l\303\251phone.tex" @@ -173,6 +173,7 @@ pour se donner un aperçu de mon usage : \end{Shaded} \includegraphics{Calcul_téléphone_files/figure-latex/unnamed-chunk-2-1.pdf} + Les dates sont mal positionnées mais c'est pas grave. Il semble que j'ai beaucoup appelé autour de la date du 17 mars. @@ -191,6 +192,7 @@ beaucoup appelé autour de la date du 17 mars. \end{Shaded} \includegraphics{Calcul_téléphone_files/figure-latex/unnamed-chunk-3-1.pdf} + Il semble que j'ai reçu beaucoup d'appels la veille du 17 mars puis que j'ai reçu + d'appels en général après cette période qu'avant. @@ -209,6 +211,7 @@ j'ai reçu + d'appels en général après cette période qu'avant. \end{Shaded} \includegraphics{Calcul_téléphone_files/figure-latex/unnamed-chunk-4-1.pdf} + Là c'est très voyant. J'ai passé beaucoup de temps au téléphone après le 16 mars comparé à avant (sauf 2 fois). @@ -243,6 +246,7 @@ Là c'est très voyant. J'ai passé beaucoup de temps au téléphone après le \end{Shaded} \includegraphics{Calcul_téléphone_files/figure-latex/unnamed-chunk-6-1.pdf} + Pour les messages, la tendance est inverse aux appels : je reçois et envoie - de sms depuis le 17 mars comparé à avant.\\ J'ai eput être changé mon usage de l'un à l'autre.\\ @@ -325,44 +329,9 @@ Et les écarts-types : \NormalTok{sd\_duree\_appel\textless{}{-}}\KeywordTok{c}\NormalTok{(}\KeywordTok{sd}\NormalTok{(df}\OperatorTok{$}\NormalTok{Duree\_appel[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"avant"}\NormalTok{]), }\KeywordTok{sd}\NormalTok{(df}\OperatorTok{$}\NormalTok{Duree\_appel[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"après"}\NormalTok{]))} \NormalTok{sd\_messages\_recus\textless{}{-}}\KeywordTok{c}\NormalTok{(}\KeywordTok{sd}\NormalTok{(df}\OperatorTok{$}\NormalTok{Messages\_recus[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"avant"}\NormalTok{]), }\KeywordTok{sd}\NormalTok{(df}\OperatorTok{$}\NormalTok{Messages\_recus[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"après"}\NormalTok{]))} \NormalTok{sd\_messages\_envoyes\textless{}{-}}\KeywordTok{c}\NormalTok{(}\KeywordTok{sd}\NormalTok{(df}\OperatorTok{$}\NormalTok{Messages\_envoyes[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"avant"}\NormalTok{]), }\KeywordTok{sd}\NormalTok{(df}\OperatorTok{$}\NormalTok{Messages\_envoyes[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"après"}\NormalTok{]))} -\NormalTok{sd\_appels\_emis} -\end{Highlighting} -\end{Shaded} - -\begin{verbatim} -## [1] 2.128044 2.379476 -\end{verbatim} - -\begin{Shaded} -\begin{Highlighting}[] -\NormalTok{sd\_appels\_recus} -\end{Highlighting} -\end{Shaded} - -\begin{verbatim} -## [1] 1.939563 1.435933 -\end{verbatim} - -\begin{Shaded} -\begin{Highlighting}[] -\NormalTok{sd\_messages\_recus} -\end{Highlighting} -\end{Shaded} - -\begin{verbatim} -## [1] 5.080776 4.097618 -\end{verbatim} - -\begin{Shaded} -\begin{Highlighting}[] -\NormalTok{sd\_messages\_envoyes} \end{Highlighting} \end{Shaded} -\begin{verbatim} -## [1] 5.330505 2.502380 -\end{verbatim} - Maintenant on va pouvoir plotter les moyennes de tous les paramètres avant et après (inclus) le 17 mars 2020.\\ Le mieux c'est d'utiliser ggplot. @@ -380,6 +349,12 @@ Le mieux c'est d'utiliser ggplot. \end{Highlighting} \end{Shaded} +\begin{verbatim} +## Warning: Use of `a$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead. + +## Warning: Use of `a$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead. +\end{verbatim} + \includegraphics{Calcul_téléphone_files/figure-latex/unnamed-chunk-10-1.pdf} \begin{Shaded} @@ -393,6 +368,22 @@ Le mieux c'est d'utiliser ggplot. \end{Highlighting} \end{Shaded} +\begin{verbatim} +## Warning: Use of `b$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead. +\end{verbatim} + +\begin{verbatim} +## Warning: Use of `b$m_appels_recus` is discouraged. Use `m_appels_recus` instead. +\end{verbatim} + +\begin{verbatim} +## Warning: Use of `b$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead. +\end{verbatim} + +\begin{verbatim} +## Warning: Use of `b$m_appels_recus` is discouraged. Use `m_appels_recus` instead. +\end{verbatim} + \includegraphics{Calcul_téléphone_files/figure-latex/unnamed-chunk-11-1.pdf} \begin{Shaded} @@ -406,6 +397,22 @@ Le mieux c'est d'utiliser ggplot. \end{Highlighting} \end{Shaded} +\begin{verbatim} +## Warning: Use of `c$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead. +\end{verbatim} + +\begin{verbatim} +## Warning: Use of `c$m_duree_appel` is discouraged. Use `m_duree_appel` instead. +\end{verbatim} + +\begin{verbatim} +## Warning: Use of `c$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead. +\end{verbatim} + +\begin{verbatim} +## Warning: Use of `c$m_duree_appel` is discouraged. Use `m_duree_appel` instead. +\end{verbatim} + \includegraphics{Calcul_téléphone_files/figure-latex/unnamed-chunk-12-1.pdf} \begin{Shaded} @@ -419,6 +426,24 @@ Le mieux c'est d'utiliser ggplot. \end{Highlighting} \end{Shaded} +\begin{verbatim} +## Warning: Use of `d$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead. +\end{verbatim} + +\begin{verbatim} +## Warning: Use of `d$m_messages_envoyes` is discouraged. Use `m_messages_envoyes` +## instead. +\end{verbatim} + +\begin{verbatim} +## Warning: Use of `d$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead. +\end{verbatim} + +\begin{verbatim} +## Warning: Use of `d$m_messages_envoyes` is discouraged. Use `m_messages_envoyes` +## instead. +\end{verbatim} + \includegraphics{Calcul_téléphone_files/figure-latex/unnamed-chunk-13-1.pdf} \begin{Shaded} @@ -432,6 +457,24 @@ Le mieux c'est d'utiliser ggplot. \end{Highlighting} \end{Shaded} +\begin{verbatim} +## Warning: Use of `e$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead. +\end{verbatim} + +\begin{verbatim} +## Warning: Use of `e$m_messages_recus` is discouraged. Use `m_messages_recus` +## instead. +\end{verbatim} + +\begin{verbatim} +## Warning: Use of `e$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead. +\end{verbatim} + +\begin{verbatim} +## Warning: Use of `e$m_messages_recus` is discouraged. Use `m_messages_recus` +## instead. +\end{verbatim} + \includegraphics{Calcul_téléphone_files/figure-latex/unnamed-chunk-14-1.pdf} \textbf{Bilan : On voit des augmentations dans les appels et une @@ -502,6 +545,267 @@ le 17 mars 2020. Je ne suis pas super fort en statistiques donc j'espère que c'est correct. Aussi, 21 échantillons par groupe c'est pas mal pour un test non paramétrique. +Du coup on va essayer de mettre une étoile sur le plot (ce qui n'est pas +compris dans les fonctions ggplot).\\ +Pour cela on va donc tester le code d'un ami disponible sur +\href{https://github.com/EvenStar69/significativity.bar}{Github}. + +\begin{Shaded} +\begin{Highlighting}[] +\CommentTok{\#install.packages("devtools")} +\KeywordTok{library}\NormalTok{(devtools)} +\end{Highlighting} +\end{Shaded} + +\begin{verbatim} +## Loading required package: usethis +\end{verbatim} + +\begin{Shaded} +\begin{Highlighting}[] +\CommentTok{\#Besoin de Rtools 3.5} +\CommentTok{\#install\_github("EvenStar69/significativity.bar/significativity.bar")} +\KeywordTok{library}\NormalTok{(significativity.bar)} +\end{Highlighting} +\end{Shaded} + +Bon j'ai dû un peu changer sa fonction parce qu'elle n'est plus +compatible avec ggplot 3.3.\\ +J'ai changé la manière de retrouver les coordonnées y : The position of +ymax in ggplot\_build(plot)\$data{[}{[}1{]}{]} changed from column 6 to +7.\\ +Et j'ai changé la manière de retrouver l'échalle en y : panel\_ranges in +ggplot\_build(plot)\$layout does not exist anymore \ldots{} use +panel\_scale\_y instead.\\ +J'ai aussi dû mettre à jour R vers la version 3.6.3.\\ +Voici le code modifié de sa fonction : + +\begin{Shaded} +\begin{Highlighting}[] +\NormalTok{significativity\_bar \textless{}{-}}\StringTok{ }\ControlFlowTok{function}\NormalTok{(plot, groups, }\DataTypeTok{text =} \StringTok{"*"}\NormalTok{, }\DataTypeTok{text\_height =} \FloatTok{0.0275}\NormalTok{, }\DataTypeTok{size\_bar =} \DecValTok{1}\NormalTok{, }\DataTypeTok{color\_bar =} \StringTok{"black"}\NormalTok{, }\DataTypeTok{size\_text =} \DecValTok{8}\NormalTok{, }\DataTypeTok{color\_text =} \StringTok{"black"}\NormalTok{, }\DataTypeTok{font\_face =} \DecValTok{1}\NormalTok{, }\DataTypeTok{font\_style =} \StringTok{"serif"}\NormalTok{, }\DataTypeTok{line\_type =} \StringTok{"solid"}\NormalTok{)\{} + + + + \ControlFlowTok{if}\NormalTok{ (}\OperatorTok{!}\KeywordTok{require}\NormalTok{(}\StringTok{"ggplot2"}\NormalTok{, }\DataTypeTok{character.only=}\NormalTok{T, }\DataTypeTok{quietly=}\NormalTok{T))\{ }\CommentTok{\# use library ggplot} + + \KeywordTok{install.packages}\NormalTok{(}\StringTok{"ggplot2"}\NormalTok{)} + + \KeywordTok{library}\NormalTok{(ggplot2, }\DataTypeTok{character.only=}\NormalTok{T)} + +\NormalTok{ \}} + + + + \ControlFlowTok{if}\NormalTok{ (}\KeywordTok{class}\NormalTok{(plot)[}\DecValTok{1}\NormalTok{] }\OperatorTok{!=}\StringTok{ "gg"}\NormalTok{)\{} + + \KeywordTok{stop}\NormalTok{(}\StringTok{"Your input plot is not a ggplot"}\NormalTok{)} + +\NormalTok{ \}} + + \ControlFlowTok{if}\NormalTok{ (}\KeywordTok{length}\NormalTok{(groups) }\OperatorTok{!=}\StringTok{ }\DecValTok{2}\NormalTok{)\{} + + \KeywordTok{stop}\NormalTok{(}\StringTok{"Please select only 2 groups between which you want the error bar"}\NormalTok{)} + +\NormalTok{ \}} + + \ControlFlowTok{if}\NormalTok{ (}\OperatorTok{!}\KeywordTok{is.vector}\NormalTok{(groups))\{} + + \KeywordTok{stop}\NormalTok{(}\StringTok{"Please input your 2 selected groups in a vector"}\NormalTok{)} + +\NormalTok{ \}} + + \ControlFlowTok{if}\NormalTok{ (}\OperatorTok{!}\KeywordTok{is.character}\NormalTok{(text)) \{} + + \KeywordTok{stop}\NormalTok{(}\StringTok{"Please input the text above the bar as character"}\NormalTok{)} + +\NormalTok{ \}} + + \ControlFlowTok{if}\NormalTok{ (}\OperatorTok{!}\KeywordTok{is.numeric}\NormalTok{(text\_height) }\OperatorTok{|}\StringTok{ }\KeywordTok{length}\NormalTok{(text\_height) }\OperatorTok{\textgreater{}}\StringTok{ }\DecValTok{1}\NormalTok{)\{} + + \KeywordTok{stop}\NormalTok{(}\StringTok{"Please input one numeric value for the text height"}\NormalTok{)} + +\NormalTok{ \}} + + \ControlFlowTok{if}\NormalTok{ (}\OperatorTok{!}\KeywordTok{is.numeric}\NormalTok{(size\_bar) }\OperatorTok{|}\StringTok{ }\KeywordTok{length}\NormalTok{(size\_bar) }\OperatorTok{\textgreater{}}\StringTok{ }\DecValTok{1}\NormalTok{)\{} + + \KeywordTok{stop}\NormalTok{(}\StringTok{"Please input one numeric value for the bar size"}\NormalTok{)} + +\NormalTok{ \}} + + \ControlFlowTok{if}\NormalTok{ (}\OperatorTok{!}\KeywordTok{is.character}\NormalTok{(color\_bar))\{} + + \KeywordTok{stop}\NormalTok{(}\StringTok{"Please input an existing R color, as a character, for the color of the bar"}\NormalTok{)} + +\NormalTok{ \}} + + \ControlFlowTok{if}\NormalTok{ (}\OperatorTok{!}\KeywordTok{is.numeric}\NormalTok{(size\_text) }\OperatorTok{|}\StringTok{ }\KeywordTok{length}\NormalTok{(size\_text) }\OperatorTok{\textgreater{}}\StringTok{ }\DecValTok{1}\NormalTok{)\{} + + \KeywordTok{stop}\NormalTok{(}\StringTok{"Please input one numeric value for the text size"}\NormalTok{)} + +\NormalTok{ \}} + + \ControlFlowTok{if}\NormalTok{ (}\OperatorTok{!}\KeywordTok{is.numeric}\NormalTok{(font\_face) }\OperatorTok{|}\StringTok{ }\KeywordTok{length}\NormalTok{(font\_face) }\OperatorTok{\textgreater{}}\StringTok{ }\DecValTok{1}\NormalTok{)\{} + + \KeywordTok{stop}\NormalTok{(}\StringTok{"Please input one numeric value for the font face"}\NormalTok{)} + +\NormalTok{ \}} + + \ControlFlowTok{if}\NormalTok{ (}\OperatorTok{!}\KeywordTok{is.character}\NormalTok{(color\_text))\{} + + \KeywordTok{stop}\NormalTok{(}\StringTok{"Please input an existing R color, as a character, for the color of the text"}\NormalTok{)} + +\NormalTok{ \}} + + \ControlFlowTok{if}\NormalTok{ (}\OperatorTok{!}\KeywordTok{is.character}\NormalTok{(font\_style))\{} + + \KeywordTok{stop}\NormalTok{(}\StringTok{"Please input an existing font family, as a character, for the color of the bar"}\NormalTok{)} + +\NormalTok{ \}} + + \ControlFlowTok{if}\NormalTok{ (}\OperatorTok{!}\KeywordTok{is.character}\NormalTok{(line\_type))\{} + + \KeywordTok{stop}\NormalTok{(}\StringTok{"Please input an existing line style, as a character, for the color of the bar"}\NormalTok{)} + +\NormalTok{ \}} + + + + \ControlFlowTok{if}\NormalTok{ (text\_height }\OperatorTok{\textgreater{}=}\DecValTok{1}\NormalTok{)\{} + + \KeywordTok{warning}\NormalTok{(}\StringTok{"text\_height should be between 0 and 1, default value for * and around 0.04 for text are advised"}\NormalTok{)} + +\NormalTok{ \}} + + + + + + \ControlFlowTok{if}\NormalTok{ (}\KeywordTok{class}\NormalTok{(}\KeywordTok{as.list.environment}\NormalTok{(plot}\OperatorTok{$}\NormalTok{layers[[}\DecValTok{1}\NormalTok{]])}\OperatorTok{$}\NormalTok{geom)[}\DecValTok{1}\NormalTok{] }\OperatorTok{==}\StringTok{ "GeomPoint"}\NormalTok{)\{ }\CommentTok{\# if the ggplot is a dotplot} + +\NormalTok{ coords =}\StringTok{ }\KeywordTok{ggplot\_build}\NormalTok{(plot)}\OperatorTok{$}\NormalTok{data[[}\DecValTok{1}\NormalTok{]] }\CommentTok{\# get the coordinates of the points} + +\NormalTok{ xcoords =}\StringTok{ }\KeywordTok{c}\NormalTok{()} + +\NormalTok{ ycoords =}\StringTok{ }\KeywordTok{c}\NormalTok{()} + + \ControlFlowTok{for}\NormalTok{ (i }\ControlFlowTok{in}\NormalTok{ groups)\{ }\CommentTok{\# get the x coordinates of all coordinates in a vector, for the 2 selected groups} + +\NormalTok{ xcoord\_temp =}\StringTok{ }\KeywordTok{unique}\NormalTok{(coords}\OperatorTok{$}\NormalTok{x)[i]} + +\NormalTok{ xcoords =}\StringTok{ }\KeywordTok{append}\NormalTok{(xcoords, xcoord\_temp)} + +\NormalTok{ \}} + + \ControlFlowTok{for}\NormalTok{ (i }\ControlFlowTok{in} \KeywordTok{c}\NormalTok{(}\DecValTok{1}\NormalTok{,}\DecValTok{2}\NormalTok{))\{} + +\NormalTok{ ycoord\_temp =}\StringTok{ }\KeywordTok{max}\NormalTok{(coords[coords}\OperatorTok{$}\NormalTok{x }\OperatorTok{==}\StringTok{ }\NormalTok{xcoords[i],]}\OperatorTok{$}\NormalTok{y) }\CommentTok{\# get the y coordinate of the upper point of each group} + +\NormalTok{ ycoords =}\StringTok{ }\KeywordTok{append}\NormalTok{(ycoords, ycoord\_temp)} + +\NormalTok{ \}} + + + +\NormalTok{ y\_range =}\StringTok{ }\KeywordTok{ggplot\_build}\NormalTok{(plot)}\OperatorTok{$}\NormalTok{layout}\OperatorTok{$}\NormalTok{panel\_scales\_y[[}\DecValTok{1}\NormalTok{]]}\OperatorTok{$}\NormalTok{limits }\CommentTok{\# get the total height of the y scale} + \CommentTok{\# panel\_ranges in ggplot\_build(plot)$layout does not exist anymore ... use panel\_scale\_y instead} + +\NormalTok{ y\_sum =}\StringTok{ }\KeywordTok{sum}\NormalTok{(}\KeywordTok{abs}\NormalTok{(y\_range)) } + +\NormalTok{ y\_scale =}\StringTok{ }\NormalTok{(}\FloatTok{7.5}\OperatorTok{/}\DecValTok{100}\NormalTok{)}\OperatorTok{*}\NormalTok{y\_sum }\CommentTok{\# starting position of the vertical bar (determined \% of the total y scale)} + +\NormalTok{ bar\_height =}\StringTok{ }\NormalTok{y\_scale }\OperatorTok{+}\StringTok{ }\NormalTok{((}\DecValTok{5}\OperatorTok{/}\DecValTok{100}\NormalTok{)}\OperatorTok{*}\NormalTok{y\_sum) }\CommentTok{\# final position of the vertical bar (determined \% of the total y scale in addition to y\_scale)} + + + +\NormalTok{ ycoord\_top =}\StringTok{ }\KeywordTok{max}\NormalTok{(ycoords) }\CommentTok{\# the bar should take the heighest of the two groups as a reference} + +\NormalTok{ coord\_bar =}\StringTok{ }\KeywordTok{data.frame}\NormalTok{(}\DataTypeTok{x =} \KeywordTok{c}\NormalTok{(xcoords[}\DecValTok{1}\NormalTok{], xcoords[}\DecValTok{1}\NormalTok{], xcoords[}\DecValTok{2}\NormalTok{], xcoords[}\DecValTok{2}\NormalTok{]), }\DataTypeTok{y =} \KeywordTok{c}\NormalTok{(ycoord\_top }\OperatorTok{+}\StringTok{ }\NormalTok{y\_scale, ycoord\_top }\OperatorTok{+}\StringTok{ }\NormalTok{bar\_height, ycoord\_top }\OperatorTok{+}\StringTok{ }\NormalTok{bar\_height, ycoord\_top }\OperatorTok{+}\StringTok{ }\NormalTok{y\_scale)) }\CommentTok{\# final coordinates of the bar} + + + +\NormalTok{ star\_x =}\StringTok{ }\KeywordTok{mean}\NormalTok{(xcoords) }\CommentTok{\# x coordinate of the text above the bar (in the middle of the two groups)} + +\NormalTok{ star\_y =}\StringTok{ }\NormalTok{ycoord\_top }\OperatorTok{+}\StringTok{ }\NormalTok{bar\_height }\OperatorTok{+}\StringTok{ }\NormalTok{((}\FloatTok{2.75}\OperatorTok{/}\DecValTok{100}\NormalTok{)}\OperatorTok{*}\NormalTok{y\_sum) }\CommentTok{\# y coordinate of the text above the bar (above the bar by a determined factor)} + +\NormalTok{ coord\_star =}\StringTok{ }\KeywordTok{c}\NormalTok{(star\_x, star\_y) }\CommentTok{\# x,y coordinates of the text above the bar} + + + +\NormalTok{ plot =}\StringTok{ }\NormalTok{plot }\OperatorTok{+}\StringTok{ }\KeywordTok{geom\_path}\NormalTok{(}\DataTypeTok{data =}\NormalTok{ coord\_bar, }\KeywordTok{aes}\NormalTok{(}\DataTypeTok{x=}\NormalTok{x, }\DataTypeTok{y=}\NormalTok{y), }\DataTypeTok{size =}\NormalTok{ size\_bar, }\DataTypeTok{color =}\NormalTok{ color\_bar, }\DataTypeTok{linetype =}\NormalTok{ line\_type) }\OperatorTok{+}\StringTok{ }\KeywordTok{annotate}\NormalTok{(}\StringTok{"text"}\NormalTok{, }\DataTypeTok{x =}\NormalTok{ star\_x, }\DataTypeTok{y =}\NormalTok{ star\_y, }\DataTypeTok{label =}\NormalTok{ text, }\DataTypeTok{size =}\NormalTok{ size\_text, }\DataTypeTok{color =}\NormalTok{ color\_text, }\DataTypeTok{fontface =}\NormalTok{ font\_face, }\DataTypeTok{family =}\NormalTok{ font\_style) }\CommentTok{\# create the new ggplot} + + \KeywordTok{print}\NormalTok{(plot)} + + + +\NormalTok{ \} }\ControlFlowTok{else} \ControlFlowTok{if}\NormalTok{ (}\KeywordTok{class}\NormalTok{(}\KeywordTok{as.list.environment}\NormalTok{(plot}\OperatorTok{$}\NormalTok{layers[[}\DecValTok{1}\NormalTok{]])}\OperatorTok{$}\NormalTok{geom)[}\DecValTok{1}\NormalTok{] }\OperatorTok{==}\StringTok{ "GeomBar"}\NormalTok{) \{ }\CommentTok{\# if the ggplot is a dotplot} + +\NormalTok{ coords =}\StringTok{ }\KeywordTok{ggplot\_build}\NormalTok{(plot)}\OperatorTok{$}\NormalTok{data[[}\DecValTok{1}\NormalTok{]]} + +\NormalTok{ xcoords =}\StringTok{ }\KeywordTok{c}\NormalTok{() } + +\NormalTok{ ycoords =}\StringTok{ }\KeywordTok{c}\NormalTok{()} + + \ControlFlowTok{for}\NormalTok{ (i }\ControlFlowTok{in}\NormalTok{ groups)\{ }\CommentTok{\# get the x and y coordinates of the two groups } + +\NormalTok{ xcoord\_temp =}\StringTok{ }\KeywordTok{mean}\NormalTok{(}\KeywordTok{c}\NormalTok{(coords[i,]}\OperatorTok{$}\NormalTok{xmin, coords[i,]}\OperatorTok{$}\NormalTok{xmax))} + +\NormalTok{ xcoords =}\StringTok{ }\KeywordTok{append}\NormalTok{(xcoords, xcoord\_temp)} + +\NormalTok{ ycoord\_temp =}\StringTok{ }\NormalTok{coords[i,}\DecValTok{7}\NormalTok{] }\CommentTok{\# The position of ymax in ggplot\_build(plot)$data[[1]] changed from column 6 to 7} + +\NormalTok{ ycoords =}\StringTok{ }\KeywordTok{append}\NormalTok{(ycoords, ycoord\_temp)} + +\NormalTok{ \}} + + + +\NormalTok{ y\_range =}\StringTok{ }\KeywordTok{ggplot\_build}\NormalTok{(plot)}\OperatorTok{$}\NormalTok{layout}\OperatorTok{$}\NormalTok{panel\_scales\_y[[}\DecValTok{1}\NormalTok{]]}\OperatorTok{$}\NormalTok{limits }\CommentTok{\# get the total height of the y scale} + +\NormalTok{ y\_sum =}\StringTok{ }\KeywordTok{sum}\NormalTok{(}\KeywordTok{abs}\NormalTok{(y\_range))} + +\NormalTok{ y\_scale =}\StringTok{ }\NormalTok{(}\FloatTok{7.5}\OperatorTok{/}\DecValTok{100}\NormalTok{)}\OperatorTok{*}\NormalTok{y\_sum }\CommentTok{\# starting position of the vertical bar (determined \% of the total y scale)} + +\NormalTok{ bar\_height =}\StringTok{ }\NormalTok{y\_scale }\OperatorTok{+}\StringTok{ }\NormalTok{((}\DecValTok{5}\OperatorTok{/}\DecValTok{100}\NormalTok{)}\OperatorTok{*}\NormalTok{y\_sum) }\CommentTok{\# final position of the vertical bar (determined \% of the total y scale in addition to y\_scale)} + + + +\NormalTok{ ycoord\_top =}\StringTok{ }\KeywordTok{max}\NormalTok{(ycoords) }\CommentTok{\# the bar should take the heighest of the two groups as a reference} + +\NormalTok{ coord\_bar =}\StringTok{ }\KeywordTok{data.frame}\NormalTok{(}\DataTypeTok{x =} \KeywordTok{c}\NormalTok{(xcoords[}\DecValTok{1}\NormalTok{], xcoords[}\DecValTok{1}\NormalTok{], xcoords[}\DecValTok{2}\NormalTok{], xcoords[}\DecValTok{2}\NormalTok{]), }\DataTypeTok{y =} \KeywordTok{c}\NormalTok{(ycoord\_top }\OperatorTok{+}\StringTok{ }\NormalTok{y\_scale, ycoord\_top }\OperatorTok{+}\StringTok{ }\NormalTok{bar\_height, ycoord\_top }\OperatorTok{+}\StringTok{ }\NormalTok{bar\_height, ycoord\_top }\OperatorTok{+}\StringTok{ }\NormalTok{y\_scale)) }\CommentTok{\# final coordinates of the bar} + + + +\NormalTok{ star\_x =}\StringTok{ }\KeywordTok{mean}\NormalTok{(xcoords) }\CommentTok{\# x coordinate of the text above the bar (in the middle of the two groups)} + +\NormalTok{ star\_y =}\StringTok{ }\NormalTok{ycoord\_top }\OperatorTok{+}\StringTok{ }\NormalTok{bar\_height }\OperatorTok{+}\StringTok{ }\NormalTok{(text\_height}\OperatorTok{*}\NormalTok{y\_sum) }\CommentTok{\# y coordinate of the text above the bar (above the bar by a determined factor)} + +\NormalTok{ coord\_star =}\StringTok{ }\KeywordTok{c}\NormalTok{(star\_x, star\_y) }\CommentTok{\# x,y coordinates of the text above the bar} + + + +\NormalTok{ plot =}\StringTok{ }\NormalTok{plot }\OperatorTok{+}\StringTok{ }\KeywordTok{geom\_path}\NormalTok{(}\DataTypeTok{data =}\NormalTok{ coord\_bar, }\KeywordTok{aes}\NormalTok{(}\DataTypeTok{x=}\NormalTok{x, }\DataTypeTok{y=}\NormalTok{y), }\DataTypeTok{size =}\NormalTok{ size\_bar, }\DataTypeTok{color =}\NormalTok{ color\_bar, }\DataTypeTok{linetype =}\NormalTok{ line\_type) }\OperatorTok{+}\StringTok{ }\KeywordTok{annotate}\NormalTok{(}\StringTok{"text"}\NormalTok{, }\DataTypeTok{x =}\NormalTok{ star\_x, }\DataTypeTok{y =}\NormalTok{ star\_y, }\DataTypeTok{label =}\NormalTok{ text, }\DataTypeTok{size =}\NormalTok{ size\_text, }\DataTypeTok{color =}\NormalTok{ color\_text, }\DataTypeTok{fontface =}\NormalTok{ font\_face, }\DataTypeTok{family =}\NormalTok{ font\_style) }\CommentTok{\# create the new ggplot} + + \KeywordTok{print}\NormalTok{(plot)} + +\NormalTok{ \}} + +\NormalTok{\}} +\end{Highlighting} +\end{Shaded} + +\begin{Shaded} +\begin{Highlighting}[] +\NormalTok{gg\textless{}{-}}\StringTok{ }\KeywordTok{ggplot}\NormalTok{(c, }\KeywordTok{aes}\NormalTok{(}\DataTypeTok{x =}\NormalTok{ c..aa....ap.., }\DataTypeTok{y =} \KeywordTok{as.numeric}\NormalTok{(m\_duree\_appel)))}\OperatorTok{+} +\StringTok{ }\KeywordTok{geom\_bar}\NormalTok{(}\DataTypeTok{stat =} \StringTok{"identity"}\NormalTok{)}\OperatorTok{+} +\StringTok{ }\KeywordTok{geom\_errorbar}\NormalTok{(}\DataTypeTok{ymin =}\NormalTok{ m\_duree\_appel}\OperatorTok{{-}}\NormalTok{sd\_duree\_appel, }\DataTypeTok{ymax =}\NormalTok{ m\_duree\_appel}\OperatorTok{+}\NormalTok{sd\_duree\_appel)}\OperatorTok{+}\StringTok{ } +\StringTok{ }\KeywordTok{ylim}\NormalTok{(}\OperatorTok{{-}}\DecValTok{500}\NormalTok{,}\DecValTok{5000}\NormalTok{)}\OperatorTok{+} +\StringTok{ }\KeywordTok{labs}\NormalTok{(}\DataTypeTok{title=}\StringTok{"Duree appel"}\NormalTok{)} +\KeywordTok{significativity\_bar}\NormalTok{(gg, }\DataTypeTok{groups =} \KeywordTok{c}\NormalTok{(}\DecValTok{1}\NormalTok{,}\DecValTok{2}\NormalTok{))} +\end{Highlighting} +\end{Shaded} + +\includegraphics{Calcul_téléphone_files/figure-latex/unnamed-chunk-19-1.pdf} + \hypertarget{taux-de-ruxe9ponses}{% \subsubsection{Taux de réponses}\label{taux-de-ruxe9ponses}} @@ -518,7 +822,7 @@ qu'on m'en envoie. \end{Highlighting} \end{Shaded} -\includegraphics{Calcul_téléphone_files/figure-latex/unnamed-chunk-17-1.pdf} +\includegraphics{Calcul_téléphone_files/figure-latex/unnamed-chunk-20-1.pdf} \begin{Shaded} \begin{Highlighting}[] @@ -542,4 +846,9 @@ Je conçois que mon étude est assez sale et que les manières de plotter ne sont vraiment pas optimisées mais ce n'était pas vraiment le but de l'exercice.} +\textbf{Après avoir compilé, je n'ai pas pû le faire en pdf (des erreurs +de polices qui ne passent pas avec LaTeX on dirait \ldots).\\ +Aussi, j'ai remarqué qu'il fallait laissé un retour chariot après la +visualisation du plot sinon le texte se met à côté dans le rendu.} + \end{document} diff --git a/module2/exo4/test notebook.Rmd b/module2/exo4/test notebook.Rmd new file mode 100644 index 0000000..aee8e4b --- /dev/null +++ b/module2/exo4/test notebook.Rmd @@ -0,0 +1,18 @@ +--- +title: "R Notebook" +output: html_notebook +--- + +This is an [R Markdown](http://rmarkdown.rstudio.com) Notebook. When you execute code within the notebook, the results appear beneath the code. + +Try executing this chunk by clicking the *Run* button within the chunk or by placing your cursor inside it and pressing *Ctrl+Shift+Enter*. + +```{r} +plot(cars) +``` + +Add a new chunk by clicking the *Insert Chunk* button on the toolbar or by pressing *Ctrl+Alt+I*. + +When you save the notebook, an HTML file containing the code and output will be saved alongside it (click the *Preview* button or press *Ctrl+Shift+K* to preview the HTML file). + +The preview shows you a rendered HTML copy of the contents of the editor. Consequently, unlike *Knit*, *Preview* does not run any R code chunks. Instead, the output of the chunk when it was last run in the editor is displayed. diff --git a/module2/exo4/test notebook.nb.html b/module2/exo4/test notebook.nb.html new file mode 100644 index 0000000..ff0850a --- /dev/null +++ b/module2/exo4/test notebook.nb.html @@ -0,0 +1,1843 @@ + + + + + + + + + + + + + +R Notebook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + +

    This is an R Markdown Notebook. When you execute code within the notebook, the results appear beneath the code.

    +

    Try executing this chunk by clicking the Run button within the chunk or by placing your cursor inside it and pressing Ctrl+Shift+Enter.

    + + + +
    plot(cars)
    + + + +

    Add a new chunk by clicking the Insert Chunk button on the toolbar or by pressing Ctrl+Alt+I.

    +

    When you save the notebook, an HTML file containing the code and output will be saved alongside it (click the Preview button or press Ctrl+Shift+K to preview the HTML file).

    +

    The preview shows you a rendered HTML copy of the contents of the editor. Consequently, unlike Knit, Preview does not run any R code chunks. Instead, the output of the chunk when it was last run in the editor is displayed.

    + + +
    LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpUaGlzIGlzIGFuIFtSIE1hcmtkb3duXShodHRwOi8vcm1hcmtkb3duLnJzdHVkaW8uY29tKSBOb3RlYm9vay4gV2hlbiB5b3UgZXhlY3V0ZSBjb2RlIHdpdGhpbiB0aGUgbm90ZWJvb2ssIHRoZSByZXN1bHRzIGFwcGVhciBiZW5lYXRoIHRoZSBjb2RlLiANCg0KVHJ5IGV4ZWN1dGluZyB0aGlzIGNodW5rIGJ5IGNsaWNraW5nIHRoZSAqUnVuKiBidXR0b24gd2l0aGluIHRoZSBjaHVuayBvciBieSBwbGFjaW5nIHlvdXIgY3Vyc29yIGluc2lkZSBpdCBhbmQgcHJlc3NpbmcgKkN0cmwrU2hpZnQrRW50ZXIqLiANCg0KYGBge3J9DQpwbG90KGNhcnMpDQpgYGANCg0KQWRkIGEgbmV3IGNodW5rIGJ5IGNsaWNraW5nIHRoZSAqSW5zZXJ0IENodW5rKiBidXR0b24gb24gdGhlIHRvb2xiYXIgb3IgYnkgcHJlc3NpbmcgKkN0cmwrQWx0K0kqLg0KDQpXaGVuIHlvdSBzYXZlIHRoZSBub3RlYm9vaywgYW4gSFRNTCBmaWxlIGNvbnRhaW5pbmcgdGhlIGNvZGUgYW5kIG91dHB1dCB3aWxsIGJlIHNhdmVkIGFsb25nc2lkZSBpdCAoY2xpY2sgdGhlICpQcmV2aWV3KiBidXR0b24gb3IgcHJlc3MgKkN0cmwrU2hpZnQrSyogdG8gcHJldmlldyB0aGUgSFRNTCBmaWxlKS4NCg0KVGhlIHByZXZpZXcgc2hvd3MgeW91IGEgcmVuZGVyZWQgSFRNTCBjb3B5IG9mIHRoZSBjb250ZW50cyBvZiB0aGUgZWRpdG9yLiBDb25zZXF1ZW50bHksIHVubGlrZSAqS25pdCosICpQcmV2aWV3KiBkb2VzIG5vdCBydW4gYW55IFIgY29kZSBjaHVua3MuIEluc3RlYWQsIHRoZSBvdXRwdXQgb2YgdGhlIGNodW5rIHdoZW4gaXQgd2FzIGxhc3QgcnVuIGluIHRoZSBlZGl0b3IgaXMgZGlzcGxheWVkLg0K
    + + + +
    + + + + + + + + + + + + + + + + diff --git a/module2/exo4/test.Rmd b/module2/exo4/test.Rmd new file mode 100644 index 0000000..a0854f8 --- /dev/null +++ b/module2/exo4/test.Rmd @@ -0,0 +1,17 @@ +--- +title: "test" +author: "Marc" +date: "08/04/2020" +output: + pdf_document: default + html_document: default +--- + +```{r setup, include=FALSE} +knitr::opts_chunk$set(echo = TRUE) +``` + +J'ai changé la manière de retrouver les coordonnées y : The position of ymax in ggplot\_build(plot)\$data[[1]] changed from column 6 to 7. +Et j'ai changé la manière de retrouver l'échalle en y : panel_ranges in ggplot\_build(plot)\$layout does not exist anymore ... use panel\_scale\_y instead. +J'ai aussi dû mettre à jour R vers la version 3.6.3. +Voici le code modifié de sa fonction : \ No newline at end of file diff --git a/module2/exo4/test.html b/module2/exo4/test.html new file mode 100644 index 0000000..f9e3e54 --- /dev/null +++ b/module2/exo4/test.html @@ -0,0 +1,437 @@ + + + + + + + + + + + + + + + +test + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + +

    J’ai changé la manière de retrouver les coordonnées y : The position of ymax in ggplot_build(plot)$data[[1]] changed from column 6 to 7.
    +Et j’ai changé la manière de retrouver l’échalle en y : panel_ranges in ggplot_build(plot)$layout does not exist anymore … use panel_scale_y instead.
    +J’ai aussi dû mettre à jour R vers la version 3.6.3.
    +Voici le code modifié de sa fonction :

    + + + + +
    + + + + + + + + + + + + + + + diff --git a/module2/exo4/test.pdf b/module2/exo4/test.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6b13d7e3c2d69892b4db4dea9fe98aaf3f864526 GIT binary patch literal 76728 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