Graphique avec axe abscisses texte et courbe reliant les points

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

Alexina Orsoni
Messages : 5
Enregistré le : 10 Mai 2017, 16:49

Graphique avec axe abscisses texte et courbe reliant les points

Messagepar Alexina Orsoni » 10 Mai 2017, 22:07

Bonsoir,
Je me remets à R après plusieurs années sans pratiquer et je me retrouve confrontée à un souci qui, j'en suis sûre, n'en sera pas un pour vous.
J'ai eu beau chercher un peu partout (mais ai-je mis les bons mots clefs, cela reste à voir) et essayer de faire mon code mais sans succès donc il y a forcément un truc qui ne va pas ! Soit c'est moi qui ne comprends rien (ce qui est, à mon avis la meilleure raison) soit mes données ne sont pas organisées comme il faudrait.
Je cherche à faire ce graphique : Image qui a été réalisé sur Excel.
J'ai réorganisé mon fichier de données comme suit :
Time_Point VLDL LDL1 LDL2 LDL3 LDL4 LDL5 HDL2b HDL2a HDL3a HDL3b HDL3c
1 D0 0.32 1.70 3.37 6.18 9.92 7.77 4.76 3.42 7.75 4.06 2.43
2 D0 0.60 0.98 2.90 3.88 5.40 4.78 2.15 2.08 2.26 1.39 2.17
3 D0 0.33 1.21 2.95 11.23 9.15 4.88 3.69 4.60 5.11 5.26 5.20
4 D0 0.29 0.48 1.97 3.13 4.75 2.54 3.89 4.01 4.21 3.63 1.93
5 D0 0.30 0.57 1.25 4.02 5.10 2.54 1.50 1.87 2.55 2.01 1.85
6 D0 0.33 0.61 1.31 3.53 4.20 1.98 1.22 1.41 1.78 1.46 1.11
7 D0 0.41 0.85 2.66 5.10 3.07 2.24 2.09 3.35 3.63 3.66 2.95
8 D0 0.60 0.96 1.70 3.66 4.26 3.00 1.80 2.53 2.74 2.21 1.49
9 D0 0.33 0.84 2.71 5.92 4.30 1.98 1.73 3.05 4.05 3.44 2.30
10 D0 0.36 0.65 1.08 2.44 4.45 1.79 0.66 1.13 1.76 1.23 0.90
11 D0 0.31 0.53 1.34 1.70 1.94 3.78 1.14 1.68 2.04 1.18 0.78
12 D0 0.58 0.74 1.91 4.72 4.91 1.63 1.56 2.01 2.85 2.19 2.00
13 D6 0.25 1.02 3.18 3.54 9.14 7.07 4.94 3.28 3.93 4.50 3.88
14 D6 0.45 1.39 2.94 5.22 6.66 5.60 2.96 3.92 3.43 4.02 1.56
15 D6 0.23 1.03 3.10 7.91 6.75 4.98 5.89 9.58 11.16 9.12 18.58
16 D6 0.26 0.78 2.07 4.58 8.07 5.28 3.27 5.12 5.34 7.28 1.32
17 D6 0.30 0.45 1.09 3.88 4.17 2.07 1.41 2.57 2.70 2.50 1.68
18 D6 0.35 0.60 1.13 3.08 6.03 3.70 2.26 3.23 4.08 3.51 2.23
19 D6 0.27 0.85 2.60 5.37 4.00 2.98 2.92 3.67 4.75 4.27 3.56
20 D6 0.41 1.19 2.02 4.73 7.65 5.48 4.00 4.78 5.76 4.90 4.78
21 D6 0.20 0.33 1.09 3.88 3.84 2.97 3.42 4.94 4.64 5.28 2.94
22 D6 0.27 0.40 0.80 2.74 5.17 1.16 1.22 1.58 2.12 1.71 0.98
23 D6 0.23 0.35 0.57 1.61 3.30 3.18 1.43 2.87 3.83 3.75 1.96
24 D6 0.37 0.46 1.07 3.06 5.14 1.95 2.06 2.99 3.97 3.64 3.17
25 D42 0.29 0.89 4.24 4.29 9.03 5.86 3.27 3.18 3.52 2.13 1.26
26 D42 0.23 0.68 3.27 4.88 6.27 3.09 2.91 3.19 3.51 3.76 2.79
27 D42 0.16 0.69 1.43 5.35 4.22 2.66 4.64 6.13 6.31 8.70 2.04
28 D42 0.26 0.71 2.01 5.76 7.53 4.18 4.67 6.90 6.81 7.60 4.48
29 D42 0.25 0.60 2.13 7.29 5.69 3.10 3.25 4.41 5.39 5.15 4.93
30 D42 0.33 0.62 1.09 3.38 6.45 3.91 2.11 2.65 3.39 3.23 3.08
31 D42 0.35 0.64 1.30 1.03 2.94 2.00 2.65 3.75 5.03 5.01 3.72
32 D42 0.30 0.50 1.15 4.01 6.64 4.53 4.20 4.89 5.25 5.76 5.19
33 D42 0.27 0.24 3.94 3.87 5.27 3.44 3.94 5.36 6.94 6.74 5.99
34 D42 0.23 0.22 0.52 1.27 4.06 3.75 1.28 1.29 1.82 1.90 1.51
35 D42 0.26 0.59 1.57 2.19 4.36 1.80 2.28 3.09 4.27 3.93 4.23
36 D42 0.45 0.58 1.83 4.88 7.45 3.86 3.21 3.92 4.63 5.49 4.74
37 D180 0.24 0.74 2.25 5.23 8.84 4.84 3.72 3.09 3.65 3.60 2.36
38 D180 0.28 1.05 2.93 4.89 5.29 5.14 3.13 3.51 3.77 3.47 3.55
39 D180 0.17 0.63 2.44 6.03 4.74 3.23 6.80 7.43 10.20 9.45 4.54
40 D180 0.25 0.53 1.34 5.38 6.31 3.31 3.39 5.99 7.70 7.83 13.06
41 D180 0.31 0.49 1.75 6.33 6.10 3.99 3.08 3.47 3.36 4.22 3.14
42 D180 0.27 0.55 1.04 2.38 4.97 3.37 2.45 2.53 3.23 3.13 2.25
43 D180 0.33 0.73 1.71 4.90 3.87 3.58 3.95 5.52 7.54 6.63 5.64
44 D180 0.43 1.02 2.26 6.89 8.75 5.79 6.11 6.80 8.57 6.80 6.87
45 D180 0.30 0.69 1.19 1.94 4.30 2.36 1.60 3.11 4.14 3.02 1.74
46 D180 0.25 0.36 1.15 4.09 9.35 3.94 3.66 3.39 4.25 4.41 4.11
47 D180 0.25 0.52 1.32 2.99 6.32 3.00 2.50 4.18 5.40 4.07 2.62
48 D180 0.48 0.54 1.62 6.04 6.29 3.40 3.86 5.19 5.67 4.76 5.85

