Comment tracer plusieurs lignes dans ggplot2 (avec exemple)



Vous pouvez utiliser la syntaxe de base suivante pour tracer plusieurs lignes dans ggplot2 :

ggplot(df, aes(x=x_var, y=y_var)) + 
  geom_line(aes(color=group_var)) +
  scale_color_manual(name='legend_title', labels=c('lab1', 'lab2', 'lab3'),
                     values=c('color1', 'color2', 'color3'))

Cette syntaxe particulière crée un tracé dans ggplot2 avec trois lignes.

Cette syntaxe suppose que votre bloc de données est dans un format long .

L’exemple suivant montre comment tracer plusieurs lignes dans ggplot2 en pratique.

Exemple : tracer plusieurs lignes dans ggplot2

Supposons que nous disposions du bloc de données suivant dans R qui contient des informations sur le nombre de ventes réalisées dans trois magasins différents sur cinq jours différents :

#create data frame
df <- data.frame(day=c(1, 2, 3, 4, 5),
                 storeA=c(5, 6, 8, 8, 9),
                 storeB=c(3, 3, 4, 5, 7),
                 storeC=c(8, 10, 12, 12, 17))

#view data frame
df

  day storeA storeB storeC
1   1      5      3      8
2   2      6      3     10
3   3      8      4     12
4   4      8      5     12
5   5      9      7     17

Cette trame de données est actuellement dans un format large.

Cependant, nous pouvons utiliser la fonction pivot_longer() du package Tidyr pour convertir rapidement les données dans un format long :

library(tidyr)

#convert data from wide to long format
df <- df %>% pivot_longer(cols=c('storeA', 'storeB', 'storeC'),
                          names_to='store',
                          values_to='sales')

#view updated data frame
df

# A tibble: 15 x 3
     day store  sales
      
 1     1 storeA     5
 2     1 storeB     3
 3     1 storeC     8
 4     2 storeA     6
 5     2 storeB     3
 6     2 storeC    10
 7     3 storeA     8
 8     3 storeB     4
 9     3 storeC    12
10     4 storeA     8
11     4 storeB     5
12     4 storeC    12
13     5 storeA     9
14     5 storeB     7
15     5 storeC    17

Connexe : Une introduction à pivot_longer() dans R

Maintenant que le bloc de données est au format long, nous pouvons utiliser la syntaxe suivante avec ggplot2 pour tracer les ventes de chaque magasin :

library(ggplot2)

#plot sales by store
ggplot(df, aes(x=day, y=sales)) + 
  geom_line(aes(color=store)) +
  scale_color_manual(name='Store', labels=c('A', 'B', 'C'),
                     values=c('red', 'purple', 'steelblue'))

Les lignes individuelles affichent les ventes réalisées dans chaque magasin chaque jour.

Notez que nous avons utilisé la fonction scale_color_manual() pour créer une légende personnalisée sur le côté droit du tracé afin de faciliter l’interprétation des lignes.

N’hésitez pas à modifier les arguments de cette fonction pour créer une légende qui apparaît exactement comme vous le souhaitez.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans ggplot2 :

Comment tracer la moyenne et l’écart type dans ggplot2
Comment ajouter une ligne horizontale à un tracé à l’aide de ggplot2
Comment dessiner une ligne de tendance dans ggplot2

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *