ggplot2 légende : Modifier facilement la légende d'un graphique - Logiciel R et visualisation de données
- Données
- Exemple de graphes
- Changer la position d’une légende
- Changer le titre de la légende et le style de police du texte
- Changer la couleur de fond de la légende
- Changer l’ordre des éléments de la légende
- Supprimer la légende du graphique
- Supprimer les slashes dans la légende d’un barplot
- guides() : Définir ou supprimer la légende pour une esthétique spécifique
- Infos
L’objectif de cet tutoriel R est de décrire comment changer la légende d’un graphique généré avec le package ggplot2.
Données
Le jeu de données ToothGrowth est utilisé dans les exemples ci-dessous :
# Convertir la variable dose du type "numeric" au type "factor""
ToothGrowth$dose <- as.factor(ToothGrowth$dose)
head(ToothGrowth)
## len supp dose
## 1 4.2 VC 0.5
## 2 11.5 VC 0.5
## 3 7.3 VC 0.5
## 4 5.8 VC 0.5
## 5 6.4 VC 0.5
## 6 10.0 VC 0.5
Assurez-vous que la variable dose est convertie en une variable de type “factor” en utilisant le script de R ci-dessus.
Exemple de graphes
library(ggplot2)
p <- ggplot(ToothGrowth, aes(x=dose, y=len, fill=dose)) +
geom_boxplot()
p
Changer la position d’une légende
La position de la légende peut être changée en utilisant la fonction theme() comme suit :
p + theme(legend.position="top")
p + theme(legend.position="bottom")
Les valeurs possibles pour l’argument legend.position sont : “left”,“top”, “right”, “bottom”.
Notez que, l’argument legend.position peut être aussi un vecteur numérique c(x, y). Dans ce cas, il est possible de positionner la légende à l’intérieur de la zone graphique. x et y sont les coordonnées de la boîte de légende. Leurs valeurs doivent être entre 0 et 1. c(0,0) correspond à la position “bas-gauche” et c(1,1) correspond à la position “haut-droite”.
p + theme(legend.position = c(0.8, 0.2))
Changer le titre de la légende et le style de police du texte
# Titre de la légende
p + theme(legend.title = element_text(colour="blue", size=10,
face="bold"))
# Textes de la légende
p + theme(legend.text = element_text(colour="blue", size=10,
face="bold"))
Changer la couleur de fond de la légende
# Couleur de fond de la légende
p + theme(legend.background = element_rect(fill="lightblue",
size=0.5, linetype="solid"))
p + theme(legend.background = element_rect(fill="lightblue",
size=0.5, linetype="solid",
colour ="darkblue"))
Changer l’ordre des éléments de la légende
Pour modifier l’ordre des éléments à “2”, “0.5”, “1” :
p + scale_x_discrete(limits=c("2", "0.5", "1"))
Supprimer la légende du graphique
# Supprimer seulement le titre de la légende
p + theme(legend.title = element_blank())
# Supprimer la légende du graphique
p + theme(legend.position='none')
Supprimer les slashes dans la légende d’un barplot
# Graphe par défaut
ggplot(data=ToothGrowth, aes(x=dose, fill=dose)) + geom_bar()
# Changer la couleur de la bordure,
# mais des slashes sont ajoutés dans la légende
ggplot(data=ToothGrowth, aes(x=dose, fill=dose)) +
geom_bar(colour="black")
# Supprimer les slashes:
#1. Dessiner le barplot sans couleur de bordure,
#2. Dessiner encore le barplot avec couleur de bordure,
# mais sans légende (show_guide=FALSE)
ggplot(data=ToothGrowth, aes(x=dose, fill=dose))+
geom_bar() +
geom_bar(colour="black", show_guide=FALSE)
guides() : Définir ou supprimer la légende pour une esthétique spécifique
Il est possible d’utiliser la fonction guides() pour définir ou supprimer la légende d’une esthétique particulière - aesthetic en anglais - (fill, color, size, shape, etc).
Le jeu de données mtcars est utilisé :
# Preparer les données : convertir les variables cyl et gear en "facteur"
mtcars$cyl<-as.factor(mtcars$cyl)
mtcars$gear <- as.factor(mtcars$gear)
head(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
Graphique par défaut sans spécification de guides
Le code de R ci-dessous crée un nuage de points. La couleur et la forme des points sont déterminées par les variables facteurs cyl et gear, respectivement. La taille des points est contrôlé par la variable qsec.
p <- ggplot(data = mtcars,
aes(x=mpg, y=wt, color=cyl, size=qsec, shape=gear))+
geom_point()
# Afficher le graphique sans spécification de guides
p
Changez la position de légende pour plusieurs guides
# Change la position de la légende
p +theme(legend.position="bottom")
# Boîte de légende horizontal
p +theme(legend.position="bottom", legend.box = "horizontal")
Change l’ordre des légendes pour plusieurs guides
La fonction guide_legend() est utilisée:
p+guides(color = guide_legend(order=1),
size = guide_legend(order=2),
shape = guide_legend(order=3))
Si une couleur continue est utilisée, l’ordre de la “légende couleur” peut être changée en utilisant la fonction guide_colourbar():
qplot(data = mpg, x = displ, y = cty, size = hwy,
colour = cyl, shape = drv) +
guides(colour = guide_colourbar(order = 1),
alpha = guide_legend(order = 2),
size = guide_legend(order = 3))
Supprimer la légende pour une esthétique particulière
Le code R ci-dessous, supprime la légende pour les esthétique couleur et taille :
p+guides(color = FALSE, size = FALSE)
La suppression d’une légende particulière peut être faite également lorsque vous utilisez les fonctions scale_xx. Dans ce cas l’argument guide est utilisé comme suit :
# Supprimer la légende pour le type de points
p+scale_shape(guide=FALSE)
# Supprimer la légende pour la taille
p +scale_size(guide=FALSE)
# Supprimer la légende pour la couleur
p + scale_color_manual(values=c('#999999','#E69F00','#56B4E9'),
guide=FALSE)
Infos
Cette analyse a été faite en utilisant le logiciel R (ver. 3.1.2) et le package ggplot2 (ver. 1.0.0)
Show me some love with the like buttons below... Thank you and please don't forget to share and comment below!!
Montrez-moi un peu d'amour avec les like ci-dessous ... Merci et n'oubliez pas, s'il vous plaît, de partager et de commenter ci-dessous!