Je n'arrive pas à faire le graphique où chaque point représente la moyenne pour le time_point donné et pour la variable donnée. J'ai essayé de faire un data.frame pour les moyennes de chaque temps pour chaque variable mais la fonction which ne semble pas être acceptée dans sapply.

J'ai l'impression qu'il faut que j'utilise un xyplot avec des groupes mais sans arriver à faire un tableau de moyennes en fonction des groupes Time_point, je suis dans une impasse. Maintenant, je n'ai peut être pas vu la fonction magique de R.

Bref, je fais appel à vous pour que vous m'orientiez vers mon graphique idéal ;-)

Merci d'avance
Alexina

Manon Jean
Messages : 14
Enregistré le : 04 Mai 2017, 15:08

Re: Graphique avec axe abscisses texte et courbe reliant les points

Messagepar Manon Jean » 11 Mai 2017, 10:16

j'ai du mal à comprendre ce que tu veux obtenir. Je ne vois pas ton graphique excel.

Alexina Orsoni
Messages : 5
Enregistré le : 10 Mai 2017, 16:49

Re: Graphique avec axe abscisses texte et courbe reliant les points

Messagepar Alexina Orsoni » 11 Mai 2017, 10:45

Bonjour,
Merci de te pencher sur mon problème.
Je réessaye de partager le lien de mon graphique excel:
Image
Pour résumé un peu (au cas où le lien ne fonctionnerait pas), j'aimerais, sur le graphique:
- avoir 4 courbes correspondant à D0, D6, D42 et D180
- l'axe des abscisses avec le nom des sous-fractions VLDL+IDL, LDL1 etc...
- l'axe des ordonnées qui correspond à la moyenne (sur les n=12) de la variable mesurée dans chaque sous-fractions
J'espère que c'est un peu plus clair...

