Graphique problème de prise en compte des dates + Ggplot

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Simon Paul
Messages : 10
Enregistré le : 26 Fév 2019, 11:35

Graphique problème de prise en compte des dates + Ggplot

Messagepar Simon Paul » 26 Avr 2019, 01:02

Je suis novice et je rencontre encore quelques difficultés avec mes graphiques.
Le but est d’obtenir un graphique (un axe unique février à janvier) avec trois courbes représentant chacune l’évolution des concentrations sur une période. 3 courbes = 3 périodes. Chacune des périodes allant de février à janvier pour des années différentes. L'axe des abscisses s’étalera donc de Février à Janvier.

Aujourd’hui j’obtiens une courbe unique avec les trois périodes qui se suivent.
Cela vient de mes dates ou de quelque chose d'autre.

Voici la structure de ma base

Code : Tout sélectionner

DateStart_R                 Date                       Periode                Atrazine        CC        DDT
01/02/2016                 01/02                         1                      0.12            0.36       5           
16/02/2016                16/02                          2                       0.5             0.87      6.2
23/02/2016                16/02                          3                       0.22            0.97      7.4
01/02/2016                 01/02                         1                       0.35             0.38      6.2
16/02/2016                16/02                          2                       0.42              0.85      6.9
23/02/2016                16/02                          3                      0.78              0.65      4.8


Pour la date j’ai fait ça :

Code : Tout sélectionner

Glob$DateStart_R <- as.Date(Glob$DateStart_R, format="%d/%m/%Y")

Il me la considère bien comme une date même si lorsque j’ouvre la table la date s’affiche de cette manière 2016-02-01 mais bon c’est un détail.


Pour avoir les trois dates sur un axe unique (Février à janvier) j’avais pensé prendre juste le jour et le mois (colonne Date). Mais impossible de faire reconnaître cette valeur comme une date. Alors je suis bloquée. Peut-être que cela vient également de la structure de ma table ou le script de mon graphique.
Pour mon graphique je fais cela :

Code : Tout sélectionner

g<-ggplot(Glob, aes(x=DateStart_R, y=Chlordecone, fill=Periode)) +
   geom_point(aes(fill= Periode, color= Periode))+
  geom_step (aes(fill= Periode, color= Periode),size=0.8)+
g

Merci d'avance pour votre aide.

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: Graphique problème de prise en compte des dates + Ggplot

Messagepar Mickael Canouil » 26 Avr 2019, 07:59

Bonjour,

vous devriez consulter des ressources sur ggplot2 et notamment les principes derrières ("grammar of graphics").

Ceci dit, chaque élément dans la fonction aes(), est une aesthetic, soit un élément du graphique.
Par exemple, dans votre cas, x (l'abscisse) ne dépendra que de la colonne "DateStart_R" du data.frame fourni dans "data".
Il en va de même pour les autres.
Donc, si votre axe x est "bon", le problème ne peut pas venir de "aes(x = DateStart_R)", mais d'un autre élément.
Vous devriez sur ce principe identifier l'élément qui concerne votre problème.

Il ne sert à rien de multiplié le code "fill = Periode" partout, si cette aesthetic est partagé sur toutes les couches du graphiques ("geom_"), il suffit de le mettre dans la fonction ggplot().
N'indiquez une aesthetic dans un "geom_" en particulier, que si celle-ci ne concerne que ce "geom_".

Code : Tout sélectionner

library(ggplot2)
.data <- read.table(header = TRUE, stringsAsFactors = FALSE, text = "DateStart_R                 Date                       Periode                Atrazine        CC        DDT
01/02/2016                 01/02                         1                      0.12            0.36       5           
16/02/2016                16/02                          2                       0.5             0.87      6.2
23/02/2016                16/02                          3                       0.22            0.97      7.4
01/02/2016                 01/02                         1                       0.35             0.38      6.2
16/02/2016                16/02                          2                       0.42              0.85      6.9
23/02/2016                16/02                          3                      0.78              0.65      4.8")

.data[["DateStart_R"]] <- as.Date(.data[["DateStart_R"]], format = "%d/%m/%Y")


ggplot(
  data = .data,
  mapping = aes(x = DateStart_R, y = Atrazine, fill = Periode, colour = Periode)
) +
  geom_point() +
  geom_step(size = 0.8)


Image

Code : Tout sélectionner

.data[["Periode"]] <- as.factor(.data[["Periode"]])

ggplot(
  data = .data,
  mapping = aes(x = DateStart_R, y = Atrazine, fill = Periode, colour = Periode)
) +
  geom_point() +
  geom_step(size = 0.8)


Image

PS: c'est mieux de fournir un code qui fonctionne
Simon Paul a écrit :

Code : Tout sélectionner

g<-ggplot(Glob, aes(x=DateStart_R, y=Chlordecone, fill=Periode)) +
   geom_point(aes(fill= Periode, color= Periode))+
  geom_step (aes(fill= Periode, color= Periode),size=0.8)+
g


Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr

Simon Paul
Messages : 10
Enregistré le : 26 Fév 2019, 11:35

Re: Graphique problème de prise en compte des dates + Ggplot

Messagepar Simon Paul » 26 Avr 2019, 09:54

Merci beaucoup pour votre aide
Oui pardon je sais que mon script n'est pas parfait et je l’avais simplifié afin que se soit plus lisible.
Toutefois j’ai toujours le même problème.
Mes dates allant de 2016 à 2019 (période 1=février 2016-janvier 2017; période 2=février 2017-janvier 2018 ...) , les périodes ne se superposent pas sur un axe unique (allant de février à janvier), mais se suivent sur un même axe (période1 puis 2 puis 3).
Je souhaite que les périodes se superposent (trois courbes), sur un axe unique (févier-janvier).
Merci d'avance.

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: Graphique problème de prise en compte des dates + Ggplot

Messagepar Mickael Canouil » 26 Avr 2019, 10:01

Donc votre axe "x" ne peut pas être de type "date" ou alors il faut "tricher" en forçant l'année à être la même pour toutes les dates.
Pour ce qui est des "courbes", le jeu de données ne permet pas d'en avoir.

Code : Tout sélectionner

library(ggplot2)
.data <- read.table(header = TRUE, stringsAsFactors = FALSE, text = "DateStart_R                 Date                       Periode                Atrazine        CC        DDT
01/02/2016                 01/02                         1                      0.12            0.36       5           
16/02/2016                16/02                          2                       0.5             0.87      6.2
23/02/2016                16/02                          3                       0.22            0.97      7.4
01/02/2016                 01/02                         1                       0.35             0.38      6.2
16/02/2016                16/02                          2                       0.42              0.85      6.9
23/02/2016                16/02                          3                      0.78              0.65      4.8")

.data[["DateStart_R"]] <- as.Date(.data[["DateStart_R"]], format = "%d/%m/%Y")
.data[["Periode"]] <- as.factor(.data[["Periode"]])
.data[["date_same_year"]] <- as.Date(.data[["Date"]], format = "%d/%m")

ggplot(
  data = .data,
  mapping = aes(x = date_same_year, y = Atrazine, fill = Periode, colour = Periode)
) +
  geom_point() +
  geom_step(size = 0.8)

Image
Mickaël
mickael.canouil.fr | rlille.fr


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité