ggplot2, ajout d'une légende avec geom_abline

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

Véronique Darmendrail
Messages : 37
Enregistré le : 27 Fév 2020, 10:49

ggplot2, ajout d'une légende avec geom_abline

Messagepar Véronique Darmendrail » 06 Sep 2023, 08:48

Bonjour
J'ai dans un même graphique besoin de représenter des points, les droites des régressions linéaires basiques et deux autres droites pour lesquelles j'aimerais aussi rajouter une légende. je voudrais que quelque part figure leur type de ligne (noire avec trait plein ou pointillé) et le fait que cela correspond à la droite a ou b. Et je n'y arrive sans casser ce qui est déjà. je dois m'emmêler dans les paramètres aes. Merci d'avance pour votre aide !
Voici le code reproductible :

Code : Tout sélectionner

df <- structure(list(x = c(0.931876615954232, 1.404507484083, 2.51451686326531,
                           2.27825599212231, 1.61202744987466, 1.84713832058886, 1.62001423812519,
                           2.44975920271156, 2.2913990153089, 1.64570173462881, 3.03515029833661,
                           2.5443959421922, 2.13670685856895, 2.70411193098739, 2.74605164682275,
                           1.76403897161154, 1.83076738365766, 2.70669808918621, 1.08873876589875,
                           1.60391591433584, 2.04381045440631, 2.14286614104681, 2.47384883527232,
                           2.70047277609663, 2.02791905136354, 1.97320713072294, 1.4641732199573,
                           2.99325963697579, 1.48144377294174, 1.90689127200791, 2.07937902958465,
                           2.7596682487853, 2.25243145549665, 1.76802568567882, 1.18785130948326,
                           1.73989239926551, 1.07815867401174, 1.36576105279594, 2.06698628983676,
                           2.29408206846923, 2.59297320168456, 1.97592117956591, 2.40883437860234,
                           1.54244518303599, 2.59474308614927, 2.0261412532271, 2.78577296657542,
                           2.03969559857577, 1.88919636950616, 2.181788629307), y = c(4.99031703269956,
                                                                                      2.94946663597429, 8.64326818171732, 9.93979242901424, 8.19415425175963,
                                                                                      8.61202934547733, 4.2559326204612, 8.78256683927802, 10.6359352968698,
                                                                                      9.30853995305602, 13.503444715475, 7.74749059766792, 8.2987930773388,
                                                                                      12.0147316514994, 13.6914359366791, 9.72160297518154, 6.62659205862619,
                                                                                      10.9208853592471, 6.35667063471309, 9.53373954295117, 10.2864954912986,
                                                                                      6.51705044664743, 8.95902982448516, 13.3400249020461, 11.2337221340486,
                                                                                      9.8571712378832, 4.06743153704425, 11.3388804303845, 7.88981718513577,
                                                                                      10.9099836041231, 10.4150161623225, 9.47288473622777, 9.30396727092545,
                                                                                      10.3252228984926, 8.23634289761891, 8.56455122050241, 1.8895928259342,
                                                                                      5.41553233158969, 10.4111681405326, 12.0441861824506, 11.3425048787545,
                                                                                      5.38060153352539, 9.14392401223271, 8.23642541717419, 13.3031240487554,
                                                                                      10.7353813912154, 9.84666831138022, 8.12718402556978, 9.7684882294645,
                                                                                      12.505406245936), indiv.id = c(1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L,
                                                                                                                     4L, 5L, 1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L,
                                                                                                                     5L, 1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L,
                                                                                                                     1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L), annees.id = c(1L, 1L,
                                                                                                                                                                            1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L,
                                                                                                                                                                            4L, 4L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L,
                                                                                                                                                                            7L, 8L, 8L, 8L, 8L, 8L, 9L, 9L, 9L, 9L, 9L, 10L, 10L, 10L, 10L,
                                                                                                                                                                            10L)), row.names = c(NA, -50L), class = "data.frame")
df$indiv.id <- as.factor(df$indiv.id)
df$annees.id <- as.factor(df$annees.id)
#Création du graphique
graphique <- ggplot(df, aes(x = x, y = y, colour = indiv.id))
graphique + geom_point()  + geom_smooth(method = lm, se=FALSE) + geom_abline(
  intercept = -5, slope = 7,
  colour = "black" ) +
  geom_abline(
    intercept = 0.9, slope = 4,
    colour = "black", linetype="dashed")

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

Re: ggplot2, ajout d'une légende avec geom_abline

Messagepar Logez Maxime » 06 Sep 2023, 09:28

Bonjour,

une possibilité :

Code : Tout sélectionner

auxi <- data.frame(slope = c(7, 4), intercept = c(-5, .9), type = c("a", "b"))
graphique + geom_point()  + geom_smooth(method = lm, se=FALSE) +
  geom_abline(aes(slope = slope, intercept = intercept, linetype = type),
              data = auxi) +
  scale_linetype_manual(values = c("a" = "solid", "b" = "dashed"))
Cordialement,
Maxime

Véronique Darmendrail
Messages : 37
Enregistré le : 27 Fév 2020, 10:49

Re: ggplot2, ajout d'une légende avec geom_abline

Messagepar Véronique Darmendrail » 07 Sep 2023, 07:04

Merci @Logez Maxime !


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Gabriel Terraz et 1 invité