J'ai réussi à faire un graph mais en utilisant une table (CETGratio_mean) avec les moyennes que j'ai calculées en dehors de R :
SSF D0 D6 D42 D180
1 VLDL.IDL 0.4 0.3 0.3 0.3
2 LDL1 0.8 0.7 0.6 0.7
3 LDL2 2.1 1.8 2.0 1.8
4 LDL3 4.6 4.1 4.0 4.8
5 LDL4 5.1 5.8 5.8 6.3
6 LDL5 3.2 3.9 3.5 3.8
7 HDL2b 2.2 3.0 3.2 3.7
8 HDL2a 2.6 4.0 4.1 4.5
9 HDL3a 3.4 4.6 4.7 5.6
10 HDL3b 2.6 4.5 5.0 5.1
11 HDL3c 2.1 3.9 3.7 4.6

Et voici le code que j'ai utilisé :

Code : Tout sélectionner

CETGratio_mean$SSF <- factor(CETGratio_mean$SSF, levels = as.character(CETGratio_mean$SSF))
xyplot(D0 + D6 + D42 + D180 ~ SSF, data = CETGratio_mean, type = "b", auto.key = TRUE)


Pour obtenir le graphique suivant:
Image
Sur lequel il va falloir que je travaille pour avoir des courbes lissées, des points plein, une légende mieux positionnée et VLDL+IDL au lieu de VLDL.IDL et ajouter les * des p-values.

Il va de soi que j'aurai préféré pouvoir travailler sur mon fichier original qui comporte les 12 mesures sur chaque sous-fraction et à chaque Time point pour ne pas avoir à créer des fichiers supplémentaires depuis excel. Mais cela me permet d'avancer un peu.

Si tu as une solution en partant de ma table originale, je suis preneuse :-).

Merci de l'aide que tu m'apporteras (ou qu'une autre personne m'apportera).

Alexina
P.S : lors de l'aperçu, les graphiques sont bien apparus...

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Graphique avec axe abscisses texte et courbe reliant les points

Messagepar Logez Maxime » 11 Mai 2017, 12:23

Bonjour,

avec dplyr, tidyr et ggplot2 :

Code : Tout sélectionner

# soit tab ton data.frame de données
tab2 <- tab %>% group_by(Time_Point) %>% summarise_each(funs(mean)) %>%
    gather(lipoprotein, ce, -Time_Point)
tab2$lipoprotein <- factor(tab2$lipoprotein, levels = unique(tab2$lipoprotein))
ggplot(tab2, aes(lipoprotein, ce, group = Time_Point, col = Time_Point)) + geom_path() + geom_point()
Cordialement,
Maxime

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: Graphique avec axe abscisses texte et courbe reliant les points

Messagepar Serge Rapenne » 11 Mai 2017, 12:47

Grillé,

j'étais arrivé à une solution dans le même esprit :

Code : Tout sélectionner

library(tidyr)
library(dplyr)
library(ggplot2)

ordre<-c("VLDL","LDL1","LDL2","LDL3" ,"LDL4","LDL5","HDL2b","HDL2a","HDL3a","HDL3b","HDL3c")
tab2<-tab %>% gather(Lipo,Subfraction,-Time_Point) %>% group_by(Time_Point,Lipo) %>% summarise(moy=mean(Subfraction)) %>%  mutate(Lipo =  factor(Lipo, levels = ordre)) %>% arrange(Lipo) 

ggplot(tab2, aes(Lipo, moy, group = Time_Point, col = Time_Point)) + geom_path() + geom_point()

Serge

Alexina Orsoni
Messages : 5
Enregistré le : 10 Mai 2017, 16:49

Re: Graphique avec axe abscisses texte et courbe reliant les points

Messagepar Alexina Orsoni » 11 Mai 2017, 12:57

Bonjour Maxime,
Logez Maxime a écrit :Bonjour,

avec dplyr, tidyr et ggplot2 :

Code : Tout sélectionner

# soit tab ton data.frame de données
tab2 <- tab %>% group_by(Time_Point) %>% summarise_each(funs(mean)) %>%
    gather(lipoprotein, ce, -Time_Point)
tab2$lipoprotein <- factor(tab2$lipoprotein, levels = unique(tab2$lipoprotein))
ggplot(tab2, aes(lipoprotein, ce, group = Time_Point, col = Time_Point)) + geom_path() + geom_point()
Cordialement,
Maxime


Je suis perdue pour plusieurs raisons 1)je ne connais pas la signification de certaines syntaxes et 2) j'obtiens une erreur (certainement en lien avec ma méconnaissance des syntaxes).
Voilà le code que j'ai essayé :

