8 Les graphiques de base en R
R peut être utilisé pour réaliser toute sorte de graphiques de plus simples au plus complexes. Il existe plusieurs packages pour réaliser des graphiques dans R, parmi lesquels il y a
graphics
qui vient charger d’office avec R. Ce package représente le système graphique de base en R. Il est le sujet principal de ce chapitre.lattice
qui, principalement, ajoute quelques fonctionnalités àgraphics
. Ce package ne sera pas traité ici.ggplot2
qui propose une approche plus moderne et qui permet de créer des graphiques de qualité professionnelle. Ce package sera traité dans le chapitre suivant.
8.1 La fonction plot()
La fonction la plus couramment utilisée pour produire des graphiques dans R est la fonction plot()
. plot()
est une fonction générique dont le comportement s’adapte automatiquement à la nature de ses arguments. Il y a deux syntaxes possibles pour cette fonction :
- syntaxe classique:
plot(x = varX, y = varY)
- syntaxe à base de formule:
plot(varY ~ varX)
,
où varX
et varY
sont les noms des variables à mettre dans l’axe des x et l’axe des y, respectivement. L’expression varY ~ varX
est un exemple de ce que R appelle formula (formule). Dans cette expression varY
désigne la variable dépendante (à expliquer, càd., celui dont on cherche à étudier les variations) et varX
la variable indépendante (explicative). Si vous tapez methods(plot)
, vous allez voir, dans liste des méthodes, la fonction plot.formula()
. C’est cette dernière qui est en réalité appelée à chaque fois qu’une formule est introduite comme argument.
Voici un exemple qui illustre les deux syntaxes.
Avec la syntaxe “formule”, la fonction plot()
accepte l’argument data
(voir le Help de plot.formula()
) qui permet de simplifier davantage la syntaxe lorsqu’il s’agit de données stockées dans des data frames. Ainsi les deux lignes de codes suivantes sont équivalentes et produisent le même graphique que ci-dessus.
La fonction plot()
accepte une multitude d’arguments qui permettent de façonner les graphiques (voir le Help pour plus de détails).
plot(w ~ z, data = dt,
type = "o", # type de tracé: points ("p"), lignes ("l"), les deux ("b" ou "o"), ...
col = "blue", # couleur, tapez `colours()` pour la liste complète
pch = 4, # type de symboles, un chiffre entre 0 et 25, tapez `?points`
cex = 0.5, # taille des symboles
lty = 3, # type de lignes, un chiffre entre 1 et 6
lwd = 1.2, # taille de lignes
xlim = c(-2.5, 2.5), # limites de l'axe des x
ylim = c(-1.5, 1.5), # limites de l'axe des y)
xlab = "La variable z", # titre pour l'axe des x
ylab = "Le sinus de z", # titre pour l'axe des y
main = "La fonction sinus entre -pi et pi" # titre général pour le graphique
)
Types de fonctions graphiques
Il y a trois types de fonctions graphiques en R: (i) les fonctions, dites de niveau supérieur, qui servent à créer de nouveaux graphiques; par exemple: plot()
, boxplot()
, barplot()
, hist()
, curve()
, etc.; (ii) les fonctions, dites de niveau inférieur, qui servent à jouter de l’information à un graphique existant; par exemple: legend()
, title()
, points()
, lines()
, text()
, etc.; (iii) les fonctions utilisées pour fixer et contrôler des paramètres graphiques généraux tels que la disposition des figures, la taille des marges, la forme des axes, la police à utiliser, etc.; par exemple: par()
et layout()
. Ce dernier type de fonction ne sera pas traité ici.
Voici une illustration.
Sauvegarder un graphique
Un graphique crée dans RStudio est affiché par défaut dans l’onglet Plots
. Vous pouvez utiliser cet onglet pour zoomer sur un graphique en cliquant sur le bouton Zoom
. Vous pouvez aussi enregistrer le graphique en cliquant sur le bouton Export
.
Pour sauvegarder un graphique R (tel que vous le visualisez sur votre écran) en format PDF, vous pouvez aussi exécuter le code suivant en remplaçant filename
par le le nom que vous voulez. Le fichier ainsi créé sera enregistré dans votre répertoire de travail R.
8.2 Variable numérique
Pour les exemples qui vont suivre, nous allons utiliser le jeu de données mpg
disponible dans le package ggplot2
. Dans ce qui suit, ce dernier est supposé être installé sur votre machine.
manufacturer model displ year cyl trans drv cty hwy fl class
1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compact
2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compact
3 audi a4 2.0 2008 4 manual(m6) f 20 31 p compact
4 audi a4 2.0 2008 4 auto(av) f 21 30 p compact
5 audi a4 2.8 1999 6 auto(l5) f 16 26 p compact
6 audi a4 2.8 1999 6 manual(m5) f 18 26 p compact
Classes 'tbl_df', 'tbl' and 'data.frame': 234 obs. of 11 variables:
$ manufacturer: chr "audi" "audi" "audi" "audi" ...
$ model : chr "a4" "a4" "a4" "a4" ...
$ displ : num 1.8 1.8 2 2 2.8 2.8 3.1 1.8 1.8 2 ...
$ year : int 1999 1999 2008 2008 1999 1999 2008 1999 1999 2008 ...
$ cyl : int 4 4 4 4 6 6 6 4 4 4 ...
$ trans : chr "auto(l5)" "manual(m5)" "manual(m6)" "auto(av)" ...
$ drv : chr "f" "f" "f" "f" ...
$ cty : int 18 21 20 21 16 18 18 18 16 20 ...
$ hwy : int 29 29 31 30 26 26 27 26 25 28 ...
$ fl : chr "p" "p" "p" "p" ...
$ class : chr "compact" "compact" "compact" "compact" ...
Pour plus d’information sur ces données et leur nature, tapez ?mpg
. Nous allons par la suite transformer cyl
, trans
, drv
, fl
et class
en facteur et modifier les niveaux de trans
.
mpg <- transform(mpg, cyl = factor(cyl), trans = factor(trans), drv = factor(drv), fl = factor(fl), class = factor(class))
levels(mpg$trans) <- c(rep("auto", 8), rep("manual", 2))
summary(mpg)
manufacturer model displ year cyl
Length:234 Length:234 Min. :1.60 Min. :1999 4:81
Class :character Class :character 1st Qu.:2.40 1st Qu.:1999 5: 4
Mode :character Mode :character Median :3.30 Median :2004 6:79
Mean :3.47 Mean :2004 8:70
3rd Qu.:4.60 3rd Qu.:2008
Max. :7.00 Max. :2008
trans drv cty hwy fl class
auto :157 4:103 Min. : 9.0 Min. :12.0 c: 1 2seater : 5
manual: 77 f:106 1st Qu.:14.0 1st Qu.:18.0 d: 5 compact :47
r: 25 Median :17.0 Median :24.0 e: 8 midsize :41
Mean :16.9 Mean :23.4 p: 52 minivan :11
3rd Qu.:19.0 3rd Qu.:27.0 r:168 pickup :33
Max. :35.0 Max. :44.0 subcompact:35
suv :62
une seule variable numérique
# gauche supérieur
stripchart(mpg$displ, xlab = "displ", pch = 16)
# droite supérieur
stripchart(mpg$displ, xlab = "displ", method = "stack", pch = 16)
# gauche inférieur
stripchart(mpg$displ, xlab = "displ", method = "jitter", pch = 16)
# droite inférieur
stripchart(mpg$displ, ylab = "displ", method = "jitter", vertical = TRUE, pch = "+")
8.3 Facteur
deux facteurs
xtabs(~ drv + trans, data = mpg) |> proportions("trans") |> barplot(xlab = "trans", ylab = "Prop", legend = TRUE, args.legend = list(title = "drv"))
8.5 Tracer une fonction
curve(x^2, from = 0, to = 20, col = "red", lty = 1, ylab = "y")
curve(x^(2.5), from = 0, to = 20, col = "gray", lty = 2, add = TRUE)
curve(x^(3), from = 0, to = 20, col = "blue", lty = 3, add = TRUE)
legend("topright", title = "Function", legend = c("x^2", "x^2.5", "x^3"), col = c("red", "gray", "blue"), lty = 1:3, bty = "n", inset = c(0.2, 0))