Cours
Le plot character, ou pch, est l’argument standard permettant de définir le symbole tracé dans un certain nombre de fonctions R.
Vous pouvez ajouter du texte explicatif à un graphique de plusieurs manières : étiquettes d’axes, titres, légendes ou texte directement sur le tracé. Les fonctions graphiques de base de R créent généralement des étiquettes d’axes par défaut, mais vous pouvez les remplacer avec les arguments xlab() pour l’axe des x et ylab() pour l’axe des y.
Certaines fonctions graphiques de base proposent aussi des titres par défaut, que l’on peut à nouveau remplacer, comme ici :
library(MASS)
par(mfrow = c(1, 2))
plot(density(geyser$waiting))
plot(density(geyser$waiting), main = "Estimated density: \n Old Faithful waiting times")

Le graphique de gauche utilise le titre par défaut renvoyé par la fonction density, qui indique que le tracé a été généré par cette fonction avec ses options par défaut et précise la variable dont on estime la densité. Dans le graphique de droite, ce titre par défaut a été remplacé en spécifiant l’argument optionnel main. Remarquez que l’ajout du caractère de retour à la ligne, backslash n, crée un titre sur deux lignes dans cette chaîne de caractères.
text() Function
À l’instar des fonctions lines et points, text est une fonction graphique de bas niveau qui permet d’ajouter du texte explicatif à un graphique existant. Pour cela, il faut préciser les valeurs x et y (les coordonnées où le texte doit apparaître) ainsi que labels, un vecteur de caractères indiquant le texte à ajouter.
text(x, y, adj)

Par défaut, le texte ajouté au graphique est centré sur les valeurs x indiquées, mais l’argument optionnel adj permet d’en modifier l’alignement.
Notez que l’argument adj de la fonction text() détermine le positionnement horizontal du texte et peut prendre n’importe quelle valeur entre 0 (aligné à gauche) et 1 (aligné à droite). En pratique, il peut aussi sortir de cet intervalle : une valeur négative fait commencer le texte à droite de la position x spécifiée. Inversement, une valeur supérieure à 1 fait se terminer le texte à gauche de la position x.
library(MASS)
plot(UScereal$fibre)
text(5, 28, "<-- Outliers [left-justified text at (5, 28)]", adj = 0)
text(65, 23, "[Right-justified text at (65, 23)]", adj = 1, col = "red")
text(5, 28, "[Centered text (default) at (31, 18)]", col = "blue")

Polices, orientations et autres attributs du texte
Voici quelques façons de modifier l’apparence du texte ajouté via des arguments optionnels de la fonction text. Par défaut, le texte est horizontal, mais on peut changer son orientation avec l’argument srt, qui spécifie l’angle par rapport à l’axe horizontal.
Ici, le texte en rouge est incliné vers le haut grâce à srt fixé à 30 degrés (valeur positive), tandis que le texte en vert est incliné vers le bas avec srt à -45.
On peut aussi définir la couleur du texte avec l’argument col, et le texte rouge illustre l’ajustement de la taille avec cex. En indiquant cex = 1.2, on augmente la taille de 20 % par rapport à la valeur normale.
Autre caractéristique modifiée dans cet exemple : la police, via l’argument font. La valeur par défaut font = 1 correspond au style normal ; font = 2 met en gras, font = 3 met en italique et font = 4 combine gras et italique.
library(MASS)
plot(Boston$rad)
# "Inner city" avec couleur et rotation ajustées
text(350, 24, adj = 1, "Inner city? -->", srt = 30, font = 2, cex = 1.2, col = "red")
# "Suburbs" avec couleur et rotation ajustées
text(100, 15, "Suburbs? -->", srt = -45, font = 3, col = "green")
title("Text with varying orientations, fonts, sizes & colors")

Ajuster la position, la taille et la police du texte
Dans l’exemple suivant, vous allez :
- Tracer
MPG.cityen fonction deHorsepowerdepuis la tableCars93, avec des cercles vides (valeur par défaut depch). - Construire la variable
index3avec la fonctionwhich()pour identifier les lignes correspondant aux voitures à 3 cylindres. - Utiliser
points()pour superposer des cercles pleins,pch = 16, sur tous les points représentant des voitures à 3 cylindres. - Utiliser
text()avec la variableMakecomme précédemment pour ajouter des étiquettes à droite des voitures à 3 cylindres, mais en définissant cette foisadj = 0.2pour décaler davantage les étiquettes vers la droite,cexpour augmenter leur taille de 20 % etfontpour les afficher en gras italique.
# Tracer MPG.city en fonction de Horsepower avec des cercles vides
plot(Cars93$Horsepower, Cars93$MPG.city)
# Créer index3, pointant vers les voitures à 3 cylindres
index3 <- which(Cars93$Cylinders == 3)
# Mettre en évidence les voitures à 3 cylindres avec des cercles pleins
points(Cars93$Horsepower[index3],
Cars93$MPG.city[index3],
pch = 16)
# Ajouter les noms des voitures, décalés par rapport aux points, en texte plus grand et gras
text(Cars93$Horsepower[index3],
Cars93$MPG.city[index3],
Cars93$Make[index3],
adj = -0.2, cex = 1.2, font = 4)
À l’exécution, ce code produit le résultat suivant :

Pour en savoir plus sur l’ajout de texte aux graphiques, regardez cette vidéo issue de notre cours Data Visualization in R.
Ce contenu est extrait du cours Data Visualization in R de Ronald Pearson sur DataCamp.