Code : Tout sélectionner

CETGratio<-read.table("D:/LABO/CAPITAIN/CAPITAIN_FichiersR/CAPITAIN_CE_TG_Ratio_ssf.txt" ,header =TRUE)#importation de mes données dans R
CETGratio
   Number Patient Time_Point VLDL LDL1 LDL2  LDL3 LDL4 LDL5 HDL2b HDL2a HDL3a
1       1   THOLA         D0 0.32 1.70 3.37  6.18 9.92 7.77  4.76  3.42  7.75
2       3   GANLA         D0 0.60 0.98 2.90  3.88 5.40 4.78  2.15  2.08  2.26
3       4   DELFR         D0 0.33 1.21 2.95 11.23 9.15 4.88  3.69  4.60  5.11
4       5   JAVJE         D0 0.29 0.48 1.97  3.13 4.75 2.54  3.89  4.01  4.21
5       6   ZAFBR         D0 0.30 0.57 1.25  4.02 5.10 2.54  1.50  1.87  2.55
6       7   GUTMA         D0 0.33 0.61 1.31  3.53 4.20 1.98  1.22  1.41  1.78
7       8   COUJE         D0 0.41 0.85 2.66  5.10 3.07 2.24  2.09  3.35  3.63
8       9   ABRGI         D0 0.60 0.96 1.70  3.66 4.26 3.00  1.80  2.53  2.74
9      10   CHABO         D0 0.33 0.84 2.71  5.92 4.30 1.98  1.73  3.05  4.05
10     11   DAGEI         D0 0.36 0.65 1.08  2.44 4.45 1.79  0.66  1.13  1.76
11     13   BRAJO         D0 0.31 0.53 1.34  1.70 1.94 3.78  1.14  1.68  2.04
12     14   ALBMI         D0 0.58 0.74 1.91  4.72 4.91 1.63  1.56  2.01  2.85
13      1   THOLA         D6 0.25 1.02 3.18  3.54 9.14 7.07  4.94  3.28  3.93
14      3   GANLA         D6 0.45 1.39 2.94  5.22 6.66 5.60  2.96  3.92  3.43
15      4   DELFR         D6 0.23 1.03 3.10  7.91 6.75 4.98  5.89  9.58 11.16
16      5   JAVJE         D6 0.26 0.78 2.07  4.58 8.07 5.28  3.27  5.12  5.34
17      6   ZAFBR         D6 0.30 0.45 1.09  3.88 4.17 2.07  1.41  2.57  2.70
18      7   GUTMA         D6 0.35 0.60 1.13  3.08 6.03 3.70  2.26  3.23  4.08
19      8   COUJE         D6 0.27 0.85 2.60  5.37 4.00 2.98  2.92  3.67  4.75
20      9   ABRGI         D6 0.41 1.19 2.02  4.73 7.65 5.48  4.00  4.78  5.76
21     10   CHABO         D6 0.20 0.33 1.09  3.88 3.84 2.97  3.42  4.94  4.64
22     11   DAGEI         D6 0.27 0.40 0.80  2.74 5.17 1.16  1.22  1.58  2.12
23     13   BRAJO         D6 0.23 0.35 0.57  1.61 3.30 3.18  1.43  2.87  3.83
24     14   ALBMI         D6 0.37 0.46 1.07  3.06 5.14 1.95  2.06  2.99  3.97
25      1   THOLA        D42 0.29 0.89 4.24  4.29 9.03 5.86  3.27  3.18  3.52
26      3   GANLA        D42 0.23 0.68 3.27  4.88 6.27 3.09  2.91  3.19  3.51
27      4   DELFR        D42 0.16 0.69 1.43  5.35 4.22 2.66  4.64  6.13  6.31
28      5   JAVJE        D42 0.26 0.71 2.01  5.76 7.53 4.18  4.67  6.90  6.81
29      6   ZAFBR        D42 0.25 0.60 2.13  7.29 5.69 3.10  3.25  4.41  5.39
30      7   GUTMA        D42 0.33 0.62 1.09  3.38 6.45 3.91  2.11  2.65  3.39
31      8   COUJE        D42 0.35 0.64 1.30  1.03 2.94 2.00  2.65  3.75  5.03
32      9   ABRGI        D42 0.30 0.50 1.15  4.01 6.64 4.53  4.20  4.89  5.25
33     10   CHABO        D42 0.27 0.24 3.94  3.87 5.27 3.44  3.94  5.36  6.94
34     11   DAGEI        D42 0.23 0.22 0.52  1.27 4.06 3.75  1.28  1.29  1.82
35     13   BRAJO        D42 0.26 0.59 1.57  2.19 4.36 1.80  2.28  3.09  4.27
36     14   ALBMI        D42 0.45 0.58 1.83  4.88 7.45 3.86  3.21  3.92  4.63
37      1   THOLA       D180 0.24 0.74 2.25  5.23 8.84 4.84  3.72  3.09  3.65
38      3   GANLA       D180 0.28 1.05 2.93  4.89 5.29 5.14  3.13  3.51  3.77
39      4   DELFR       D180 0.17 0.63 2.44  6.03 4.74 3.23  6.80  7.43 10.20
40      5   JAVJE       D180 0.25 0.53 1.34  5.38 6.31 3.31  3.39  5.99  7.70
41      6   ZAFBR       D180 0.31 0.49 1.75  6.33 6.10 3.99  3.08  3.47  3.36
42      7   GUTMA       D180 0.27 0.55 1.04  2.38 4.97 3.37  2.45  2.53  3.23
43      8   COUJE       D180 0.33 0.73 1.71  4.90 3.87 3.58  3.95  5.52  7.54
44      9   ABRGI       D180 0.43 1.02 2.26  6.89 8.75 5.79  6.11  6.80  8.57
45     10   CHABO       D180 0.30 0.69 1.19  1.94 4.30 2.36  1.60  3.11  4.14
46     11   DAGEI       D180 0.25 0.36 1.15  4.09 9.35 3.94  3.66  3.39  4.25
47     13   BRAJO       D180 0.25 0.52 1.32  2.99 6.32 3.00  2.50  4.18  5.40
48     14   ALBMI       D180 0.48 0.54 1.62  6.04 6.29 3.40  3.86  5.19  5.67
   HDL3b HDL3c HDL3c2 BOTTOM
