IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

Utilisation de ggplot pour les barres d'erreur


Sujet :

R

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 40
    Points : 35
    Points
    35
    Par défaut Utilisation de ggplot pour les barres d'erreur
    Bonjour,

    J'essaie de réaliser un graphique avec la fonction ggplot. Je souhaite mettre pour chaque jour la moyenne de ma variable avec l'écart-type en barre d'erreur.

    Voici les graphiques que j'ai réalisé :

    Nom : Capture.PNG
Affichages : 1927
Taille : 73,7 Ko

    Et voici les codes correspondants :

    Pour le graphique du haut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    library(ggplot2)
    E1=dataset[,1]
    E2=dataset[,2]
    E3=dataset[,3]
    T1=colnames(dataset)[1]
    T2=colnames(dataset)[2]
    T3=colnames(dataset)[3]
     
    # Données d'abscisses 
    dates = as.POSIXct(dataset[,1])
    dates = strptime(dates, "%Y-%m-%d") 
     
    p<- ggplot(dataset, aes(x=dates, y=E2)) + 
      geom_line() +
     geom_point()+
      geom_errorbar(aes(ymin=E2-E3, ymax=E2+E3), width=.2,
                    position=position_dodge(0.05))
    p<- p+labs( x=T1, y = T2)
    print(p)
    Pour le graphique en bas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    library(ggplot2)
    E1=dataset[,1]
    E2=dataset[,2]
    E3=dataset[,3]
    T1=colnames(dataset)[1]
    T2=colnames(dataset)[2]
    T3=colnames(dataset)[3]
     
    p<- ggplot(dataset, aes(x=E1, y=E2)) + 
      geom_line() +
       geom_point()+
      geom_errorbar(aes(ymin=E2-E3, ymax=E2+E3), width=.2,
                    position=position_dodge(0.05))
    p<- p+labs( x=T1, y = T2)
    print(p)
    Je cherche à rajouter sur le graphique du bas la ligne continue comme sur celui du haut et le format date de l'abscisse identique à celui du haut mais je n'y arrive pas. Dès que je modifie mon axe X en format date, le graphique du bas se transforme comme celui du haut et je n'arrive plus à avoir les barres d'erreur comme elles sont actuellement dans le graphique du bas. Avez vous une proposition s'il vous plait ?

    Bonne journée.

  2. #2
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 276
    Points : 561
    Points
    561
    Par défaut
    Bonjour,

    pour que ce soit effectif il faut que les changements de variables se fassent dans le data.frame directement et pas en dehors ou alors dans ta fonction ggplot tu recrées un data.frame.
    Par exemple avec un data.frame avec cette structure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    str(dataset)
    'data.frame':   59 obs. of  3 variables:
     $ E1: Date, format: "2018-01-01" "2018-01-02" "2018-01-03" "2018-01-04" ...
     $ E2: int  3 2 6 5 2 2 9 3 5 5 ...
     $ E3: num  0.948 0.641 0.895 0.88 0.761 ...
     
    # le code suivant fonctionne parafaitement :
    ggplot(dataset, aes(x = E1, y = E2)) + 
      geom_point() + geom_path() + 
      geom_errorbar(aes(ymin = E2-E3, ymax = E2 + E3))
    Dans ton deuxième graph il ne me semble pas que tu es spécifié que E1 est au format date. Tu peux regarder du côté de as.Date aussi.

    cdlt

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 40
    Points : 35
    Points
    35
    Par défaut
    Bonjour,

    J'ai modifié dans le data frame le format date pour le mettre comme le votre mais le résultat est identique à précédemment. Pouvez vous me montrer le graphique que votre script vous renvoie s'il vous plait ?

  4. #4
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 276
    Points : 561
    Points
    561
    Par défaut
    le voici :
    Nom : g1.png
Affichages : 1869
Taille : 15,0 Ko
    cdlt

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 40
    Points : 35
    Points
    35
    Par défaut
    Merci j'ai réussi à le mettre en place.

    Si je souhaite modifier l'axe des abscisses pour avoir plus de détails au niveau des dates, comment faire s'il vous plait ? De même si je souhaite modifier les couleurs des barres d'erreurs ou de la courbe ou même le fond du graphique.

    Merci pour votre réponse.

  6. #6
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 276
    Points : 561
    Points
    561
    Par défaut
    Bonjour,

    pour ce qui est de l'axe des abcisses il te faut jouer avec la fonction scale_x_date et ces différents arguments. La librairie scales est aussi utile.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    tab <- data.frame(E1 = seq(as.Date("2018-01-01"), as.Date("2018-01-31"), by = "day"))
    tab$E2 <- rpois(31, 4)
    tab$E3 <- runif(31, 0.3, 0.6)
     
    library(ggplot2)
    library(scales)
     
    g <- ggplot(tab, aes(E1, E2)) + geom_path() + geom_point()
    g <- g + geom_errorbar(aes(ymin = E2-E3, ymax = E2+E3))
     
    g + scale_x_date(labels = date_format("%d"), date_breaks = '1 week')
    g + scale_x_date(labels = date_format("%d"), date_breaks = '1 month')
     g + scale_x_date(labels = date_format("%d"), date_breaks = 'day')
    Pour ce qui est de la couleur tu peux rajouter color = ... dans les fonctions geom_path et geom_errorbar. Pour ce qui est de la couleur du fond il te faut jouer avec la fonction theme. Voir les nombreux tuto pour ggplot2 sur le net.

    cdlt

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 40
    Points : 35
    Points
    35
    Par défaut
    Merci pour ces informations.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/02/2016, 11h03
  2. Utilisation des références pour les tableaux
    Par Bouboubou dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 4
    Dernier message: 14/12/2005, 13h47
  3. utilisation de UpdateResource pour les icônes ?
    Par JuanLopez1966 dans le forum Windows
    Réponses: 5
    Dernier message: 12/01/2005, 08h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo