Changer les points avec ggplot

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

Bocar BALDE
Messages : 22
Enregistré le : 14 Avr 2016, 14:00

Changer les points avec ggplot

Messagepar Bocar BALDE » 30 Aoû 2017, 16:36

Bonjour,
J'ai des données nommées x, avec 9 variables différentes (Année).
Année A B
1 2004 24.00800 26.89029
2 2005 24.54300 25.03592
3 2006 24.11875 24.24905
4 2007 24.17300 25.28781
5 2008 24.57300 24.70925
6 2009 22.13500 23.68153
7 2010 23.47433 26.27114
8 2011 25.62967 26.21234
9 2012 24.12120 26.08139

J'ai fait une courbe de A en fonction de B et j'aimerai que chaque variable (Année) soit repréenter avec un point different. J'ai éssayé le script suivant mais sa marche pas, tout les points restent toujours identiques:

ggplot (data=x,aes(x=A, y=B,group=Année)) + geom_point()+ theme_bw()+ scale_shape_manual(values=c(0,21,5,6,8,3,16,17,19),labels=c("2004","2005","2006","2007","2008","2009","2010","2011","2012"))

Si j'ajoute la fonction shape à geom_point aussi le script ne marche pas.
Merci d'avance

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

Re: Changer les points avec ggplot

Messagepar Pierre-Yves Berrard » 30 Aoû 2017, 17:01

Bonjour,
Quand j'exécute votre code, j'ai bien 9 points sur le graphique, donc chaque année est "représentée".
Vous voudriez une étiquette avec l'année pour chaque point, c'est ça ?
PY

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

Re: Changer les points avec ggplot

Messagepar Logez Maxime » 30 Aoû 2017, 18:32

Bonjour,

Code : Tout sélectionner

ggplot(df, aes(A, B, shape = factor(Année))) + geom_point()+scale_shape_manual(values = c(0, 21, 5, 6, 8, 3, 16, 17, 19))
Ce code fonctionne chez moi.

Cordialement,
Maxime

Bocar BALDE
Messages : 22
Enregistré le : 14 Avr 2016, 14:00

Re: Changer les points avec ggplot

Messagepar Bocar BALDE » 30 Aoû 2017, 19:20

Merci Pierre,

Oui sa marche, j'avais oublié d'insérer "factor".

Mais dans le cadre où nous aimerions voir les courbes de forme de dôme (tout comme dans les GAM) dans notre relation entre A (abcisse) et B (en ordonnée).Les courbes en forme de dôme ou optimales sont un phénomène commun en écologie et décrivent un optimum physiologique d'une espèce par rapport à un paramètre physique.

Merci encore

Bocar

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

Re: Changer les points avec ggplot

Messagepar Pierre-Yves Berrard » 30 Aoû 2017, 20:59

Bocar BALDE a écrit :Merci Pierre
Maxime. ;-)

Remarque hors sujet : pas très facile selon moi de lire le graphique avec les différents symboles et la légende à côté. Une version alternative avec les années au milieu du graphique :

Code : Tout sélectionner

ggplot(x, aes(x = A, y = B, label = Année)) +
  geom_point() +
  geom_text(nudge_y = -.1)

Pierre-Yves
PY

Bocar BALDE
Messages : 22
Enregistré le : 14 Avr 2016, 14:00

Re: Changer les points avec ggplot

Messagepar Bocar BALDE » 31 Aoû 2017, 07:56

Merci encore Pierre, c'est vrai que sa a plus de significations avec se script.

Mais comme je vous l'ai demandé au paravant. Si je voudrais ajouter une courbe, en forme de dome,pour montrer le maximum que peut atteindre le paramétre PF avant de diminuer?

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

Re: Changer les points avec ggplot

Messagepar Pierre-Yves Berrard » 31 Aoû 2017, 08:20

Il n'y a pas de variable PF dans vos données, donc il faut préciser un peu ce que vous voulez faire.
PY

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

Re: Changer les points avec ggplot

Messagepar Logez Maxime » 31 Aoû 2017, 08:28

Bonjour,

S'il s'agit d'estimer une parabole entre les points de ton graphique je n'en vois pas trop l'intérêt parce que ça ne semble par réellement parabolique l'affaire et de toute manière on sortirait des objectifs de ce forum.
Par contre si tu connais l'équation de cette dernière alors poste la qu'on puisse t'aider à l'ajouter au graph (ce qui est dans les objectifs de ce forum).

Cordialement,
Maxime

Bocar BALDE
Messages : 22
Enregistré le : 14 Avr 2016, 14:00

Re: Changer les points avec ggplot

Messagepar Bocar BALDE » 31 Aoû 2017, 08:31

Pierre-Yves Berrard a écrit :Il n'y a pas de variable PF dans vos données, donc il faut préciser un peu ce que vous voulez faire.

