GGPLOT : Comment Afficher la Dernière Valeur de Chaque Ligne Comme Etiquettes

ggplot-display-the-last-value-of-each-line-in-the-plot-basic-line-plot-1.png


GGPLOT : Comment Afficher la Dernière Valeur de Chaque Ligne Comme Etiquettes

Cet article décrit comment afficher la dernière valeur de chaque ligne sous forme d’étiquette en utilisant le package R ggplot2. Différentes solutions sont proposées en utilisant soit l’étiquetage de texte ggrepel, soit les fonctions d’axes secondaires gplot2.



Sommaire:

Prérequis

Packages R requis:

  • tidyverse: manipulation et visualisation faciles des données
  • ggrepel: fournit geoms for ggplot2 to repel overlapping text labels: geom_text_repel() and geom_label_repel()
# Charger les packages R requis
library(tidyverse)
library(ggrepel)
# Configurer le thème par défaut de ggplot2 à theme_bw()
theme_set(theme_bw())

# Données de démonstration
df <- tibble::tribble(
      ~Species, ~Petal.Length, ~Petal.Width, ~Sepal.Length, ~Sepal.Width,
      "setosa",         1.462,        0.246,         5.006,        3.428,
  "versicolor",          4.26,        1.326,         5.936,         2.77,
   "virginica",         5.552,        2.026,         6.588,        2.974
  )
df
## # A tibble: 3 x 5
##   Species    Petal.Length Petal.Width Sepal.Length Sepal.Width
##   <chr>             <dbl>       <dbl>        <dbl>       <dbl>
## 1 setosa             1.46       0.246         5.01        3.43
## 2 versicolor         4.26       1.33          5.94        2.77
## 3 virginica          5.55       2.03          6.59        2.97
# Transformer les données en format long
# Mettez de Petal.length à Sepal.Width dans la même colonne
df_long <- df %>%
  pivot_longer(
    Petal.Length:Sepal.Width,
    names_to = "variable", values_to = "value"
  )
df_long
## # A tibble: 12 x 3
##   Species    variable     value
##   <chr>      <chr>        <dbl>
## 1 setosa     Petal.Length 1.46 
## 2 setosa     Petal.Width  0.246
## 3 setosa     Sepal.Length 5.01 
## 4 setosa     Sepal.Width  3.43 
## 5 versicolor Petal.Length 4.26 
## 6 versicolor Petal.Width  1.33 
## # … with 6 more rows

Utiliser ggrepel pour ajouter des étiquettes aux extrémités des lignes

Exemples pour l’axe des x discret

# Line plot basique
lp <- ggplot(df_long, aes(x = Species, y = value, group = variable)) +
  geom_line(aes(color = variable)) +
  geom_point() +
  theme(legend.position = "top")

# Filtrez les dernières valeurs et ajoutez-les sur le graphique
# Correspond à l'espèce `virginica`
data_ends <- df_long %>% filter(Species == "virginica")
lp + 
  geom_text_repel(
    aes(label = value), data = data_ends,
    fontface ="plain", color = "black", size = 3
    )

# Utiliser des noms de variables comme étiquettes
lp2 <- ggplot(df_long, aes(x = Species, y = value, group = variable)) +
  geom_line() +
  geom_point() 
lp2 + 
  geom_text_repel(
    aes(label = variable), data = data_ends,
    color = "black", size = 3
    )

Exemples de données de séries chronologiques

# Données de démonstration
df2 <- Orange
head(df2)
## Grouped Data: circumference ~ age | Tree
##   Tree  age circumference
## 1    1  118            30
## 2    1  484            58
## 3    1  664            87
## 4    1 1004           115
## 5    1 1231           120
## 6    1 1372           142
# Filtrer les dernières valeurs
data_ends <- df2 %>% 
  group_by(Tree) %>% 
  top_n(1, age) 
data_ends
## # A tibble: 5 x 3
## # Groups:   Tree [5]
##   Tree    age circumference
##   <ord> <dbl>         <dbl>
## 1 1      1582           145
## 2 2      1582           203
## 3 3      1582           140
## 4 4      1582           214
## 5 5      1582           177
ggplot(df2, aes(age, circumference)) +
  geom_line(aes(color = Tree)) +
  geom_text_repel(
    aes(label = circumference), data = data_ends, 
    size = 3
    )

Utilisation d’un axe y secondaire pour montrer les étiquettes des lignes

Fonctions R clés : La fonction ggplot2 scale_y_continuous() est utilisée en combinaison avec l’argument sec.axis pour créer un deuxième axe sur la droite. Les nombres à afficher au niveau des graduations sont définis par le vecteur de valeurs correspondant aux extrémités des lignes.

# Extraire le vecteur des dernières valeurs
data_ends <- df2 %>% 
  group_by(Tree) %>% 
  top_n(1, age) %>%
  pull(circumference)
data_ends
## [1] 145 203 140 214 177
# Créer le line plot avec des étiquettes
ggplot(df2, aes(x = age, y = circumference)) +
      geom_line(aes(color = Tree)) +
      scale_y_continuous(sec.axis = sec_axis(~ ., breaks = data_ends))

Conclusion

Cet article décrit comment afficher la dernière valeur de chaque ligne sous forme d’étiquette.



Version: English





No Comments

Give a comment

Want to post an issue with R? If yes, please make sure you have read this: How to Include Reproducible R Script Examples in Datanovia Comments