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 :

Diagrammes de distribution avec plusieurs courbes


Sujet :

R

  1. #1
    Membre à l'essai Avatar de Shyma
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 100
    Points : 19
    Points
    19
    Par défaut Diagrammes de distribution avec plusieurs courbes
    Bonjour,

    Je voudrais faire un graphe de distribution avec plusieurs données que je récupère de plusieurs fichiers, j'ai essayé pour les données d'utiliser "read.table" pour créer un tableau avec le premier fichier qui correspond à la première courbe, mais là je m'aperçois que je ne peux pas ouvrir en même temps plusieurs fichiers avec read.table(), en même temps je voudrais donner un nom et une couleur spécifique pour chaque courbes.

    Avec Data.frame() c'est la création de matrice avec des données en entrée, moi je voudrais à partir de mes fichiers.

    Je suis assez perdue, je n'utilise pas du tout R

    Merci pour votre aide ou orientation vers une solution

  2. #2
    Membre éclairé
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Points : 793
    Points
    793
    Par défaut
    read.table permet d'ouvrir plusieurs fichiers. Il y a donc une autre erreur dans ton script. Si tu veux qu'on t'aide à la trouver, envoie-nous ton code de lecture et le message d'erreur.

  3. #3
    Membre à l'essai Avatar de Shyma
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 100
    Points : 19
    Points
    19
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    library(ggplot2)
     
    t<-read.table("fichier.txt", sep=" " )
     
    ggplot(t, aes(x=t)) + 
      geom_density()
    Pour un seul fichier, mais je ne sais pas comment faire pour plusieurs fichiers, et puis pour donner le nom, et couleur pour chaque graphe.
    PS : Je veux afficher le tout dans un seul graphe, pour pouvoir comparer

    Le fichier txt contient des pourcentage, donc une seule colonne de pourcentage.

  4. #4
    Membre éclairé
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Points : 793
    Points
    793
    Par défaut
    Tu ne donnes pas assez de détail. Par exemple, il faut savoir si :
    1) les noms des fichiers son connus par avance ou non ;
    2) les tables ont des noms de colonnes en commun.

    Pour ce qui est de lire plusieurs fichiers, il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tab1 <- read.table( "fic1.txt", ...
    tab2 <- read.table( "fic2.txt", ...
    ...

  5. #5
    Membre à l'essai Avatar de Shyma
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 100
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Oui, les fichiers (6 en tout) sont connus d'avance, et ils ont la même forme, une colonne de pourcentages. Par contre, ce que je voudrais c'est d'afficher pour chaque fichier un graphe de distribution, mais que cela soit dans une seule figure, donc les 6 graphes en même temps, mais les distinguer avec leurs noms et couleurs, ça par contre je ne sais pas comment le faire ?

    Un peu comme ça, ici c'est 2 graphes, moi je voudrais les 6 en même temps : http://www.sthda.com/french/wiki/ggp...ion-de-donnees

    Mais là encore, ils ont utilisé data.frame, donc spécifier les données en entrée, et non par un fichier ?

  6. #6
    Membre actif
    Profil pro
    Loisir
    Inscrit en
    Novembre 2011
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Loisir

    Informations forums :
    Inscription : Novembre 2011
    Messages : 159
    Points : 284
    Points
    284
    Par défaut
    Bonjour,

    en gros tu souhaites quelque chose dans ce style :
    Nom : Rplot01.png
Affichages : 244
Taille : 3,8 Ko
    Si c'est bien le cas, voici ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    p2 <- geom_density(data = data.frame(v2), aes(x=v2), colour = "red")
    p3 <- geom_density(data = data.frame(v3), aes(x=v3), colour = "blue")
    ggplot() + p2 +p3
    Dans mon exemple v2 et v3 sont des vecteurs de valeur suivant une distribution normale.

    Pour ton cas, il faut :
    1. charger dans une variable chacun de tes fichiers avec read.table()
    2. définir un geom_density pour chaque. Pas besoin de convertir tes variables qui sont déjà des data.frames
    3. tracer le graphique et faire les ajustements de mise en page (légende, titre, ...)


    Bonne journée

  7. #7
    Membre éclairé
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Points : 793
    Points
    793
    Par défaut
    Une solution simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    data1 <- cbind( read.table( "fic1.txt", ...autres parametres de read.table), FIC="fic1")
    data2 <- cbind( read.table( "fic2.txt", ...autres parametres de read.table), FIC="fic2")
    # et cela pour les six fichiers
    tableau <- rbind( data1, data2, data3, data4, data5, data6)
    On peut alors distinguer chacun des graphes par le nom du fichier qui lui est associé dans la colonne FIC.

    Mais là encore, ils ont utilisé data.frame, donc spécifier les données en entrée, et non par un fichier ?
    Le fichier est un stockage externe à R et à tout autre logiciel, permanent et sur disque dur. Quelque soit le logiciel, il faut le lire et le stocker en interne dans un espace mémoire interne au logiciel pour le manipuler. Si les données sont modifiées dans le programme, ces modifications sont perdues à la sortie du programme sauf si on les a précédemment sauvées sur disque, dans un fichier, soit le fichier d'origine - alors on écrase les anciennes données - soit dans un nouveau fichier. Dans R, le data.frame est la manière de structurer en interne la zone mémoire où sont stockées les données lues dans un fichier. Le data.frame correspond à la notion de tableau pour n'importe quel tableur comme Excel ou Calc de LibreOffice.

  8. #8
    Membre à l'essai Avatar de Shyma
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 100
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Merci pour vos réponses, j'ai utilisé la méthode de @Supernul, et cela m'a donné ce graphe :
    Nom : Rplot_Id_Protein.png
Affichages : 234
Taille : 9,0 Ko


    Je voudrais ajouter un titre pour chaque graphe pour les distinguer en plus de la couleur, mais aussi un titrer principal. Comment dois-je faire ?

    Merci pour votre aide encore une fois.

  9. #9
    Membre à l'essai Avatar de Shyma
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 100
    Points : 19
    Points
    19
    Par défaut
    J'ai ce type d’erreurs en essayant d’afficher, le graphe de 5 fichiers, quelqu'un a une idée de ce que cela veut dire ??


    Error: Aesthetics must be either length 1 or the same as the data (5377): x

    Merci

  10. #10
    Membre actif
    Profil pro
    Loisir
    Inscrit en
    Novembre 2011
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Loisir

    Informations forums :
    Inscription : Novembre 2011
    Messages : 159
    Points : 284
    Points
    284
    Par défaut
    Bonjour,

    comprends-tu ce que tu écris dans R et comment R fonctionne dans les grandes lignes (fichier, variable, vecteur, dataframe, ggplot ...) ? Il ne s'agit pas d'une critique, seulement une question.

    Ma première solution répondait à ta précédente question (dessiner les courbes de densité) bien que je savais pertinemment qu'elle ne répondrait pas à LA question qui est de produire un graphique complet. Dans ce cas la solution de faubry est plus proche de tes besoins.

    En fait la démarche est la suivante :
    1. pour chacun de tes fichiers, affecter leur contenu à une variable
    2. formater ces variables de telle sorte qu'elles puissent être agrégées dans un unique dataframe
    3. produire le graphique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    v1 <- 1:100
    v2 <- dnorm(v1, mean = 50, sd = 10, log = FALSE)
    v3 <- dnorm(v1, mean = 60, sd = 30, log = FALSE)
    df3 <- data.frame(value = v3)
    df3$orig <- "v3"
    View(df3)
    df2 <- data.frame(value = v2)
    df2$orig <- "v2"
    df4 <- rbind(df2, df3)
    View(df4)
    ggplot(data = df4) + geom_density(aes(value, colour = orig)) + ggtitle("Mon titre")
    Je te laisse analyser ces quelques lignes.
    Je t'invite aussi a regarder les exemples de ggplot, natamment comment sont structurées les données utilisées.

    Bonne journée

  11. #11
    Membre à l'essai Avatar de Shyma
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 100
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Voilà comment j'ai procédé :

    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
    20
    21
    22
    23
    24
    25
    26
     
    library(ggplot2)
     
     
    F1<-read.table("fichier1" , sep=" ")
    F2<-read.table("fichier2" , sep=" ")
    F3<-read.table("fichier3" ,  sep=" ")
    F4<-read.table("fichier4" , sep=" ")
    F5<-read.table("fichier5" , sep=" ")
     
     
    head(F1)
    head(F2)
    head(F3)
    head(F4)
    head(F5)
     
     
    p1 <- geom_density(data = data.frame(F1), aes(x=F1), colour = "green")
    p2 <- geom_density(data = data.frame(F2), aes(x=F2), colour = "red")
    p3 <- geom_density(data = data.frame(F3), aes(x=F3), colour = "blue")
    p4 <- geom_density(data = data.frame(F4), aes(x=F4), colour = "cyan")
    p5 <- geom_density(data = data.frame(F5), aes(x=F5), colour = "magenta")
     
     
    ggplot() + p1 +p2+p3+p4+p5 + ggtitle("Titre principal")xlab("titre des x") + ylab("titre des Y")
    Après, je comprends les lignes générales, mais très peu les subtilités de R. Là, je ne sais pas comment distinguer chaque courbe avec un titre à coté, genre (pour chaque couleur, son titre qu'il lui correspond)

  12. #12
    Membre actif
    Profil pro
    Loisir
    Inscrit en
    Novembre 2011
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Loisir

    Informations forums :
    Inscription : Novembre 2011
    Messages : 159
    Points : 284
    Points
    284
    Par défaut
    Pour tes données, essaie cela :

    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
    20
    21
    F1<-read.table("fichier1" , sep=" ", col.names = "data")  # je suppose qu'il n'y a qu'une colonne de données dans tes fichiers
    df1 <- data.frame(value = F1)
    df1$orig <- "F1"
     
    F2<-read.table("fichier2" , sep=" ", col.names = "data")  # je suppose qu'il n'y a qu'une colonne de données dans tes fichiers
    df2 <- data.frame(value = F2)
    df2$orig <- "F2"
     
    F3<-read.table("fichier3" , sep=" ", col.names = "data")  # je suppose qu'il n'y a qu'une colonne de données dans tes fichiers
    df3 <- data.frame(value = F3)
    df3$orig <- "F3"
     
    F4<-read.table("fichier4" , sep=" ", col.names = "data")  # je suppose qu'il n'y a qu'une colonne de données dans tes fichiers
    df4 <- data.frame(value = F4)
    df4$orig <- "F4"
    F5<-read.table("fichier5" , sep=" ", col.names = "data")  # je suppose qu'il n'y a qu'une colonne de données dans tes fichiers
    df5 <- data.frame(value = F5)
    df5$orig <- "F5"
     
    df6 <- rbind(df1, df2, df3, df4, df5)
    ggplot(data = df6) + geom_density(aes(value, colour = orig)) + ggtitle("Mon titre")

  13. #13
    Membre à l'essai Avatar de Shyma
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 100
    Points : 19
    Points
    19
    Par défaut
    Merci, mais là il me met cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Error in eval(expr, envir, enclos) : object 'value' not found
    Pour la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ggplot(data = df6) + geom_density(aes(value, colour = orig)) + ggtitle("Mon titre")
    Value ici, correspond (si j'ai bien compris) à l'ensemble des valeurs?

  14. #14
    Membre actif
    Profil pro
    Loisir
    Inscrit en
    Novembre 2011
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Loisir

    Informations forums :
    Inscription : Novembre 2011
    Messages : 159
    Points : 284
    Points
    284
    Par défaut
    Erreur de ma part dans une ligne, essaie cette modification :
    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
     
    F1<-read.table("fichier1" , sep=" ", col.names = "value")  # je suppose qu'il n'y a qu'une colonne de données dans tes fichiers
    F1$orig <- "F1"
     
    F2<-read.table("fichier2" , sep=" ", col.names = "value")  # je suppose qu'il n'y a qu'une colonne de données dans tes fichiers
    F2$orig <- "F2"
     
    F3<-read.table("fichier3" , sep=" ", col.names = "value")  # je suppose qu'il n'y a qu'une colonne de données dans tes fichiers
    F3$orig <- "F3"
     
    F4<-read.table("fichier4" , sep=" ", col.names = "value")  # je suppose qu'il n'y a qu'une colonne de données dans tes fichiers
    F4$orig <- "F4"
     
    F5<-read.table("fichier5" , sep=" ", col.names = "value")  # je suppose qu'il n'y a qu'une colonne de données dans tes fichiers
    F5$orig <- "F5"
     
    df6 <- rbind(F1, F2, F3, F4, F5)
    ggplot(data = df6) + geom_density(aes(value, colour = orig)) + ggtitle("Mon titre")

  15. #15
    Membre à l'essai Avatar de Shyma
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 100
    Points : 19
    Points
    19
    Par défaut
    Merci @Supernul , cela fonctionne et ça me donne ce graphe.

    Nom : titres.png
Affichages : 216
Taille : 11,5 Ko

    Merci beaucoup

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

Discussions similaires

  1. diagramme d'activités avec plusieurs objets
    Par wafiwafi dans le forum UML
    Réponses: 2
    Dernier message: 28/09/2011, 22h27
  2. Graphique dynamique avec plusieurs courbes
    Par thefutureisnow dans le forum Débuter
    Réponses: 1
    Dernier message: 12/07/2011, 13h56
  3. optimisation avec plusieurs courbes
    Par doudy22 dans le forum MATLAB
    Réponses: 9
    Dernier message: 25/10/2010, 12h24
  4. Graph avec plusieurs courbes - GD
    Par vargasvan dans le forum Modules
    Réponses: 4
    Dernier message: 11/05/2006, 13h47

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