library(tools4DCE)

Réalisation de graphiques

Pour rendre les graphiques lisibles lorsqu'une longue chronique comporte quelques données très éloignées du reste de la gamme de mesure, on remplace ces données par une étiquette localisée au sommet ou à la base du graphique selon que la valeur non affichée est inférieure ou supérieure au reste de la gamme de valeurs.

Pour écrêter les valeurs on fait appel à la fonction filtre_donnees_extremes.

la fonction filtre_donnees_extremes sert à écrêter les données que l'on ne souhaite pas afficher à l'écran.

Par exemple si on veut remplacer toutes les données inférieures à 3 par 3 et toutes celles supérieures à 9 par 9 :

filtre_donnees_extremes(x=seq(1:10), xmin=3, xmax=9)

la fonction compte_decimales sert à déterminer combien de chiffres significatifs comporte un nombre.

Elle sert à déterminer combien de chiffres significatifs il faut conserver sur l'axe des ordonnées dans le graphique final.

compte_decimales(3.234)

arrondi

Fonction pour calculer les arrondis selon les règles usuelels en France (et non comme la fonction round qui arrondi différemment les nombres terminant par 0.5 selon si leur partie entière est paire ou impaire).

round(2.5)
arrondi(2.5)

round(1.5)
arrondi(1.5)

PercentileDCE

Calcul le percentile selon les règles DCE. Dans l'exemple ci-dessous le percentile 90 correspond au 18ème rang sur 20 valeurs (rang = arrondi((20 x 0.9) + 0.5))

test<-sample(x=1:100, size=20, replace=T)
test%>%sort
PercentileDCE(test, type=0.9)

Couleurs et échelle des fonds graphiques

Les couleurs et les valeurs des seuils pour les différents paramètres sont listés dans le jeu de données base_seuils

head(base_seuils)

pour avoir la couleur on croise sur les colonnes TYPE et CLASSE avec la table couleurs_classes

head(couleurs_classes)

pour classer les levels on utilise la colonne CLASSE de la data.frame ordre_facteurs_qualite

head(ordre_facteurs_qualite)

Génération d'un objet de classe seuil

Un objet de classe seuil sert à paramétrer les fonds colorer des graphiques. Il précise l'intervalle entre lequel il faut appliquer une classe de qualité et la couleur de la représentation graphique correspondante.

Pour créer un objet de classe seuil on utilise la fonction setSeuils

setSeuils(
  nom_parametre = "parametre test",
  nom_seuil = "AM 25 janv 2010",
  type_seuil = "DCE",
  code_parametre = "1301",
  synonymes_parametre = "1301",
  support = "3",
  code_unite = "27",
  base_seuils_color = tools4DCE::base_seuils %>% subset(NOM == "TEMPERATURE" &
                                               SPECIFICITE == "CYPRINICOLE") %>% left_join(couleurs_classes, by = c("CLASSE", "TYPE")) %>%
    select(SEUILMIN, SEUILMAX, CLASSE, NOM_COULEUR) %>% mutate_at("CLASSE", factor),
  bornesinfinclue = T
)

Pour créer une liste de seuils prédéfinis à partir des fichiers de données il suffit de taper la commande makeSeuils(). A ce jour r length(makeSeuils()) seuils différents sont ainsi définis. On peut se limiter à créer la liste pour un ensemble de codes paramètres en renseignant l'argument CdParametre. Idem pour les codes support, fraction, pour les types de seuils (DCE ou NON_DCE), pour les spécificités (ex. SALMONICOLE ou CYPRINICOLE).

test<-makeSeuils(CdParametre=c("1340", "1301"), specificites=c("CAS_GENERAL", "CYPRINICOLE"), type_seuil = "DCE")
print(test)

Exemples de graphs en mode points

data0<-data.frame(DatePrel=c("2019-01-01 12:30:00", "2020-05-03 00:00:00","2020-10-25 12:30:00", "2021-07-18 12:30:00")%>%as.POSIXct(tz="Europe/Paris"), RsAna=c(12,35.5,58.3, 42), LqAna=c(3))
graphDCE_points(data0, seuils=makeSeuils(CdParametre = "1340", type_seuil="DCE"), affiche_LQ = T, ymini = 0)

représentation des points hors gamme de mesure

