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éesggrepel
: fournitgeoms
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