R : nuages de points et légendes
Le package graphics est chargé avec R de base. Il inclut une fonction plot qui permet de réaliser des graphiques en lignes, en barres mais aussi des nuages de points.
Nous vous proposons de profiter du bon R pour garder la tête dans les nuages…
Syntaxe
La syntaxe est celle de la fonction plot pour laquelle type = "p".
plot(x, y, type = "p")
Légende
La syntaxe de la légende est la suivante :
legend("topright", legend = labels, fill = colors, title = "Catégories")
"topright" indique que la position de la légende se situe en haut à droite. De même on peut utiliser "bottomleft", "topleft", "bottomright" ou les coordonnées x, y pour placer une légende.
legend = labels : texte des catégories.
Exemple
Nous observons un groupe d’oiseaux selon trois critères : la taille, le poids et le sexe (ces données sont fictives).
Taille (cm) | Poids (g) | Sexe |
33,8 | 165 | F |
34,1 | 167 | F |
34,3 | 168 | M |
34,5 | 190 | F |
34,5 | 199 | F |
34,8 | 210 | M |
35,0 | 215 | F |
35,1 | 217 | M |
35,2 | 225 | M |
35,3 | 228 | M |
Nous entrons les données dans R-Studio en saisissant les vecteurs mais en pratique il est beaucoup plus fréquent de les importer.
# Données
taille <- c(33.8, 34.1, 34.3, 34.5, 34.5, 34.8, 35, 35.1, 35.2, 35.3)
poids <- c(165, 167, 168, 190, 199, 210, 215, 217, 225, 228)
sexe <- c("F", "F", "M", "F", "F", "M", "F", "M", "M", "M")
# Nuage de points
plot(taille, poids, type = "p", main = "Tourterelles orientales", col = "darkblue", pch = 3)
La forme des points a été déterminée par l’argument pch = 3 (voir en page plot les différentes possibilités pour pch) et leur couleur bleu foncé par col = "darkblue".
Vous constatez que l’opération est très simple mais, pour mieux utiliser les possibilités de R, il est bien plus satisfaisant d’employer un dataframe. Empressons-nous de le faire afin de colorer en bleu les points qui correspondent aux mâles et en rouge ceux qui représentent les femelles.
Reprenons le script depuis le début. Remarquez que nous n'avons pas précisé type = "p". Par défaut, R opte pour le nuage de points.
oiseaux <- data.frame (taille = c(33.8, 34.1, 34.3, 34.5, 34.5, 34.8, 35, 35.1, 35.2, 35.3),
poids = c(165, 167, 168, 190, 199, 210, 215, 217, 225, 228),
sexe = c("F", "F", "M", "F", "F", "M", "F", "M", "M", "M"))
couleurs <- ifelse(oiseaux$sexe == "M", "darkblue", "red")
plot(oiseaux$taille, oiseaux$poids, col = couleurs, pch = 8, xlab = "Taille (cm)", ylab = "Poids (g)", main = "Tourterelles orientales")
# Ajout d'une légende
legend("topleft", legend = c("Mâle", "Femelle"), col = c("darkblue", "red"), pch = 8)
Remarques : la légende a été placée en haut à gauche ("topleft") et les croix ont été remplacées par des étoiles (pch = 8). Vous remarquez que les informations fournies par la légende sont entrées sous forme de vecteurs.
Droite des moindres carrés
Il n’y a même pas besoin de charger un package spécifique pour ajouter au nuage une droite d'ajustement linéaire !
La fonction lm crée un modèle de régression linéaire (poids en fonction de la taille des oiseaux). Nous tracerons la droite avec la fonction abline (épaisseur du trait : 2).
modele <- lm(oiseaux$poids ~ oiseaux$taille)
plot(oiseaux$taille, oiseaux$poids, col = couleurs, pch = 11,
xlab = "Taille (cm)", ylab = "Poids (g)", main = "Tourterelles orientales")
abline(modele, col = "black", lwd = 2)
legend(x = 33.9, y = 222, legend = c("Mâle", "Femelle"), col = c("darkblue", "red"), pch = 11)
Cette nouvelle version vous permet de découvrir une nouvelle forme de point et surtout la souplesse du placement de la légende (coordonnées du coin supérieur gauche). Si vous ne souhaitez pas que celle-ci soit encadrée, utilisez l’argument bty = "n".