1   4.06  2.43   2.89   0.39
2   1.39  2.17   3.21   0.36
3   5.26  5.20   8.12   0.43
4   3.63  1.93   7.30   0.38
5   2.01  1.85   2.21   2.42
6   1.46  1.11   1.24   0.99
7   3.66  2.95   2.51   3.41
8   2.21  1.49   1.38   1.47
9   3.44  2.30   1.08   1.35
10  1.23  0.90   0.75   0.55
11  1.18  0.78   0.90   0.95
12  2.19  2.00   2.21   1.27
13  4.50  3.88   5.14   0.31
14  4.02  1.56   1.72   0.37
15  9.12 18.58   5.11   0.86
16  7.28  1.32   4.93   0.53
17  2.50  1.68   2.20   1.32
18  3.51  2.23   1.54   1.28
19  4.27  3.56   2.90   1.22
20  4.90  4.78   3.69   1.67
21  5.28  2.94   1.80   0.86
22  1.71  0.98   0.76   0.33
23  3.75  1.96   2.37   1.42
24  3.64  3.17   3.60   1.15
25  2.13  1.26   2.25   0.34
26  3.76  2.79   1.89   0.23
27  8.70  2.04   3.45   0.74
28  7.60  4.48   8.15   0.19
29  5.15  4.93   2.94   1.60
30  3.23  3.08   2.19   1.06
31  5.01  3.72   2.12   3.26
32  5.76  5.19   5.78   1.97
33  6.74  5.99   3.23   1.41
34  1.90  1.51   1.18   0.47
35  3.93  4.23   3.21   2.66
36  5.49  4.74   7.40   2.65
37  3.60  2.36   2.10   0.31
38  3.47  3.55   2.31   0.35
39  9.45  4.54   3.16   0.46
40  7.83 13.06   7.36  -0.16
41  4.22  3.14   2.37   1.39
42  3.13  2.25   1.97   1.19
43  6.63  5.64   4.40   3.08
44  6.80  6.87   7.19   1.97
45  3.02  1.74   0.81   0.99
46  4.41  4.11   3.73   0.23
47  4.07  2.62   3.59   1.83
48  4.76  5.85  12.11   1.67
CETGratio_W<-CETGratio[which(CETGratio$Time_Point=="D0"|CETGratio$Time_Point=="D6"|CETGratio$Time_Point=="D42"|CETGratio$Time_Point=="D180"),c(2:4)] #on sélectionne les valeurs pour D0, D6, D42 et D180 pour les ssf VLDL+IDL et LDL1 à LDL5 et HDL2b à HDL3c et on obtient un data frame de travail
CETGratio_W
   Patient Time_Point VLDL