Pierre B représente PF et A représente SST, désolé de ne pas l'avoir mentionné plus haut.

Merci d'avance

Bocar BALDE
Messages : 22
Enregistré le : 14 Avr 2016, 14:00

Re: Changer les points avec ggplot

Messagepar Bocar BALDE » 31 Aoû 2017, 14:42

Logez Maxime a écrit :Bonjour,

S'il s'agit d'estimer une parabole entre les points de ton graphique je n'en vois pas trop l'intérêt parce que ça ne semble par réellement parabolique l'affaire et de toute manière on sortirait des objectifs de ce forum.
Par contre si tu connais l'équation de cette dernière alors poste la qu'on puisse t'aider à l'ajouter au graph (ce qui est dans les objectifs de ce forum).

Cordialement,
Maxime


Désolé Maxime,

L'équation de regression linéaire est de la forme:
y=a+bx-cx²
Elle permet d'obtenir une courbe en forme de dome.

Michaël Delorme
Messages : 67
Enregistré le : 04 Avr 2016, 10:21

Re: Changer les points avec ggplot

Messagepar Michaël Delorme » 01 Sep 2017, 06:36

Avec les données :

Code : Tout sélectionner

library(tidyverse)
df <- read_table2("Annee A B
2004 24.00800 26.89029
2005 24.54300 25.03592
2006 24.11875 24.24905
2007 24.17300 25.28781
2008 24.57300 24.70925
2009 22.13500 23.68153
2010 23.47433 26.27114
2011 25.62967 26.21234
2012 24.12120 26.08139")

On peut ajouter une courbe d'ajustement polynomiale, mais je ne suis pas sûr que c'est ce que tu veux :

Code : Tout sélectionner

ggplot(df, aes(A, B)) +
  geom_point() +
  geom_text(aes(label = Annee), nudge_y = -.1) +
  geom_smooth(method = "lm", formula = y ~ poly(x, 2))


Tu peux aussi ajouter une courbe arbitraire, dont tu connais l'équation par ailleurs, avec stat_function() :

Code : Tout sélectionner

ggplot(df, aes(A, B)) +
  geom_point() +
  geom_text(aes(label = Annee), nudge_y = -.2) +
  stat_function(fun = function(x) { -661.65 + 58.65 * x - 1.25 * x^2 })

Bocar BALDE
Messages : 22
Enregistré le : 14 Avr 2016, 14:00

Re: Changer les points avec ggplot

Messagepar Bocar BALDE » 25 Sep 2017, 08:54

ReBonjour Michaël Delorme,

J'ai bien essayer votre méthode et sa marche d'enfer. Mais je ne sais pas comment vous avez fais pour sortir l'équation polynomial de la deuxiéme équation que vous m'avez donné au cas où je voudrais faire la même chose avec d'autres types de données.

Merci de m'éclairer svp.

Best.

Bocar



Michaël Delorme a écrit :Avec les données :

Code : Tout sélectionner

library(tidyverse)
df <- read_table2("Annee A B
2004 24.00800 26.89029
2005 24.54300 25.03592
2006 24.11875 24.24905
2007 24.17300 25.28781
2008 24.57300 24.70925
2009 22.13500 23.68153
2010 23.47433 26.27114
2011 25.62967 26.21234
2012 24.12120 26.08139")

On peut ajouter une courbe d'ajustement polynomiale, mais je ne suis pas sûr que c'est ce que tu veux :

Code : Tout sélectionner

ggplot(df, aes(A, B)) +
  geom_point() +
  geom_text(aes(label = Annee), nudge_y = -.1) +
  geom_smooth(method = "lm", formula = y ~ poly(x, 2))


Tu peux aussi ajouter une courbe arbitraire, dont tu connais l'équation par ailleurs, avec stat_function() :

Code : Tout sélectionner

ggplot(df, aes(A, B)) +
  geom_point() +
  geom_text(aes(label = Annee), nudge_y = -.2) +
  stat_function(fun = function(x) { -661.65 + 58.65 * x - 1.25 * x^2 })

Michaël Delorme
Messages : 67
Enregistré le : 04 Avr 2016, 10:21

Re: Changer les points avec ggplot

Messagepar Michaël Delorme » 25 Sep 2017, 09:43

Ce sont des coefficients inventés... :-)

Pour retrouver ceux utilisés pour la courbe geom_smooth :

Code : Tout sélectionner

summary(lm( B ~ A + I(A ^ 2), data = df))

ou

Code : Tout sélectionner

summary(lm( B ~ poly(A, 2, raw = TRUE), data = df))

Bocar BALDE
Messages : 22
Enregistré le : 14 Avr 2016, 14:00

Re: Changer les points avec ggplot

Messagepar Bocar BALDE » 25 Sep 2017, 12:30

Merci encore Michaël Delorme.

Best.

Bocar


Retourner vers « Questions en cours »

Qui est en ligne

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