En cas de points hors de l'échelle, la fonction trace remplace ces points par une étiquette colorée qui reprend la valeur du point manquant affiché de la couleur correspondant à sa classe de qualité.

graphDCE_points(data0, seuils=makeSeuils(CdParametre = "1340", type_seuil="DCE"), ymaxi=55, titre = "Nitrates", bilan_annuel = T, nom_legende = "Classe \nqualité")

En l'état, la fonction graphDCE_points ne permet pas d'afficher de légende pour l'affichage des LQ. Ce manque peut être contourné en combinant la fonction legend_LQ() avec la fonction plot_grid du package cowplot.

graph<-graphDCE_points(data0, seuils=makeSeuils(CdParametre = "1340", type_seuil="DCE"), affiche_LQ = T, ymini = 0)
plot_grid(graph, legend_LQ(), rel_heights = c(9,1), ncol=1)

graphs en barre

On peut également réaliser des graphiques en barre, par exemple pour faire des bilans annuels

data<-data.frame(annee=seq(2010,2013), RsAna=c(12,15.5,67,18.3))
graphDCE_bar(data, seuils=makeSeuils(CdParametre = "1340", type_seuil="DCE"),ymaxi=60)

Attribution d'une classe de qualité à des résultats

La fonction affecte une classe permet d'affecter une classe à un résultat

affecte_une_classe(c(10,10.1,50, 50.1), seuil=makeSeuils(CdParametre="1340", type_seuil = "DCE"))

Bilan sur les taux de quantification

Le package permet de réaliser des graphiques bilans sur les taux de quantification.

donnees<-data.frame(Parametre=rep(letters[1:5], 100), RsAna=sample(0.1:100, 500, replace=TRUE), LqAna=c(0.5,1,2,6))
donnees<-donnees%>%mutate(RsAna=ifelse(RsAna<LqAna, LqAna, RsAna))
donnees<-donnees%>%mutate(CdRqAna=ifelse(RsAna>LqAna, "1", ifelse(sample(1:100,5)>10,"10","1")))
seuils<-makeSeuils(type_seuil="DCE", CdParametre = "1340")
table_distribution(donnees, seuil=seuils)

Il permet également de faire le bilan par paramètre

donnees<-data.frame(parametres=rep(c("1301", "1340", "1335"), 100), RsAna=sample(0.1:100, 300, replace=TRUE), LqAna=c(0.5,1,6))
donnees<-donnees%>%mutate(RsAna=ifelse(RsAna<LqAna, LqAna, RsAna))
donnees<-donnees%>%mutate(CdRqAna=ifelse(RsAna>LqAna, "1", ifelse(sample(1:100,5)>10,"10","1")))
seuils<-makeSeuils(CdParametre=donnees$parametres%>%unique, specificites=c("CYPRINICOLE", rep("CAS_GENERAL",2)), type_seuil = "DCE")
bilan<-groupe_tableau_distribution(donnees, col_CdParametre="parametres", col_CdSupport=NULL, col_CdFraction=NULL, col_CdUnite=NULL, seuils = seuils)
print(bilan)

seuils$TEMPERATURE@seuils

et de faire une sortie graphique de ce bilan

graphDCE_distribution(bilan, titre="Bilan par paramètre") 

Ajout d'informations à partir du référentiel SANDRE

Ajout du nom de paramètre à partir de codes paramètres

La fonction ajoute_nom_param permet d'ajouter à une data frame qui contient des codes paramètres SANDRE les noms correspondants

donnees<-data.frame(code=c("1301", "1302", "1303"))
ajoute_nom_param(donnees, col_parametre="code")

Ajout du nom des unités à partir de codes SANDRE unités

La fonction ajoute_nom_unite permet d'ajouter à une data frame qui contient des codes unités SANDRE les symboles ou nom d'unité correspondants.

donnees<-data.frame(CdUniteMesure=c("129", "13", "133"))
ajoute_nom_unite(donnees, col_unite="CdUniteMesure")

Chargement de données

Le package tools4DCE offre plusieurs fonctions pour charger des données de qualité des eaux.

Exports Naïades physicochimique

Le site http://www.naiades.eaufrance.fr/acces-donnees#/physicochimie permet d'exporter sous forme de fichiers .zip des résultats physicochimiques.

Le chargement de ces données se fait via la commande resultats<-importe_Naiades_PC("export.zip")

