R permet de créer différents types de tracés, des graphiques de base comme les courbes de densité, dot plots, boxplots et nuages de points, jusqu’aux graphes plus complexes sur le plan statistique comme les probability plots.
Vous pouvez ainsi passer de graphiques simples avec peu de personnalisation à des graphiques avancés entièrement personnalisés, y compris interactifs. Pourtant, nos graphiques R ne donnent pas toujours le résultat souhaité : Stack Overflow regorge de questions à ce sujet, avec de nombreux thèmes récurrents.
C’est pourquoi DataCamp a rassemblé les questions les plus fréquentes et leurs meilleures réponses dans un seul article.
Vous pouvez ouvrir un cadre vide et activer le périphérique graphique en R comme suit :
plot.new()
# Or try out the following command
# frame()
Remarque : les fonctions plot.new() et frame() définissent un nouveau cadre de tracé sans axes, étiquettes ni contour. Elles indiquent qu’un nouveau graphique va être créé : une nouvelle fenêtre s’ouvre si aucune n’est active, sinon la fenêtre existante est prête à accueillir le nouveau tracé. Plus d’infos ici.
x11() peut aussi ouvrir un nouveau périphérique Windows pour le système X Window (version 11) !
Vous pouvez aussi utiliser la fonction plot.window() pour fixer les dimensions horizontales et verticales du graphique vide que vous venez d’ouvrir :
plot.new()
pWidth =3
pHeight =2
plot.window(c(0,pWidth),
c(0,pHeight))Propulsé par
Tracer un vrai graphique vide
Vous pouvez produire un graphique vide avec la fonction plot(). Ajoutez ensuite axes, étiquettes et titre avec les fonctions mtext() et title().
# Draw an empty plot
plot(5,
5,
type="n",
axes=FALSE,
ann=FALSE,
xlim=c(0, 10),
ylim = c(0,10))
# Add text to the x-axis
mtext("x-axis",
side=1)
# Add text to the y-axis
mtext("y-axis",
side=2)
# Add a title
title("An R Plot")
Vous donnez les coordonnées (5,5) au graphique, mais vous ne tracez rien en fixant l’argument type à "n".
Astuce : essayez "p" ou "b" pour voir la différence !
Vous n’ajoutez pas d’annotation, mais vous fixez des limites de 0 à 10 sur les axes x et y.
Enfin, vous pouvez dessiner un cadre autour du tracé avec box() et ajouter des points avec points() :
# Draw an empty plot
plot(5,
5,
type="n",
axes=FALSE,
ann=FALSE,
xlim=c(0, 10),
ylim = c(0,10))
# Add text to the x-axis
mtext("x-axis",
side=1)
# Add text to the y-axis
mtext("y-axis",
side=2)
# Add a title
title("An R Plot")
#Draw a box
box()
#Put (red) point in the plot at (5,5)
points(5,
5,
col="red")
points(5,
7,
col="orange",
pch=3,
cex=2)
points(c(0, 0, 1),
c(2, 4, 6),
col="green",
pch=4)
Remarque : vous pouvez passer vos x et y sous forme de vecteurs pour tracer plusieurs points d’un coup. L’argument pch choisit le symbole, et cex règle l’échelle du texte et des symboles par rapport à la valeur par défaut.
Astuce : pour voir quel numéro correspond à quel symbole, cliquez ici.
2. Comment définir les étiquettes d’axes et le titre des graphiques R
Les axes des graphiques R figurent parmi les sujets les plus populaires sur Stack Overflow. Les questions sont variées.
Poursuivez la lecture pour découvrir les plus fréquentes repérées par DataCamp !
Nommer les axes (avec exposants ou indices) et ajouter un titre
Vous pouvez facilement nommer les axes et ajouter un titre pour rendre votre graphique plus clair pour votre public.
Ajoutez les arguments main pour le titre principal, sub pour le sous‑titre, xlab pour l’axe des x et ylab pour l’axe des y.
Remarque : pour des exposants ou indices dans le titre, utilisez expression() avec ^ pour l’exposant et des crochets pour l’indice dans l’argument main de plot().
Testez‑le dans le bloc DataCamp Light ci‑dessous :
# The data
x <- seq(0,2*pi,0.1)
y <- sin(x)
# Plot the data
plot(x,
y,
main=expression("main title"^2),
sub=expression("sub-title"[2]),
xlab="x-axis label",
ylab="y-axis label")
Vous pouvez aussi afficher des lettres grecques dans les étiquettes d’axes en combinant expression() et paste(). Exécutez :
# The data
x <- seq(0,2*pi,0.1)
y <- sin(x)
# Plot the data
plot(x,
y,
xlab = expression(paste("Greek letter ", phi)),
ylab = expression(paste("Greek letter ",mu)))
Ajuster l’apparence des étiquettes d’axes
Pour modifier l’apparence des étiquettes des axes x et y, utilisez col.lab (couleur) et cex.lab (taille relative au réglage par défaut cex).
# The data
x <- seq(0,2*pi,0.1)
y <- sin(x)
# Plot the data
plot(x,
y,
main=expression("main title"^2),
sub=expression("sub-title"[2]),
xlab="x-axis label",
ylab="y-axis label",
col.lab="blue",
cex.lab=0.75)
Pour masquer les valeurs des axes, passez xaxt et yaxt à "n" (suppression du tracé des axes). Toute autre valeur tracera l’axe.
Ensuite, mettez ann à FALSE pour retirer les étiquettes.
# The data
x <- seq(0,2*pi,0.1)
y <- sin(x)
# Plot the data
plot(x,
y,
xaxt="n",
yaxt="n",
ann=FALSE)
Astuce : si ce n’est pas l’info recherchée, voyez cette page.
Faire pivoter les étiquettes d’axes
Ajoutez l’argument las à la fonction axis() pour orienter les nombres des axes :
# The data
x <- seq(0,2*pi,0.1)
y <- sin(x)
# Plot the data, no axes
plot(x,
y,
axes=FALSE)
# Draw a box
box()
# Add (modified) axes to the plot
axis(2,
las=2)
axis(1,
las=0)
Remarque : cela suppose d’abord de tracer sans axes via plot() puis d’ajouter les axes avec axis().
las accepte : 0 (parallèle à l’axe, défaut), 1 (horizontal), 2 (perpendiculaire), 3 (vertical).
Pour en savoir plus sur axis(), continuez ci‑dessous.
Déplacer les axes
Vous voulez déplacer vos axes ? Utilisez axis() pour choisir où dessiner chaque axe. Par exemple, l’axe des x en haut et l’axe des y à droite.
# The data
x<-seq(0,2*pi,0.1)
y<-sin(x)
# Plot the data, but don't plot axes or annotations
plot(x,
y,
axes=FALSE,
ann=FALSE)
# Draw the x-axis above the plot area
axis(3)
# Draw the y-axis to the right of the plot area
axis(4)
# Draw a box
box()
Vous tracez d’abord sans axes ni annotations, puis vous ajoutez les axes souhaités et leur position.
La flexibilité de axis() ne s’arrête pas là ! Voyez la suite.
Astuce : consultez la dernière question pour déplacer le texte des axes avec hjust et vjust.
3. Comment ajouter et ajuster l’espacement des graduations
Modifier l’espacement des graduations
Laisser R décider des graduations peut être frustrant. Voici comment les ajuster.
1. Utiliser axis() pour maîtriser les graduations
Considérez le code suivant :
# Define the position of tick marks
v1 <- c(0,pi/2,pi,3*pi/2,2*pi)
# Define the labels of tick marks
v2 <- c("0","Pi/2","Pi","3*Pi/2","2*Pi")
# The data
x <- seq(0,2*pi,0.1)
y <- sin(x)
# Plot the data
plot(x,
y,
xaxt = "n")
# Add an axis to the plot
axis(side = 1,
at = v1,
labels = v2,
tck=-.05)
Vous définissez d’abord la position des graduations et leurs libellés, puis vous tracez en supprimant l’axe (xax t = "n").
Ensuite :
axis() choisit le côté (1 bas, 2 gauche, 3 haut, 4 droite) ;
at indique où dessiner les graduations (ici V1) ;
labels fournit les libellés (ici V2) ;
tck règle la direction/longueur des graduations (valeur négative : sous l’axe).
Astuce : passez une valeur positive à tck pour voir la différence.
Vous pouvez aussi régler la taille (tcl) et l’apparence des libellés (cex.axis, col.axis, font.axis).
# Define the position of tick marks
v1 <- c(0,pi/2,pi,3*pi/2,2*pi)
# Define the labels of tick marks
v2 <- c("0","Pi/2","Pi","3*Pi/2","2*Pi")
# The data
x <- seq(0,2*pi,0.1)
y <- sin(x)
# Plot the data
plot(x,
y,
xaxt = "n")
# Add axis to the plot
axis(side = 1,
at = v1,
labels = v2,
tck=-.1,
tcl = -0.5,
cex.axis=1.05,
col.axis="blue",
font.axis=5)
2. Utiliser d’autres fonctions pour contrôler les graduations
Vous pouvez aussi utiliser par() et plot() avec l’argument xaxp (positions des graduations extrêmes sur l’axe des x et nombre d’intervalles) :
# The data
x <- seq(0,2*pi,0.1)
y <- sin(x)
# Plot the data
plot(x,
y,
xaxp = c(0, 2*pi, 5))
Variante équivalente :
# The data
x <- seq(0,2*pi,0.1)
y <- sin(x)
# Plot the data
plot(x,
y,
xaxt="n")
# Use `par()` to set graphical `xaxp` parameter
par(xaxp= c(0, 2*pi, 2))
# Add an axis to the plot
axis(1)
Remarque : cela ne fonctionne pas en échelle logarithmique. Avec par(xlog=T), la signification des trois valeurs de xaxp change : pour une petite plage, n est négatif, sinon n vaut 1:3 et x1 et x2 sont les plus petites et plus grandes puissances de 10 dans les coordonnées utilisateur, 10 ^ par(“usr”)[1:2].
Exemple :
n <- 1
# The data
x <- seq(0, 10000, 1)
y <- exp(n)/(exp(n)+x)
# Set graphical parameters `xlog` and `xaxp`
par(xlog=TRUE,
xaxp= c(1, 4, 3))
# Pot the data
plot(x,
y,
log="x")
Ici, vous utilisez par() : vous mettez xlog à TRUE et fixez xaxp pour les graduations extrêmes et le nombre d’intervalles (min = 1, max = 4, intervalles = 3).
Vous tracez ensuite x et y avec l’argument log pour indiquer l’axe à mettre en log ("x", "y" ou "xy").
Exemple avec les deux axes en log :
n <- 1
# The data
x <- seq(0, 20, 1)
y <- exp(x)/(x)
# Set graphical parameters `xlog` and `xaxp`
par(xlog=TRUE,
xaxp= c(1, 4, 3))
# Set graphical parameters `ylog` and `yaxp`
par(ylog=TRUE,
yaxp= c(1, 11, 2))
# Plot the data
plot(x,
y,
log="xy")
Ajouter des graduations secondaires
Ajoutez rapidement des « petites » graduations avec minor.tick() du package Hmisc :
# Import `Hmisc` library
library(Hmisc)
# Make a new plot
plot.new()
# Set minor tick mark
minor.tick(nx = 1.5,
ny = 2,
tick.ratio=0.75)
nx définit le nombre d’intervalles entre graduations majeures sur l’axe x (1 = supprime) ;
ny fait de même pour l’axe y ;
tick.ratio fixe le ratio de longueur petites/grandes graduations (longueur des grandes issue de par(tck=x)).
4. Comment créer deux axes des x ou des y différents
Première option : créez un premier tracé puis utilisez par() avec new=TRUE pour éviter d’effacer le périphérique graphique :
# Set a seed
set.seed(101)
# The data
x <- 1:10
y <- rnorm(10)
z <- runif(10, min=1000, max=10000)
# Plot the data
plot(x, y)
# Don't clean the frame before drawing
par(new = TRUE)
Puis créez le second tracé avec plot() en ajustant notamment type, axes, bty, xlab et ylab :
type : passez "l" pour un tracé en lignes ;
axes : FALSE pour ne tracer aucun axe ;
bty : supprime le cadre autour du graphique ;
xlab et ylab : chaînes vides pour ne pas afficher d’étiquettes.
Testez‑le dans le bloc ci‑dessous (le code précédent est déjà chargé dans l’environnement) :
Ajoutez ensuite l’axe et le libellé en marge avec axis() et mtext().
Pour ajouter un axe à droite, passez side=4 à axis(). Indiquez at avec des valeurs « belles » couvrant l’étendue de z via pretty(), afin de refléter l’échelle du second graphe.
Essayez ci‑dessous :
axis(side=4,
at = pretty(range(z)))
mtext("z",
side=4,
line=3)
Remarque : side accepte 1 (bas), 2 (gauche), 3 (haut), 4 (droite). line indique la marge utilisée.
Résultat final :
set.seed(101)
x <-1:10
y <- rnorm(10)
z <- runif(10, min=1000, max=10000)
plot(x, y)
par(new =TRUE)
plot(x,
z,
type ="l",
axes =FALSE,
bty ="n",
xlab ="",
ylab ="")
axis(side=4,
at = pretty(range(z)))
mtext("z",
side=4,
line=3)Propulsé par
En exercice supplémentaire, construisez un graphique avec deux axes des x différents ! Essayez dans ce bloc :
plot.new()
set.seed(101)
x <- 1:10
y <- rnorm(10)
z <- runif(10, min=1000, max=10000)
par(mar = c(5, 4, 4, 4) + 0.3)
plot(x, y)
par(new = TRUE)
plot(z, y, type = "l", axes = FALSE, bty = "n", xlab = "", ylab = "")
axis(side=3, at = pretty(range(z)))
mtext("z", side=3, line=3)
Notez que des packages automatisent ces opérations : twoord.plot() (plotrix) et doubleYScale() (latticeExtra) sont pratiques et souvent plus rapides :
# Import `latticeExtra`
library(latticeExtra)
# The data
chol <- read.table(url("http://assets.datacamp.com/blog_assets/chol.txt"), header = TRUE)
Age <- chol$AGE
Chol <- chol$CHOL
Smoke <- chol$SMOKE
State <- chol$MORT
# Create a bivariate scatterplot `a`
a <- xyplot(Chol ~ Age|State)
# Create a bivariate scatterplot `b`
b <- xyplot(Smoke ~ Age|State)
# Draw the two plots with different y scales
doubleYScale(a, b, style1 = 0, style2 = 3, add.ylab2 = TRUE, columns=3)
Remarque : l’exemple ci‑dessus utilise ce jeu de données. Besoin d’un rappel sur l’import de données ou read.table() ? Consultez le tutoriel DataCamp sur l’import de données en R.
5. Comment ajouter ou modifier la légende d’un graphique R
7. Comment tracer un graphique avec un PNG en arrière‑plan
Vous pouvez facilement superposer un graphique sur une image .png grâce au package png. Installez‑le si nécessaire, chargez‑le avec library() et lancez‑vous.
Commencez par charger l’image avec readPNG() en précisant le chemin du fichier.
Astuce : affichez et changez votre répertoire de travail avec les commandes ci‑dessous.
Si l’image est dans votre répertoire de travail, readPNG("picture.png") suffit.
Préparez ensuite la zone de tracé et utilisez par() pour récupérer les paramètres graphiques nécessaires à rasterImage(). L’argument usr définit les bornes utilisateur (ici 1, 3, 2, 4).
Ajoutez une grille puis des lignes :
install.packages("png")
library(png)
image <- readPNG("<path to your picture>")
getwd()
setwd("<path to a folder>")
plot(1:2, type='n', main="Plotting Over an Image", xlab="x", ylab="y")
lim <- par()
rasterImage(image, lim$usr[1], lim$usr[3], lim$usr[2], lim$usr[4])
grid()
lines(c(1,1.2,1.4,1.6,1.8,2.0), c(1,1.3,1.7,1.6,1.7,1.0), type="b", lwd=5, col="red")Propulsé par
Avec le logo DataCamp, vous obtiendrez par exemple :
library(png)
image <- readPNG("datacamp.png")
plot(1:2, type="n", main="Plotting Over an Image", xlab="x", ylab="y", asp=1)
lim <- par()
rasterImage(image, lim$usr[1], lim$usr[3], lim$usr[2], lim$usr[4])
lines(c(1,1.2,1.4,1.6,1.8,2.0), c(1.5,1.3,1.7,1.6,1.7,1.0), type="b", lwd=5, col="red")Propulsé par
Notez que readPNG() attend un fichier .png. Pour des .jpg, utilisez la librairie jpeg.
# Download an image
download.file("https://holtzyan.files.wordpress.com/2015/10/cropped-p1090518.jpg" , destfile="my_image.jpg")
# Load `jpeg`
library(jpeg)
# Read in the jpg file
my_image=readJPEG("my_image.jpg")
# Set up a plot area with no plot
plot(1:2, type='n', main="", xlab="x", ylab="y")
# Get the plot information
lim <- par()
rasterImage(my_image, lim$usr[1], lim$usr[3], lim$usr[2], lim$usr[4])
grid()
#Add your plot
lines(c(1, 1.2, 1.4, 1.6, 1.8, 2.0), c(1, 1.3, 1.7, 1.6, 1.7, 1.0), type="b", lwd=5, col="white")
Ici, l’image est d’abord téléchargée puis utilisée, mais vous pouvez tout aussi bien lire un fichier local avec readJPEG().
Exemple issu de la R Graph Gallery, une excellente source d’inspiration avec code et rendu au même endroit.
8. Comment ajuster la taille des points
Avec R de base
Pour modifier la taille des points, utilisez simplement l’argument cex :
x <- c(1,2,3,4,5)
y <- c(6,7,8,9,10)
plot(x,y,cex=2,col="red")
Rappel : R offre un contrôle encore plus fin via symbols() :
Ici, les rayons des cercles proviennent de df$x3, et inches contrôle la taille : si positif, la plus grande dimension du symbole prend cette taille en pouces.
Avec ggplot2
Dans un scatterplot ggplot2, ajustez la taille avec size. Les données chol sont chargées :
ggplot(chol,
aes(x=chol$WEIGHT, y=chol$HEIGHT))+
geom_point(size =2)Propulsé par
Le résultat est identique : testez en remplaçant la dernière ligne du bloc par ce code.
9. Comment ajuster une courbe lissée à vos données
La fonction loess() est souvent la solution favorite : elle « ajuste une surface polynomiale déterminée par un ou plusieurs prédicteurs numériques, via un lissage local ».
En bref, vous corrélez y et x dans loess() (1 à 4 prédicteurs), puis vous tracez x et y et ajoutez la courbe prédite :
x <- 1:10
y <- c(2,4,6,8,7,12,14,16,18,20)
#Estimations between data
lo <- loess(y~x)
plot(x,y)
lines(predict(lo))
10. Comment ajouter des barres d’erreur
Tracer des barres d’erreur avec R de base
Mauvaise nouvelle : R ne trace pas directement des barres d’erreur. Bonne nouvelle : vous pouvez les construire sans package additionnel !
Commencez par définir cette fonction qui calcule des statistiques de synthèse :
summarySE <-function(data=NULL, measurevar, groupvars=NULL, na.rm=FALSE,
conf.interval=.95, .drop=TRUE){
library(plyr)# New version of length which can handle NA's: if na.rm==T, don't count them
length2 <-function(x, na.rm=FALSE){if(na.rm) sum(!is.na(x))else length(x)}# This does the summary. For each group's data frame, return a vector with# N, mean, and sd
datac <- ddply(data, groupvars, .drop=.drop,
.fun =function(xx, col){
c(N = length2(xx[[col]], na.rm=na.rm),
mean = mean (xx[[col]], na.rm=na.rm),
sd = sd (xx[[col]], na.rm=na.rm))},
measurevar
)# Rename the "mean" column
datac <- rename(datac, c("mean"= measurevar))
datac$se <- datac$sd / sqrt(datac$N)# Calculate standard error of the mean# Confidence interval multiplier for standard error# Calculate t-statistic for confidence interval: # e.g., if conf.interval is .95, use .975 (above/below), and use df=N-1
ciMult <- qt(conf.interval/2+.5, datac$N-1)
datac$ci <- datac$se * ciMult
return(datac)}Propulsé par
Cette définition provient de cette source et est disponible via la librairie Rmisc.
Calculez ensuite les statistiques sur chol (déjà chargé), puis utilisez‑les pour tracer votre graphique.
Inspectez les données avant de commencer !
#Calculate some statistics for the `chol` dataset
cholc <- summarySE(chol,
measurevar="CHOL",
groupvars=c("MORT",
"SMOKER"))
#Plot the data
plot(cholc$N,
cholc$CHOL,
ylim=range(c(cholc$CHOL-cholc$sd,
cholc$CHOL+cholc$sd)),
pch=19,
xlab="Cholesterol Measurements",
ylab="Cholesterol Mean +/- SD",
main="Scatterplot With sd Error Bars"
)
#Draw arrows of a "special" type
arrows(cholc$N,
cholc$CHOL-cholc$sd,
cholc$N,
cholc$CHOL+cholc$sd,
length=0.05,
angle=90,
code=3)
Pour la liste complète des arguments de arrows(), voir ici.
Tracer des barres d’erreur avec ggplot2
Barres d’erreur = erreur standard de la moyenne
Commencez par résumer vos données avec summarySE() (package Rmisc) ou la fonction ci‑dessus. Utilisez ensuite ce data frame pour tracer et dessiner les barres d’erreur (par exemple l’erreur standard).
Par commodité, données et fonction sont chargées :
Découvrez les principaux types d'agents d'intelligence artificielle, comment ils interagissent avec les environnements et comment ils sont utilisés dans les différents secteurs d'activité. Comprendre les agents réflexes simples, les agents basés sur un modèle, les agents basés sur un but, les agents basés sur l'utilité, les agents d'apprentissage, etc.
Apprenez l'essentiel de l'architecture d'un entrepôt de données, des composants clés aux meilleures pratiques, pour construire un système de données évolutif et efficace !
Gagnez en confiance dans la régression par les MCO en maîtrisant ses fondements théoriques. Découvrez comment réaliser des mises en œuvre simples dans Excel, R et Python.
Initiez-vous aux structures de données de Python : apprenez-en plus sur les types de données et les structures de données primitives et non primitives, telles que les chaînes de caractères, les listes, les piles, etc.
Commencez à explorer et à visualiser vos propres données avec tidyverse, une collection puissante et populaire d'outils de science des données au sein de R.
R permet de créer différents types de tracés, des graphiques de base comme les courbes de densité, dot plots, boxplots et nuages de points, jusqu’aux graphes plus complexes sur le plan statistique comme les probability plots.
Vous pouvez ainsi passer de graphiques simples avec peu de personnalisation à des graphiques avancés entièrement personnalisés, y compris interactifs. Pourtant, nos graphiques R ne donnent pas toujours le résultat souhaité : Stack Overflow regorge de questions à ce sujet, avec de nombreux thèmes récurrents.
C’est pourquoi DataCamp a rassemblé les questions les plus fréquentes et leurs meilleures réponses dans un seul article.
Pour vous exercer à créer des graphiques en R, essayez ce cours sur la visualisation de données en R.
Les 15 questions sur les graphiques R
1. Comment tracer un graphique R vide
Ouvrir un nouveau cadre de tracé
Vous pouvez ouvrir un cadre vide et activer le périphérique graphique en R comme suit :Remarque : les fonctions
plot.new()etframe()définissent un nouveau cadre de tracé sans axes, étiquettes ni contour. Elles indiquent qu’un nouveau graphique va être créé : une nouvelle fenêtre s’ouvre si aucune n’est active, sinon la fenêtre existante est prête à accueillir le nouveau tracé. Plus d’infos ici.x11()peut aussi ouvrir un nouveau périphérique Windows pour le système X Window (version 11) !quartz()lance un pilote graphique pour macOS.Définir les dimensions de la fenêtre graphique
Vous pouvez aussi utiliser la fonction
plot.window()pour fixer les dimensions horizontales et verticales du graphique vide que vous venez d’ouvrir :Tracer un vrai graphique vide
Vous pouvez produire un graphique vide avec la fonction
plot(). Ajoutez ensuite axes, étiquettes et titre avec les fonctionsmtext()ettitle().Vous donnez les coordonnées (5,5) au graphique, mais vous ne tracez rien en fixant l’argument
typeà"n".Astuce : essayez
"p"ou"b"pour voir la différence !Vous n’ajoutez pas d’annotation, mais vous fixez des limites de
0à10sur les axes x et y.Enfin, vous pouvez dessiner un cadre autour du tracé avec
box()et ajouter des points avecpoints():Remarque : vous pouvez passer vos x et y sous forme de vecteurs pour tracer plusieurs points d’un coup. L’argument
pchchoisit le symbole, etcexrègle l’échelle du texte et des symboles par rapport à la valeur par défaut.Astuce : pour voir quel numéro correspond à quel symbole, cliquez ici.
2. Comment définir les étiquettes d’axes et le titre des graphiques R
Les axes des graphiques R figurent parmi les sujets les plus populaires sur Stack Overflow. Les questions sont variées.
Poursuivez la lecture pour découvrir les plus fréquentes repérées par DataCamp !
Nommer les axes (avec exposants ou indices) et ajouter un titre
Vous pouvez facilement nommer les axes et ajouter un titre pour rendre votre graphique plus clair pour votre public.
Ajoutez les arguments
mainpour le titre principal,subpour le sous‑titre,xlabpour l’axe des x etylabpour l’axe des y.Remarque : pour des exposants ou indices dans le titre, utilisez
expression()avec^pour l’exposant et des crochets pour l’indice dans l’argumentmaindeplot().Testez‑le dans le bloc DataCamp Light ci‑dessous :
Vous pouvez aussi afficher des lettres grecques dans les étiquettes d’axes en combinant
expression()etpaste(). Exécutez :Ajuster l’apparence des étiquettes d’axes
Pour modifier l’apparence des étiquettes des axes x et y, utilisezcol.lab(couleur) etcex.lab(taille relative au réglage par défautcex).Pour plus d’informations, consultez cette page.
Supprimer les étiquettes et annotations d’axes
Pour masquer les valeurs des axes, passez
Ensuite, mettezxaxtetyaxtà"n"(suppression du tracé des axes). Toute autre valeur tracera l’axe.annàFALSEpour retirer les étiquettes.Astuce : si ce n’est pas l’info recherchée, voyez cette page.
Faire pivoter les étiquettes d’axes
Ajoutez l’argumentlasà la fonctionaxis()pour orienter les nombres des axes :Remarque : cela suppose d’abord de tracer sans axes via
plot()puis d’ajouter les axes avecaxis().lasaccepte :0(parallèle à l’axe, défaut),1(horizontal),2(perpendiculaire),3(vertical).Pour en savoir plus sur
axis(), continuez ci‑dessous.Déplacer les axes
Vous voulez déplacer vos axes ? Utilisez
axis()pour choisir où dessiner chaque axe. Par exemple, l’axe des x en haut et l’axe des y à droite.Rappel : avec
Voici comment passeraxis(),1= bas,2= gauche,3= haut,4= droite.3et4pour haut et droite :Vous tracez d’abord sans axes ni annotations, puis vous ajoutez les axes souhaités et leur position.
La flexibilité de
axis()ne s’arrête pas là ! Voyez la suite.Astuce : consultez la dernière question pour déplacer le texte des axes avec
hjustetvjust.3. Comment ajouter et ajuster l’espacement des graduations
Modifier l’espacement des graduations
Laisser R décider des graduations peut être frustrant. Voici comment les ajuster.
1. Utiliser
Considérez le code suivant :axis()pour maîtriser les graduationsVous définissez d’abord la position des graduations et leurs libellés, puis vous tracez en supprimant l’axe (
xax t = "n").Ensuite :
axis()choisit le côté (1bas,2gauche,3haut,4droite) ;atindique où dessiner les graduations (iciV1) ;labelsfournit les libellés (iciV2) ;tckrègle la direction/longueur des graduations (valeur négative : sous l’axe).Astuce : passez une valeur positive à
Vous pouvez aussi régler la taille (tckpour voir la différence.tcl) et l’apparence des libellés (cex.axis,col.axis,font.axis).2. Utiliser d’autres fonctions pour contrôler les graduations
Vous pouvez aussi utiliser
par()etplot()avec l’argumentxaxp(positions des graduations extrêmes sur l’axe des x et nombre d’intervalles) :Variante équivalente :
Remarque : cela ne fonctionne pas en échelle logarithmique. Avec
Exemple :par(xlog=T), la signification des trois valeurs dexaxpchange : pour une petite plage,nest négatif, sinonnvaut 1:3 et x1 et x2 sont les plus petites et plus grandes puissances de 10 dans les coordonnées utilisateur, 10 ^ par(“usr”)[1:2].Ici, vous utilisez
par(): vous mettezxlogàTRUEet fixezxaxppour les graduations extrêmes et le nombre d’intervalles (min =1, max =4, intervalles =3).Vous tracez ensuite
Exemple avec les deux axes en log :xetyavec l’argumentlogpour indiquer l’axe à mettre en log ("x","y"ou"xy").Ajouter des graduations secondaires
Ajoutez rapidement des « petites » graduations avecminor.tick()du packageHmisc:nxdéfinit le nombre d’intervalles entre graduations majeures sur l’axe x (1 = supprime) ;nyfait de même pour l’axe y ;tick.ratiofixe le ratio de longueur petites/grandes graduations (longueur des grandes issue depar(tck=x)).4. Comment créer deux axes des x ou des y différents
Première option : créez un premier tracé puis utilisezpar()avecnew=TRUEpour éviter d’effacer le périphérique graphique :Puis créez le second tracé avec
plot()en ajustant notammenttype,axes,bty,xlabetylab:type: passez"l"pour un tracé en lignes ;axes:FALSEpour ne tracer aucun axe ;bty: supprime le cadre autour du graphique ;xlabetylab: chaînes vides pour ne pas afficher d’étiquettes.Testez‑le dans le bloc ci‑dessous (le code précédent est déjà chargé dans l’environnement) :
Ajoutez ensuite l’axe et le libellé en marge avec
axis()etmtext().Pour ajouter un axe à droite, passez
side=4àaxis(). Indiquezatavec des valeurs « belles » couvrant l’étendue dezviapretty(), afin de refléter l’échelle du second graphe.Essayez ci‑dessous :
Remarque :
sideaccepte1(bas),2(gauche),3(haut),4(droite).lineindique la marge utilisée.Résultat final :
En exercice supplémentaire, construisez un graphique avec deux axes des x différents ! Essayez dans ce bloc :
Notez que des packages automatisent ces opérations :
twoord.plot()(plotrix) etdoubleYScale()(latticeExtra) sont pratiques et souvent plus rapides :Remarque : l’exemple ci‑dessus utilise ce jeu de données. Besoin d’un rappel sur l’import de données ou
read.table()? Consultez le tutoriel DataCamp sur l’import de données en R.5. Comment ajouter ou modifier la légende d’un graphique R
Ajouter et modifier une légende avec R de base
Ajoutez une légende aveclegend():Notez que
pt.cexettitle.cexne fonctionnent pas toujours comme prévu. Contournements :text.fontdanslegend():cexdifférentesAstuce : pour les couleurs disponibles en R, voyez ce PDF très utile.
Ajouter et modifier la légende et les libellés avec
Ajouter une légende par défaut dans ggplot2 est simple :ggplot2Puis personnalisez l’apparence de la légende.
Deux approches pour changer titre et libellés dans
ggplot2:- Modifier les « scales » pour définir titres et libellés
Si vous utilisez les esthétiquescolouroushape, changez noms et libellés viascale_color_discrete()etscale_shape_discrete():Le tracé peut sembler compressé dans l’onglet Plot de DataCamp Light, ce ne serait pas le cas dans RStudio.
Vous pouvez créer deux légendes si vous utilisez
shapedansgeom_point()et dans leslabels.Pour placer la légende en bas, définissez
legend.positionà"bottom".legend.justificationpermet de positionner la légende dans le tracé.Astuce : découvrez les différentes scales et leurs options ici.
- Modifier le data frame pour mettre les bons niveaux de facteur
Par exemple :Vous pourrez ensuite utiliser ces nouveaux libellés dans ggplot2 sans lignes de code supplémentaires pour renommer dans le tracé.
Astuce : pour une cheat sheet complète ggplot2, rendez‑vous ici.
6. Comment afficher une grille sur un graphique R
Avec R de base
Pour certains usages, il est utile d’ajouter une grille. Utilisezgrid():Avec
ggplot2Le bloc ci‑dessous montre comment forcer l’affichage d’une grille avec
ggplot2. Les donnéescholsont déjà chargées et préparées.Si vous voulez voir les premières lignes, affichez‑les dans la console R du bloc DataCamp Light :
Astuce : pour masquer la grille mineure, passez
element_blank()àpanel.grid.minor.Pour colorer le fond, ajoutez
panel.background = element_rect(fill = "navy"). Exemple ci‑dessous (donnéescholdéjà chargées) :7. Comment tracer un graphique avec un PNG en arrière‑plan
Vous pouvez facilement superposer un graphique sur une image .png grâce au package
png. Installez‑le si nécessaire, chargez‑le aveclibrary()et lancez‑vous.Commencez par charger l’image avec
readPNG()en précisant le chemin du fichier.Astuce : affichez et changez votre répertoire de travail avec les commandes ci‑dessous.
Si l’image est dans votre répertoire de travail,
readPNG("picture.png")suffit.Préparez ensuite la zone de tracé et utilisez
par()pour récupérer les paramètres graphiques nécessaires àrasterImage(). L’argumentusrdéfinit les bornes utilisateur (ici1,3,2,4).Ajoutez une grille puis des lignes :
Avec le logo DataCamp, vous obtiendrez par exemple :
Notez que
readPNG()attend un fichier .png. Pour des .jpg, utilisez la librairiejpeg.Ici, l’image est d’abord téléchargée puis utilisée, mais vous pouvez tout aussi bien lire un fichier local avec
readJPEG().Exemple issu de la R Graph Gallery, une excellente source d’inspiration avec code et rendu au même endroit.
8. Comment ajuster la taille des points
Avec R de base
Pour modifier la taille des points, utilisez simplement l’argumentcex:symbols():Ici, les rayons des cercles proviennent de
df$x3, etinchescontrôle la taille : si positif, la plus grande dimension du symbole prend cette taille en pouces.Avec
Dans un scatterplot ggplot2, ajustez la taille avecggplot2size. Les donnéescholsont chargées :Vous pouvez aussi passer
sizeàgeom_point():Le résultat est identique : testez en remplaçant la dernière ligne du bloc par ce code.
9. Comment ajuster une courbe lissée à vos données
La fonction
loess()est souvent la solution favorite : elle « ajuste une surface polynomiale déterminée par un ou plusieurs prédicteurs numériques, via un lissage local ».En bref, vous corrélez
yetxdansloess()(1 à 4 prédicteurs), puis vous tracezxetyet ajoutez la courbe prédite :10. Comment ajouter des barres d’erreur
Tracer des barres d’erreur avec R de base
Mauvaise nouvelle : R ne trace pas directement des barres d’erreur. Bonne nouvelle : vous pouvez les construire sans package additionnel !
Commencez par définir cette fonction qui calcule des statistiques de synthèse :
Cette définition provient de cette source et est disponible via la librairie
Rmisc.Calculez ensuite les statistiques sur
chol(déjà chargé), puis utilisez‑les pour tracer votre graphique.Inspectez les données avant de commencer !
Pour la liste complète des arguments de
arrows(), voir ici.Tracer des barres d’erreur avec
ggplot2Barres d’erreur = erreur standard de la moyenne
Commencez par résumer vos données avec
Par commodité, données et fonction sont chargées :summarySE()(package Rmisc) ou la fonction ci‑dessus. Utilisez ensuite ce data frame pour tracer et dessiner les barres d’erreur (par exemple l’erreur standard).