R/graph_accroissement_ch.R

#' @title Graphe des accroissements
#'
#' @description Cette fonction réalise un graphe qui pr?sente l'accroissement des variables dendrom?trique de peuplement en fonction de l'?ge
#'
#' @param x : variables des abscisses, ?gale ? "age" ou "an_vegetation"
#' @param y : variables des abscisses, peut ?tre ?gale ? "a.Ho", "a.Do100", "aGha" ou toute autre variable num?rique de la table accroiss
#' @param couleur : variable des couleurs, ?gale ? "lib_disp", "co_trait1" ou "co_ess_princ" ou toute autre variable factorielle de la table plac
#' @param accroiss : table contenant les accroissements peuplement par p?riode, sortie de intervalle_ch.
#' @param plac : table unite issu de la fonction load_xls_to_R_ch(format = "R") ou de load_bdd_to_R_ch
#' @param theme_coop : liste des param?tres graphiques de ggplot, ? remplir avec la fonction theme(). Par d?faut, theme_bw().
#' @return graphique des accroissements de chaque placette
#'
#' @author Quentin Girard
#' @references Protocole Coop chene... document d Ingrid et Claudine
#'
#' @seealso  load_xls_to_R_ch, load_bdd_to_R_ch, intervalle_ch
#' @examples
#' a venir
#'
#' @keywords function
#'
#' @include coopR-package.R
#' @family coopR
#' @export
#' @importFrom ggplot2 ggplot

graph_accroissement_ch <-  function(x = "age", y = "a.Do100", couleur = "lib_disp", accroiss = NA, plac = NA, theme_coop = theme_bw()) {
# v?rification de accroiss et plac
  if (is.null(accroiss)) {
    stop("accroiss doit ?tre renseign?. Il s'agit de la table issue de la fonction intervalle_ch")
  }
  if (is.null(plac)) {
    stop("plac doit ?tre renseign?. Il s'agit des tables de type 'unite' issues des fonction de chargement au format R")
  }

# variables
  tp <- merge(accroiss, plac,  by = "id_unite")
  if (length(setdiff(c(x, y, couleur), names(tp))) != 0) {
     stop("L'une des variables que vous voulez presenter dans le graphe n'est pas presente dans les tables. Verifiez")
  }
  if (length(setdiff(c("pl_sp"), names(tp))) != 0) {
     stop("Il manque la nature de l'unite de suivi (pl_sp) dans les tables. Verifiez")
  }
  tp$x <- tp[,x]
  tp$y <- tp[,y]
  tp$couleur <- as.character(tp[,couleur])
#ordre des mesures
  tp <- tp[with(tp, order(id_unite, no_mesure.i)),]
  tp$ordre <- 1:nrow(tp)

  # etendue de la fenetre graphique
  range_x <- range(tp$x, na.rm = T)
    range_x <- range_x + (range_x[2] - range_x[1])* c(-1, 1) /10
  range_y <- range(tp$y, na.rm = T)
    range_y <- range_y + (range_y[2] - range_y[1])* c(-1, 1) /10

# reference graphique: couleur utilis?e pour les graphes
  list_couleur_RDI <- c("RDI 0" = "black", "RDI 0.25" = "purple", "RDI 0.5" = "orange", "RDI 1" = "red",
                        "RDI croissant" = "blue", "RDI decroissant" = "chocolate", "Detourage" = "forestgreen")
  # les choix des couleurs des courbes et points
  if (couleur == "co_traitement") {
    list_reference <- scale_colour_manual(values = list_couleur_RDI, name = "Scenario")
  } else if (length(unique(tp[,couleur])) <= 7) {
    list_reference <- scale_colour_manual(values = c("forestgreen","red","blue","black","purple","orange","chocolate"), name = couleur)
  } else {
    list_reference <- list()
  }

# graphe
  g <- ggplot(tp) +
    geom_path(aes(x = x, y = y, colour = couleur, group = id_unite, order = ordre, linetype = pl_sp)) +
    geom_point(aes(x = x, y = y, colour = couleur, shape = pl_sp), size = 3) +
    scale_shape_manual(values = c("pl" = 16, "sp" = 1), labels = c("pl" = "Placette", "sp" = "Sous-placette"), name = "Sous-unite") +
    scale_linetype_manual(values = c("pl" = "solid", "sp" = "dashed"), labels = c("pl" = "Placette", "sp" = "Sous-placette"), name = "Sous-unite")+
    theme_coop +
    list_reference +
    coord_cartesian(xlim = range_x, ylim = range_y) +
    labs (x = x, y = y, colour = couleur) +
    ggtitle(label = paste(y, "en fonction de", x))
  print(g)
}
jprenaud-02/coopR documentation built on May 3, 2019, 7:06 p.m.