Il est possible de restreindre les résultats à une emprise géographique limitée en passant en option un objet sf de l'emprise d'intérêt.

Exemple : shp<-charge_shp_SAGE("Vilaine") resultats<-importe_Naiades_PC("export.zip", shp)

Les données sont stockées sous forme de liste de data.frame.

  resultats[["analyses"]] contient les analyses,
  resultats[["cond_env"]] contient les conditions environnementales relevées lors des analyses
  resultats[["operations"]] contient le descriptif des opérations
  resultats[["CdRqAna"]] contient la signification des divers codes remarques
  resultats[["CdUniteMesure"]] contient la table de correspondance code sandre / nom de l'unité
  resultats[["CdInsituAna"]] contient la table de correspondance code sandre / nom des codes analyses in situ
  resultats[["CdAccreAna"]] contient la table de correspondance code sandre / nom des codes accréditation de l'analyse
  resultats[["CdStatutAna"]] contient la table de correspondance code sandre / nom du statut de l'analyse
  resultats[["CdDifficulteAna"]] contient la table de correspondance code sandre / nom des codes de difficulté d'analyses
  resultats[["CdProducteur"]] contient la table de correspondance code sandre / nom des producteurs de données

Fichiers QESU PHY V2

Le package permet l'import de fichiers xml au format QESU_PC_v2 tel que défini par le SANDRE

Exemple : Resultats<-import_QESU_PHY_v2("fichier.xml")

Les résultats sont stockés dans une liste de data.frame avec des noms de colonne identiques à ceux des imports Naïades

Fichiers QESU PHY V3

Le package permet l'import de fichiers xml au format QESU_PC_v3 tel que défini par le SANDRE

Exemple : Resultats<-import_QESU_PHY_v3("fichier.xml")

Les résultats sont stockés dans une liste de data.frame avec des noms de colonne identiques à ceux des imports Naïades

Import de données hydrobiologiques depuis HubEau

Le package permet d'importer les résultats d'Hub-Eau sous R facilement

Import des stations de mesures avec des données hydrobiologiques

On peut importer par code station

str(import_hubeau_staq_hbio(liste_stations=c("03174000", "04216000")))

Ou bien par emprise géographique (en se limitant éventellement aux stations qui ont des données sur une période déterminée et pour un type d'indice limités).

Vilaine<-charge_shp_SAGE(nom_sage="Vilaine")
str(import_hubeau_staq_hbio(emprise=Vilaine, an_debut=2018, an_fin=2018, indice=c("poi")))

Import des indices hydrobiologiques

On peut importer les indices disponibles par code station. Ces indices sont remis en forme pour être directement valorisables avec les fonctions graphiques du package.

str(import_hubeau_indices_hbio(liste_stations=c("03174000", "04216000"), indice=c("mphy")))

Outils pesticides

Le programme contient des outils pour travailler avec les pesticides.

Calculer la somme de pesticides

La fonction calcule_somme_pesticides permet de calculer, pour chaque prélèvement, la somme des pesticides (dont la liste des codes SANDRE peut être passée en option). Elle rend les résultats sous forme d'un tableau dont les colonnes sont compatibles avec l'utilisation des fonctions graphiques ou autre.

data<-data.frame(DatePrel=Sys.Date() + rep(sort(sample(1:500, 10)),3), RsAna=c(round(runif(60,0,0.8), 2)), LqAna=c(0.1), CdStationMesureEauxSurface=c("A","B","C"), CdParametre=c("1200","1201"), CdUniteMesure="133")
data$CdRqAna<-ifelse(data$RsAna>=data$LqAna, "1","10")
calcule_somme_pesticides(data)
graphDCE_points(calcule_somme_pesticides(data), seuils=makeSeuils(CdParametre="6276", type_seuil="AEP"), separ_stations = "CdStationMesureEauxSurface", ymini=0)
## convertir les différentes formes de l'azote 
data<-data.frame(CdParametre=c("1335", "1339", "1340", "1319"),
                            RsAna=c(0.5,0.1,30,2),
                            CdRqAna=c("1","10","1","1"))

calcule_formes_azote(data, CdRqAna="CdRqAna")


AnthonyDEBUR/tools4DCE documentation built on June 10, 2025, 8:56 a.m.