Ce tutoriel R graphique montre comment personnaliser une légende de ggplot.
vous apprendrez à:
- Modifier le titre de la légende et les libellés des textes
- Modifier la position de la légende. Dans les options par défaut de ggplot2, la légende est placée à droite du graphique. Nous montrerons des exemples pour déplacer la légende vers le bas ou vers le haut du graphique. Vous apprendrez aussi comment mettre la légende à l’intérieur du graphique.
- Inverser l’ordre des légendes. Le moyen le plus simple d’inverser l’ordre des éléments de légende est d’utiliser la fonction ggplot2 guides(). Il change l’ordre de légende pour l’esthétique spécifiée (fill, color, linetype, shape, size, etc). Exemple de code R :
p + guides(fill = guide_legend(fill = guide_legend(reverse = TRUE))
pour la couleur de remplissage (ex. : box plot et bar plot) oup + guides(color = guide_legend(reverse = TRUE))
pour la couleur des points et des lignes (ex. : scatter plot et line plot). - Supprimer une légende ggplot
- Supprimer le titre de la légende:
p + theme(legend.title = element_blank())
. - Masquer la légende entière pour créer un ggplot sans légende. Exemple de code R:
p + theme(legend.position = "none")
. - Masquer la légende pour une géométrie spécifique, par exemple
geom_text()
. Il suffit de spécifier l’argumentshow.legend = FALSE
dans la géométrie donnée. Exemple:geom_text(show.legend = FALSE)
.
- Supprimer le titre de la légende:
- Changer le thème de la légende
- Modifier l’apparence de la police (size, color / colour et face) du titre et des textes de la légende.
- Modifier la couleur d’arrière-plan de la légende, la taille et la largeur des signes.
- Renommer les étiquettes de légendes et changer l’ordre des éléments d’une légende donnée.
- Contrôler manuellement les couleurs de la légende en spécifiant des valeurs de couleurs personnalisées.
- Modifier les légendes ggplot pour chaque esthétique quand vous avez beaucoup de légendes. Fonction R : guides()
- Modifier l’ordre des légendes dans le cas où vous avez plusieurs légendes (ou plusieurs guides) générées en utilisant plusieurs esthétiques (shape, color, size, fill, etc.) dans le graphique. Par exemple, vous pouvez avoir une légende pour la forme des points et une autre pour la couleur et la taille des points.
- Supprimer la légende pour une esthétique spécifique, disons la légende pour shape.
Contents:
- Fonctions clés de ggplot2
- Modifier le titre de la légende
- Modifier la position de la légende
- Inverser l’ordre des éléments de la légende
- Supprimer la légende
- Modifier la taille, la couleur et l’apparence de la légende
- Modifier la couleur de fond de la légende, la taille et la largeur des signes de la légende
- Renommer les étiquettes des légendes et modifier l’ordre des éléments
- Modifier manuellement les couleurs de la légende
- Guides multiples : Supprimer et ordonner des légendes
- Conclusion
Related Book
GGPlot2 Essentials for Great Data Visualization in RFonctions clés de ggplot2
Commencez par créer un box plot en utilisant l’ensemble de données ToothGrowth
. Changer la couleur de remplissage du box plot en fonction de la variable de groupement dose
.
library(ggplot2)
ToothGrowth$dose <- as.factor(ToothGrowth$dose)
p <- ggplot(ToothGrowth, aes(x = dose, y = len))+
geom_boxplot(aes(fill = dose)) # Changer la couleur de remplissage par groupe
Fonctions clés R pour changer les légendes de ggplot:
- p + labs(). Modifier le titre de la légende.
- Utiliser p + labs(fill = “dose”) pour geom_boxplot(aes(fill = dose))
- Utiliser p + labs(color = “dose”) pour geom_boxplot(aes(color = dose))
- et ainsi de suite pour le type de ligne, la forme, etc
- p + theme(…). Changer le thème de la légende : couleur de fond, bordure de la boîte de légende, taille et couleur de la police de caractères.
- p + scale_x_discrete(limites = c(“2”, “0.5”, “1”))). Modifier l’ordre des éléments dans la légende.
- p + scale_fill_discrete(nom = “Dose”, étiquettes = c(“A”, “B”, “C”)). Renommer le titre de la légende et les libellés des textes.
- guides(). Modifier l’ordre des légendes et supprimer la légende d’une esthétique spécifique, lorsque vous avez plusieurs légendes.
Options essentielles du thème ggplot2 pour la légende:
theme(
# Libellé du titre et du texte de la légende
#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Taille, couleur et apparence du titre
legend.title = element_text(color, size, face),
# Alignement des titres. Nombre de 0 (gauche) à 1 (droite)
legend.title.align = NULL,
# Taille de la couleur de la police et de l'apparence du texte
legend.text = element_text(color, size, face),
# Alignement des textes. Nombre de 0 (gauche) à 1 (droite)
legend.text.align = NULL,
# Position, marge et arrière-plan de la légende
#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Position de la légende : right, left, bottom, top, none
legend.position = "right",
# Marge autour de chaque légende
legend.margin = margin(0.2, 0.2, 0.2, 0.2, "cm"),
# Background de la légende
legend.background = element_rect(fill, color, size, linetype),
# Orientation et justification de la légende
#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Disposition des éléments dans les légendes ("horizontal" ou "vertical")
legend.direction = NULL,
# Positionnement de la légende à l'intérieur ou à l'extérieur du graphique
# ("center" ou vecteur numérique à deux éléments)
legend.justification = "center",
# Fond des signes de la légende
#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
legend.key = element_rect(fill, color), # Background des signes
legend.key.size = unit(1.2, "lines"), # taille des signes (unité)
legend.key.height = NULL, # hauteur des signes (unité)
legend.key.width = NULL, # largeur des signes (unité)
# Espacement entre les légendes.
#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
legend.spacing = unit(0.4, "cm"),
legend.spacing.x = NULL, # Espacement horizontal
legend.spacing.y = NULL, # Espacement vertical
# Boîte de la légende
#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Disposition de plusieurs légendes ("horizontal" ou "vertical")
legend.box = NULL,
# Marges autour de l'ensemble de la zone de légende
legend.box.margin = margin(0, 0, 0, 0, "cm"),
# Fond de la zone de légende : element_rect()
legend.box.background = element_blank(),
# L'espacement entre la zone graphique et la zone de légende
legend.box.spacing = unit(0.4, "cm")
)
Pour effacer le titre de la légende, utilisez element_blank()
pour l’option de thème correspondante. Par exemple, utilisez ceci: p + theme(legend.title = element_blank())
.
Modifier le titre de la légende
La fonction labs()
peut être utilisée pour mettre à jour facilement le titre de la légende pour une esthétique donnée (fill, color, size, shape, linetype, …):
# Graphique par défaut
print(p)
# Modifier les titres des légendes
p + labs(fill = "Dose (mg)")
Modifier la position de la légende
Les valeurs allouées pour la position de la légende sont : “left”,“top”, “right”, “bottom”, “none”.
La localisation de la légende peut aussi être un vecteur numérique c(x,y), où x et y sont les coordonnées de la légende. Leurs valeurs doivent être comprises entre 0 et 1. c(0,0) correspond à la position “en bas à gauche” et c(1,1) correspond à la position “en haut à droite”. Cela permet de placer la légende à l’intérieur du graphique.
# Mettre légende en haut de la page
p + theme(legend.position="top")
# Définir la position de la légende par un vecteur numérique c(x, y)
# Placez la légende à l'intérieur du graphique
p + theme(legend.position = c(0.7, 0.2),
legend.direction = "horizontal")
Inverser l’ordre des éléments de la légende
Pour changer l’ordre des éléments de la légende dans notre exemple, où les box plots sont remplies par groupes, vous pouvez utiliser les fonctions guides() ou scale_fill_discrete() comme suit:
# Utilisez la fonction guides pour inverser la légende pour
# une esthétique spécifique (fill, linetype, shape or color)
p + guides(fill = guide_legend(reverse=TRUE))
# Ou utilisez scale_fill_discrete (comme ci-dessus)
p + scale_fill_discrete(guide = guide_legend(reverse=TRUE))
# Ou modifier directement l'échelle (comme ci-dessus)
p + scale_fill_discrete(breaks = rev(levels(ToothGrowth$dose)))
Supprimer la légende
Vous pouvez supprimer la légende comme suit:
p + theme(legend.position = "none")
Modifier la taille, la couleur et l’apparence de la légende
Le code R suivant change la taille de la légende et la couleur du texte:
# Modifier l'apparence du titre de la légende et des étiquettes de texte
p + theme(legend.title = element_text(color = "blue", size = 10),
legend.text = element_text(color = "red"))
Modifier la couleur de fond de la légende, la taille et la largeur des signes de la légende
p + theme(
# Modifier la couleur de fond de la légende
legend.background = element_rect(fill = "darkgray"),
legend.key = element_rect(fill = "lightblue", color = NA),
# Modifier la taille et la largeur des signes de la légende
legend.key.size = unit(1.5, "cm"),
legend.key.width = unit(0.5,"cm")
)
Pour ajouter une bordure à la zone de légende, vous pouvez spécifier les arguments suivants dans la fonction element_rect()
:
linetype
dont les valeurs incluent l’une des valeurs suivantes : “solid”, “dashed”, ..color
etsize
, pour changer la couleur et la taille de la ligne de bordure de la boîte, respectivement
Par exemple:
p + theme(
legend.background = element_rect(color = "steelblue", linetype = "solid")
)
Renommer les étiquettes des légendes et modifier l’ordre des éléments
Ceci peut être fait avec la fonction scale:
- Modifier l’ordre des éléments de légende:
scale_x_discrete()
- Modifier le titre de la légende et les textes:
scale_fill_discrete()
# Modifier l'ordre des éléments de légende
p + scale_x_discrete(limits=c("2", "0.5", "1"))
# Modifier le titre et les étiquettes des légendes
p + scale_fill_discrete(name = "Dose", labels = c("A", "B", "C"))
D’autres fonctions scale_xxx discrètes incluent:
# Couleur des lignes et des points
scale_color_discrete(name, labels, limits, breaks)
# Pour les types de lignes
scale_linetype_discrete(name, labels, limits, breaks)
# Pour les formes de points
scale_shape_discrete(name, labels, limits, breaks)
# Pour la taille de point
scale_size_discrete(name, labels, limits, breaks)
# Opacité/transparence
scale_alpha_discrete(name, labels, limits, breaks)
Modifier manuellement les couleurs de la légende
Les fonctions ci-dessous permettent de modifier manuellement la couleur de la légende:
- scale_color_manual() ou scale_colour_manual() : Modifier la couleur des points et des lignes.
- scale_fill_manual() : Modifier la couleur de remplissage des zones (pour les bar plots et box plots)
p + scale_fill_manual(values = c("#d8b365", "#f5f5f5", "#5ab4ac"))
Guides multiples : Supprimer et ordonner des légendes
Il est possible d’utiliser la fonction guides()
pour définir ou supprimer la légende d’une esthétique particulière (fill, color, size, shape, etc).
- Données:
mtcars
. Convertir les variablescyl
etgear
en facteur:
mtcars$cyl<-as.factor(mtcars$cyl)
mtcars$gear <- as.factor(mtcars$gear)
- Créer un nuage de points à l’esthétique multiple (guides). La couleur et la forme des points sont déterminées respectivement par les variables de groupes
cyl
etgear
. La taille des points est contrôlée par la variable qsec.
p <- ggplot(data = mtcars, aes(x = mpg, y = wt))+
geom_point(aes(color = cyl, size = qsec, shape = gear))
p
- Modifier la position de la légende pour plusieurs guides:
p + theme(legend.position = "bottom",
legend.box = "vertical")
- Modifier l’ordre de la légende à l’aide de la fonction
guide_legend()
:
p + guides(color = guide_legend(order = 1),
size = guide_legend(order = 2),
shape = guide_legend(order = 3))
Notez que, dans le cas d’une couleur continue, la fonction guide_colourbar()
doit être utilisée pour changer la position de la légende des couleurs.
ggplot(data = mpg, aes(x = displ, y = cty))+
geom_point(aes(size = hwy, color = cyl, shape = drv))+
guides(colour = guide_colourbar(order = 1),
alpha = guide_legend(order = 2),
size = guide_legend(order = 3))
- Supprimer une légende pour une esthétique particulière (couleur et taille):
p + guides(color = FALSE, size = FALSE)
La suppression d’une légende particulière peut également être effectuée en utilisant les fonctions scale_xx()
. Dans ce cas, l’argument guide est utilisé comme suit.
# Désactiver la légende de la forme des points
p + scale_shape(guide=FALSE)
# Désactiver la légende de la taille
p + scale_size(guide=FALSE)
# Désactiver la légende des couleurs
p + scale_color_manual(values=c('#999999','#E69F00','#56B4E9'),
guide=FALSE)
Conclusion
Nous vous présentons comment changer facilement le titre, la position et les textes d’une légende ggplot. Les différentes étapes sont résumées comme suit.
- Créer un exemple de ggplot:
library(ggplot2)
p <- ggplot(ToothGrowth, aes(x = factor(dose), y = len)) +
geom_boxplot()
- Changer le titre d’une légende pour une esthétique donnée (fill, color, size, shape, linetype, …):
p + labs(fill = "Dose (mg)")
- Supprimer la légende:
p + theme(legend.position = "none")
- Modifier la position de la légende. Valeurs possibles : “left”,“top”, “right”, “bottom”, “none”.
p + theme(legend.position = "top")
Version: English
No Comments