1    THOLA         D0 0.32
2    GANLA         D0 0.60
3    DELFR         D0 0.33
4    JAVJE         D0 0.29
5    ZAFBR         D0 0.30
6    GUTMA         D0 0.33
7    COUJE         D0 0.41
8    ABRGI         D0 0.60
9    CHABO         D0 0.33
10   DAGEI         D0 0.36
11   BRAJO         D0 0.31
12   ALBMI         D0 0.58
13   THOLA         D6 0.25
14   GANLA         D6 0.45
15   DELFR         D6 0.23
16   JAVJE         D6 0.26
17   ZAFBR         D6 0.30
18   GUTMA         D6 0.35
19   COUJE         D6 0.27
20   ABRGI         D6 0.41
21   CHABO         D6 0.20
22   DAGEI         D6 0.27
23   BRAJO         D6 0.23
24   ALBMI         D6 0.37
25   THOLA        D42 0.29
26   GANLA        D42 0.23
27   DELFR        D42 0.16
28   JAVJE        D42 0.26
29   ZAFBR        D42 0.25
30   GUTMA        D42 0.33
31   COUJE        D42 0.35
32   ABRGI        D42 0.30
33   CHABO        D42 0.27
34   DAGEI        D42 0.23
35   BRAJO        D42 0.26
36   ALBMI        D42 0.45
37   THOLA       D180 0.24
38   GANLA       D180 0.28
39   DELFR       D180 0.17
40   JAVJE       D180 0.25
41   ZAFBR       D180 0.31
42   GUTMA       D180 0.27
43   COUJE       D180 0.33
44   ABRGI       D180 0.43
45   CHABO       D180 0.30
46   DAGEI       D180 0.25
47   BRAJO       D180 0.25
48   ALBMI       D180 0.48
CETGratio_W_mean <- CETGratio_W %>% group_by(Time_Point) %>% summarise_each(funs(mean)) %>% gather(lipoprotein, ce, -Time_Point)
Error in gather(., lipoprotein, ce, -Time_Point) :
  impossible de trouver la fonction "gather"
