ggplot (ajouter plusieurs courbes a un même graphique)

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

roxanne anckaert
Messages : 10
Enregistré le : 17 Juil 2017, 11:33

ggplot (ajouter plusieurs courbes a un même graphique)

Messagepar roxanne anckaert » 18 Juil 2017, 07:35

Bonjour,
Je suis novice dans l’utilisation de R. Je souhaite faire un graphique avec plusieurs courbes en utilisant ggplot et non xyplot. L’information provenant de colonnes différentes. Ici je cherche à représenter Kd, EK, EK5 en fonction du temps.

Voici la structure de ma table de donnée qui se nomme: "prediction"

Code : Tout sélectionner


Kd          EK          EK5             Time           Manip
0.2          0.8          0.52             1                Ni.2
0.3          0.9          0.68             2                Ni.2
0.1          0.5          0.32             1                S.2
0.6          0.2          0.45             2                S.2



Merci d’avance pour votre aide,
Roxanne.

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: ggplot (ajouter plusieurs courbes a un même graphique)

Messagepar Pierre-Yves Berrard » 18 Juil 2017, 08:34

Bonjour,

J'opèrerais un transformation préalable des données pour faire de ""Kd", EK", et "EK5" les modalités d'une variable "TYPE" :

Code : Tout sélectionner

library(tidyr)

prediction2 <- gather(
  data = prediction,
  key = TYPE,
  value = VAL,
  Kd, EK, EK5
)
(les noms "TYPE" et "VAL" sont libres, vous pouvez les modifier à votre convenance)

Le graphique s'obtient ainsi :

Code : Tout sélectionner

library(ggplot2)

ggplot(
  prediction2,
  aes(x = Time, y = VAL, color = TYPE)
) +
geom_line()

Manifestement, la colonne Manip a un rôle à jouer, mais vous n'en avez pas parlé.
PY

roxanne anckaert
Messages : 10
Enregistré le : 17 Juil 2017, 11:33

Re: ggplot (ajouter plusieurs courbes a un même graphique)

Messagepar roxanne anckaert » 18 Juil 2017, 10:38

Merci beaucoup !!!! j’obtiens le graphique que j’espérais.

Oui la colonne manip est importante, j’utilise la fonction facet_wrap pour représenter mes deux graphiques sur un même page.

J’ai une petite question, j’ai utilisé la même structure pour d’autres graphiques. Or, est-il possible de représenter 3 informations de différents types (point, polygone et ligne) sur un même graphique ? Finalement personnalisé chaque variables représentées (Ek, Kd, EK5) ?

De plus, j’ai des valeurs nulles dans mon tableau (Na) comment puis-je faire pour qu’elle ne s’affiche pas sur mon graphique ?

Merci d’avance pour votre aide,
Roxanne.

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: ggplot (ajouter plusieurs courbes a un même graphique)

Messagepar Pierre-Yves Berrard » 18 Juil 2017, 11:46

roxanne anckaert a écrit :est-il possible de représenter 3 informations de différents types (point, polygone et ligne) sur un même graphique ? Finalement personnalisé chaque variables représentées (Ek, Kd, EK5) ?

En repartant des données de départ :

Code : Tout sélectionner

ggplot(
  prediction,
  aes(x = Time)
) +
geom_area(aes(y = Kd)) +
geom_line(aes(y = EK)) +
geom_point(aes(y = EK5)) +
facet_wrap(~ Manip)
Par contre, je ne sais pas comment gérer la légende...

Il est aussi possible de personnaliser les séries en mettant des points de différentes formes :

Code : Tout sélectionner

ggplot(
  prediction2,
  aes(x = Time, y = VAL, color = TYPE)
) +
geom_line() +
geom_point(aes(shape = TYPE), size = 2) +  # (ajout de points)
facet_wrap(~ Manip)


roxanne anckaert a écrit :De plus, j’ai des valeurs nulles dans mon tableau (Na) comment puis-je faire pour qu’elle ne s’affiche pas sur mon graphique ?

Normalement, ggplot les supprime automatiquement (avec un message d'erreur du type "Warning message: Removed 1 rows containing missing values (geom_path)").
PY

roxanne anckaert
Messages : 10
Enregistré le : 17 Juil 2017, 11:33

Re: ggplot (ajouter plusieurs courbes a un même graphique)

Messagepar roxanne anckaert » 19 Juil 2017, 06:11

Merci beaucoup !
Oui en effet lorsque j’utilise la première méthode il ne m’affiche aucune légende.

Mathilde DEMONCHY
Messages : 20
Enregistré le : 26 Juin 2019, 07:15

Re: ggplot (ajouter plusieurs courbes a un même graphique)

Messagepar Mathilde DEMONCHY » 18 Mai 2020, 15:45

Bonjour,

Je trouve la solution de Pierre-Yves très efficace et j'aimerai m'en inspirer pour mon code.
Par contre, je ne vois pas comment apporter des thèmes différents sur les valeurs des séries.
Par exemple, j'ai essayé de changer les couleurs des variables, sans succès.

Je reprends le code proposé par Pierre-Yves :

J'opèrerais un transformation préalable des données pour faire de ""Kd", EK", et "EK5" les modalités d'une variable "TYPE" :

Code : Tout sélectionner

library(tidyr)

prediction2 <- gather(
  data = prediction,
  key = TYPE,
  value = VAL,
  Kd, EK, EK5
)


(les noms "TYPE" et "VAL" sont libres, vous pouvez les modifier à votre convenance)

Le graphique s'obtient ainsi :

Code : Tout sélectionner

library(ggplot2)

ggplot(
  prediction2,
  aes(x = Time, y = VAL, color = TYPE)
) +
geom_line()


Auquel j'ai voulu ajouter un changement de couleurs pour chaque variable, par exemple :

Code : Tout sélectionner

couleurs <- c(
"Kd"="yellow",
"EK"="blue",
"EK5"="red")

ggplot(
  prediction2,
  aes(x = Time, y = VAL, color = TYPE)
) +
geom_line()+
scale_color_manual(values=couleurs)
)


Mais ça ne fonctionne pas…
Merci de vos lumières

Matou

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: ggplot (ajouter plusieurs courbes a un même graphique)

Messagepar Pierre-Yves Berrard » 18 Mai 2020, 15:56

Bonjour,

Vous n'êtes pas seule à avoir ce problème : https://stackoverflow.com/questions/517 ... ith-ggplot

Le nouveau problème n'ayant rien à voir avec l'original, il aurait été préférable de créer un nouveau sujet.
PY

Mathilde DEMONCHY
Messages : 20
Enregistré le : 26 Juin 2019, 07:15

Re: ggplot (ajouter plusieurs courbes a un même graphique)

Messagepar Mathilde DEMONCHY » 18 Mai 2020, 16:00

ok, merci !
je vais regarder le lien, et si besoin poster un nouveau sujet.
Matou

EDIT :
J'ai trouvé une solution : en ajoutant un geom_point, ça fonctionne :

Code : Tout sélectionner

   
couleurs <- c(
"Kd"="yellow",
"EK"="blue",
"EK5"="red")

ggplot(
  prediction2,
  aes(x = Time, y = VAL, color = TYPE)
) +
geom_line()+
geom_point()+
scale_color_manual(values=couleurs)
)


Retourner vers « Questions en cours »

Qui est en ligne

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