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 :

Tracer une courbe sans abscisse


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    Par défaut Tracer une courbe sans abscisse
    Bonjour,

    Je rencontre une difficulté pour tracer un graphique, je possède le tableau suivant :
    LOT pH 1 pH 2 pH 3
    1 6,45 6,38 6,20
    2 6,49 6,35 6,15
    3 6,50 6,40 6,25

    Je souhaiterai tracer sur un graphique avec trois courbes, une pour chaque lot. Une courbe représente l'évolution du pH (pH 1, 2 puis 3). Il n'y a donc pas d'abscisse dans le graphe mais seulement l'évolution de l'ordonnée. Je ne vois pas comment rédiger ce script avec un plot car l'absence d'abscisse pose problème.

    Avez vous une idée de comment tracer un tel graphique s'il vous plait ?

    Merci pour votre aide.

    Jonathan

  2. #2
    Membre chevronné
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Par défaut
    Fais d'abord quelque chose toi même.

  3. #3
    Membre averti
    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
    Par défaut
    Citation Envoyé par Nazoïde Voir le message
    Fais d'abord quelque chose toi même.
    Ca a le mérite d'être clair. Je te remercie.

  4. #4
    Membre chevronné
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Par défaut
    Ce que tu as fait est où?

  5. #5
    Membre averti
    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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    rm(list=ls())
    df<-data.frame(LOT=c(1,2,3),pH1=c(6.4,6.3,6.2),pH2=c(5.4,5.3,5.2),pH3=c(4.4,4.3,4.2))
    df<-data.frame(df,row.names = 1)
    df<- t(df)
    a=length(df[,1])
    b=length(df[1,])
    for (i in 1:a)
    {
      df[i,b+1]<-i
    }
    Pour résoudre le problème, j'essaie de créer une colonne en plus dans mon tableau qui met une valeur unitaire (1 puis 2 puis 3) pour que je trace chaque colonne LOT en fonction de cette colonne contenant des valeurs unitaires.

    Je travaille sur la boucle for de création de la colonne unitaire actuellement.

  6. #6
    Membre Expert
    Inscrit en
    Novembre 2009
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 707
    Par défaut Tracer une courbe sans abscisse
    Bonjour Jonathan,

    Voici une proposition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    > df<-data.frame(LOT=c(1,2,3),
    +                pH1=c(6.4,6.3,6.2),
    +                pH2=c(5.4,5.3,5.2),
    +                pH3=c(4.4,4.3,4.2))
    > df
      LOT pH1 pH2 pH3
    1   1 6.4 5.4 4.4
    2   2 6.3 5.3 4.3
    3   3 6.2 5.2 4.2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    > library(reshape2)
    > df <- melt(df,id="LOT")
    > names(df) <- c("timevar","pH","LOT")
    > df
      timevar  pH LOT
    1       1 pH1 6.4
    2       2 pH1 6.3
    3       3 pH1 6.2
    4       1 pH2 5.4
    5       2 pH2 5.3
    6       3 pH2 5.2
    7       1 pH3 4.4
    8       2 pH3 4.3
    9       3 pH3 4.2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    > df <- reshape(data=df,
    +           idvar="pH",
    +           v.names="LOT",
    +           timevar="timevar",
    +           direction="wide")
    > df
       pH LOT.1 LOT.2 LOT.3
    1 pH1   6.4   6.3   6.2
    4 pH2   5.4   5.3   5.2
    7 pH3   4.4   4.3   4.2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    library(lattice)
    xyplot(LOT.1 + LOT.2 + LOT.3 ~ pH, data = df, type = "b",
           auto.key = list(columns = 3),
           xlab="", ylab="pH")
    Cordialement,

  7. #7
    Membre averti
    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
    Par défaut
    Bonjour mgdondon,

    Merci pour ta réponse le rendu est ce que je cherchais à faire.

    Je réalise actuellement une itération pour éviter de mettre le nom de chaque lot dans la fonction xyplot. Je possède un tableau avec de nombreux lots donc le but est d'avoir une boucle for qui regarde pour chaque lot et trace la courbe sur le graphique.

    J'ai donc complété le code que tu as mis précédemment de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    library(lattice)
    a=length(df[1,])
    for (i in 2:a)
    {            
    xyplot(df[,i] ~ pH, data = df, type = "b",
                        auto.key = list(columns = 3),
                        xlab="", ylab="pH", new=T)
    }
    L'argument "a" me permet de connaitre mon nombre de colonnes et donc de programmer mon itération, et l'argument "new=T" dans la fonction xyplot me permet de rajouter une courbe l'une sur l'autre. Cependant je rencontre un problème, mon code fonctionne sur R et aucun message d'erreur n'est renvoyé mais aucun graphique ne se trace et je ne vois pas pourquoi. J'ai paramétré manuellement la variable i en mettant 2, puis 3 et 4 et cela fonctionne mais lorsque je passe avec la boucle aucun graphique ne se trace.

    Merci pour ton aide précédemment.

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/09/2014, 23h08
  2. Tracer une courbe dans un formulaire ?
    Par jessy212 dans le forum Access
    Réponses: 5
    Dernier message: 04/09/2006, 16h46
  3. Tracer une courbe avec 2 tableau de points
    Par babarpapa dans le forum 2D
    Réponses: 3
    Dernier message: 19/04/2006, 15h24
  4. [Images] [Librairie] Tracer une courbe ???
    Par cedre22 dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 20/02/2006, 14h53
  5. Tracer une courbe théorique sur un TChart
    Par marsupilami34 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 29/09/2005, 11h46

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