De plus : Warning messages:
1: In mean.default(c(11L, 8L, 7L, 10L, 12L, 9L, 5L, 1L, 4L, 6L, 3L,  :
  argument is not numeric or logical: returning NA
2: In mean.default(c(11L, 8L, 7L, 10L, 12L, 9L, 5L, 1L, 4L, 6L, 3L,  :
  argument is not numeric or logical: returning NA
3: In mean.default(c(11L, 8L, 7L, 10L, 12L, 9L, 5L, 1L, 4L, 6L, 3L,  :
  argument is not numeric or logical: returning NA
4: In mean.default(c(11L, 8L, 7L, 10L, 12L, 9L, 5L, 1L, 4L, 6L, 3L,  :
  argument is not numeric or logical: returning NA


Peux-tu m'expliquer ce que fait chaque ligne de ton code pour que je comprenne les syntaxes et puisse adapter correctement à mon cas ?
Peut-être ne suis-je pas partie de la bonne data frame?
De plus, je n'ai pas "lipoprotein" ni "ce" dans mon data frame : les sous-fractions de lipoprotéines sont en tête de colonnes. Je n'arrive pas à comprendre le gather non plus.

Merci de tes explications.
Cordialement,
Alexina

Edit : Merci Serge mais du coup j'ai les mêmes soucis de compréhension qu'avec le code de Maxime. Je suis demandeuse d'explications de code...

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: Graphique avec axe abscisses texte et courbe reliant les points

Messagepar Serge Rapenne » 12 Mai 2017, 18:17

Bonjour,

Les commandes proposées utilisent la commande %>% (qui vient du package maggritr) et est inclus dans le package dplyr qui change significativement la logique de base dans R. Cette commande appelé redirection ("pipe" en anglais d’où le jeu de mot pour le nom du package maggritr) permet d'envoyer la sortie d'une commande vers une autre commande.
Par ex pour calculer la somme des 5 1er entiers, on écrirait

Code : Tout sélectionner

#en R standard
Somme1_5<-sum(1:5)
#avec %>%
Somme1_5<-1:5 %>% sum()
cela peut sembler anecdotique au premier abord mais ça permet selon moi une lecture bien plus facile du code lorsque l'on veut enchainer des fonctions.
par ex si on veut calculer la racine carré de la somme des entiers de 1 à 5

Code : Tout sélectionner

#en R standard
rac_sum_1_5<-sqrt(sum(1:5))
#avec %>%
Somme1_5<-1:5 %>% sum() %>% sqrt()

avec %>% il suffit de lire de la gauche vers la droite ce qui est fait, sans on doit lire les chose "à l'envers" ce qui me semble moins intuitif.

Pour revenir au code proposé voici le détail de celui que j'ai proposé (je te laisse en exercice la compréhension de celui de Maxime qui est un peu différent).
il est indispensable au préalable d'installer les packages tidyr, dplyr et ggplot

Code : Tout sélectionner

library(tidyr) # chargement du package tidyr nécessaire pour la fonction gather
library(dplyr) # chargement du package dplyr, pour les fonctions mutate, summarise group_by et arrange
library(ggplot2) #chargement  du package graphique ggplot2 qui ajoute un nouveau mode graphique à R

#création d'un vecteur pour s'assurer de l'ordre d'affichage des valeurs pour le graphique
ordre<-c("VLDL","LDL1","LDL2","LDL3" ,"LDL4","LDL5","HDL2b","HDL2a","HDL3a","HDL3b","HDL3c")

#on transforme le data frame d'entrée du format large (en colonne) vers un format long (en ligne) grâce à la fonction gather
tmp1<-tab %>% gather(Lipo,Subfraction,-Time_Point)

#on calcul les moyennes pour chaqueTime_Point et Lipo
tmp2<-tmp1 %>% group_by(Time_Point,Lipo) %>% summarise(moy=mean(Subfraction))

#on transforme la colonne Lipo et on met les facteurs dans l'ordre voulu pour le graphique
tab2<-tmp2 %>%  mutate(Lipo =  factor(Lipo, levels = ordre)) %>% arrange(Lipo)

#on trace le graphique
ggplot(tab2, aes(Lipo, moy, group = Time_Point, col = Time_Point)) + geom_path() + geom_point()

tu pourras suivre l'évolution des données en regardant ce que contient tmp1, tmp2 et tab2
avec le jeu de données complet que tu fournis dans ton dernier message, il faut supprimer les colonnes Number et Patient ce qui peut etre fait en modifiant le debut du script

Code : Tout sélectionner

tmp <- tab %>% select(-Number,-Patient)
tmp1<-tmp %>% gather(Lipo,Subfraction,-Time_Point)

pour des détails sur l'utilisation de dplyr : https://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html
pour tidyr et donc gather : https://blog.rstudio.org/2014/07/22/introducing-tidyr/
et pour ggplot : https://bioinfo-fr.net/guide-de-demarrage-pour-ggplot2-un-package-graphique-pour-r

Bonne lecture ;-)

Serge

Eric Wajnberg
Messages : 776
Enregistré le : 11 Aoû 2008, 15:37
Contact :

Re: Graphique avec axe abscisses texte et courbe reliant les points

Messagepar Eric Wajnberg » 13 Mai 2017, 04:24

Juste une question qui provient de ma curiosité. Pourquoi vouloir des courbes lissées ? Juste pour faire joli ? Excel raffole de ce type de lissage (option par défaut) qui ne présente selon moi aucun intérêt, d'autant plus qu'on ne sais rien des fonctions de lissage utilisées. Ca n'a rien de très scientifique, je pense.

Mais bon, juste une remarque en passant..

Eric.

Alexina Orsoni
Messages : 5
Enregistré le : 10 Mai 2017, 16:49

Re: Graphique avec axe abscisses texte et courbe reliant les points

Messagepar Alexina Orsoni » 15 Mai 2017, 06:21

Serge Rapenne a écrit :Bonjour,

Les commandes proposées utilisent la commande %>% (qui vient du package maggritr) et est inclus dans le package dplyr qui change significativement la logique de base dans R. Cette commande appelé redirection ("pipe" en anglais d’où le jeu de mot pour le nom du package maggritr) permet d'envoyer la sortie d'une commande vers une autre commande.
Par ex pour calculer la somme des 5 1er entiers, on écrirait

Code : Tout sélectionner

#en R standard
Somme1_5<-sum(1:5)
#avec %>%
Somme1_5<-1:5 %>% sum()
cela peut sembler anecdotique au premier abord mais ça permet selon moi une lecture bien plus facile du code lorsque l'on veut enchainer des fonctions.
par ex si on veut calculer la racine carré de la somme des entiers de 1 à 5

Code : Tout sélectionner

#en R standard
rac_sum_1_5<-sqrt(sum(1:5))
#avec %>%
Somme1_5<-1:5 %>% sum() %>% sqrt()

avec %>% il suffit de lire de la gauche vers la droite ce qui est fait, sans on doit lire les chose "à l'envers" ce qui me semble moins intuitif.

Pour revenir au code proposé voici le détail de celui que j'ai proposé (je te laisse en exercice la compréhension de celui de Maxime qui est un peu différent).
il est indispensable au préalable d'installer les packages tidyr, dplyr et ggplot

Code : Tout sélectionner

library(tidyr) # chargement du package tidyr nécessaire pour la fonction gather
library(dplyr) # chargement du package dplyr, pour les fonctions mutate, summarise group_by et arrange
library(ggplot2) #chargement  du package graphique ggplot2 qui ajoute un nouveau mode graphique à R

#création d'un vecteur pour s'assurer de l'ordre d'affichage des valeurs pour le graphique
ordre<-c("VLDL","LDL1","LDL2","LDL3" ,"LDL4","LDL5","HDL2b","HDL2a","HDL3a","HDL3b","HDL3c")

#on transforme le data frame d'entrée du format large (en colonne) vers un format long (en ligne) grâce à la fonction gather
tmp1<-tab %>% gather(Lipo,Subfraction,-Time_Point)

#on calcul les moyennes pour chaqueTime_Point et Lipo
tmp2<-tmp1 %>% group_by(Time_Point,Lipo) %>% summarise(moy=mean(Subfraction))

#on transforme la colonne Lipo et on met les facteurs dans l'ordre voulu pour le graphique
tab2<-tmp2 %>%  mutate(Lipo =  factor(Lipo, levels = ordre)) %>% arrange(Lipo)

#on trace le graphique
ggplot(tab2, aes(Lipo, moy, group = Time_Point, col = Time_Point)) + geom_path() + geom_point()

tu pourras suivre l'évolution des données en regardant ce que contient tmp1, tmp2 et tab2
avec le jeu de données complet que tu fournis dans ton dernier message, il faut supprimer les colonnes Number et Patient ce qui peut etre fait en modifiant le debut du script

Code : Tout sélectionner

tmp <- tab %>% select(-Number,-Patient)
tmp1<-tmp %>% gather(Lipo,Subfraction,-Time_Point)

pour des détails sur l'utilisation de dplyr : https://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html
pour tidyr et donc gather : https://blog.rstudio.org/2014/07/22/introducing-tidyr/
et pour ggplot : https://bioinfo-fr.net/guide-de-demarrage-pour-ggplot2-un-package-graphique-pour-r

Bonne lecture ;-)

Serge

Bonjour Serge,
Je te remercie de ces explications.
Je vais me mettre à ma compréhension plus approfondie de tout ça aujourd'hui.
Les packages sont bien téléchargés mais je ne pensais pas qu'il était nécessaire de les charger dans la mesure où ils sont dans le dossier library de R. Certainement encore une petite subtilité de R que je n'ai pas tout à fait saisie dans la mesure où pour les autres packages que j'utilise, il n'est pas indispensable de les charger avant. (note pour moi : charger le package même si non nécessaire comme ça, c'est fait).
J'avais essayé de comprendre avec les aides et surtout celle du CRAN mais il est vrai que j'ai été dépassée.
Je vous tiens au courant le plus rapidement possible.
Merci encore
Bonne journée
Alexina

Alexina Orsoni
Messages : 5
Enregistré le : 10 Mai 2017, 16:49

Re: Graphique avec axe abscisses texte et courbe reliant les points

Messagepar Alexina Orsoni » 15 Mai 2017, 06:29

Eric Wajnberg a écrit :Juste une question qui provient de ma curiosité. Pourquoi vouloir des courbes lissées ? Juste pour faire joli ? Excel raffole de ce type de lissage (option par défaut) qui ne présente selon moi aucun intérêt, d'autant plus qu'on ne sais rien des fonctions de lissage utilisées. Ca n'a rien de très scientifique, je pense.

Mais bon, juste une remarque en passant..

Eric.


Eric,
Je suis tout à fait d'accord avec toi. Mais, là, j'arrive à un moment où je n'ai plus la force ni le courage ni le temps de me "battre" contre mon "chef" et qui veut donc ces (ses, à écrire comme on le veut dans ce cas) courbes lissées. Je lui fournis donc avec toujours un petit commentaire disant ce que je pense de cette démarche.

Bonne journée
Alexina


Retourner vers « Questions en cours »

Qui est en ligne

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