12  Conception graphique

Plusieurs librairies sont disponibles dans l’univers R pour faciliter la production de graphiques. L’utilisation de Lattice et ggplot2 est très répendu et bien que ces librairies soient intéressantes, elles reposent sur de nombreuses autres librairies. Puisqu’elles se développent constamment et rapidement, elles ont tendance à être instable. De plus, leur utilisation peut être ardue puisqu’elles possèdent des méthodes spécifiques, qui sont quasiment un autre langage de programmation. Bref, malgré que ces librairies soient intéressantes, les graphiques conçus à l’aide de ces librairies sont souvent non-reproductible puisqu’après un certain temps le code ne permettra pas de reproduire la figure. Par expérience, quelques mois suffisent pour que la structure des méthodes change et que la figure ne puisse plus être produite avec le code original.

Le présent chapitre se concetra donc sur la conception graphique à l’aide du sytème graphique tradditionnel de R : la librairie graphics. La librairie graphics fait partie des librairies de base de R et aucune autre ne sera utilisée. Alors qu’elle est très puissante et permet de tout faire sans avoir recourt à d’autres librairies, le nombre de lignes de code nécessaire pour construire un graphique peut être important. Toutefois, la machinerie graphique de base de R est suffisament intuitive puisqu’elle repose sur la définition de paramètres graphiques.

12.1 Fonctions graphiques

La librairie graphics contient de nombreuses fonctions pour produire des graphiques. La fonction demo(graphics) permet d’obtenir un aperçu de visualisations possibles et du code pour les générer.

demo(graphics)

La commande suivante permet d’obtenir la liste des fonctions disponibles dans la librairie graphics.

ls("package:graphics")

La commande plot()

Les graphiques sont construits à l’aide de fonctions qui définissent les paramètres graphiques. Par exemple, la fonction plot() permet de construire un graphique de base.

plot(x = 1:10, y = runif(n = 10, min = 1, max = 10))

La commande par()

plot() permet de construire des graphiques de base, mais aussi de construire des graphiques plus complexes en combinant plusieurs fonctions. Les paramètres graphiques sont définis dans la commande par(). Lorsqu’une figure est produite, R récupère les valeurs des paramètres graphiques dans la commande par() et les utilise pour construire la figure. 72 paramètres graphiques sont disponibles dans la commande par(). Voyons les 10 premiers

par()[1:10]
$xlog
[1] FALSE

$ylog
[1] FALSE

$adj
[1] 0.5

$ann
[1] TRUE

$ask
[1] FALSE

$bg
[1] "white"

$bty
[1] "o"

$cex
[1] 1

$cex.axis
[1] 1

$cex.lab
[1] 1

Les paramètres graphiques sont définis par défaut, mais ils peuvent être modifiés en utilisant la commande par(). Par exemple, la commande suivante permet de modifier la couleur de fond de la figure. Il est à noter que les paramètres graphiques doivent être définis avant la commande plot().

par(bg = "grey")
plot(x = 1:10, y = runif(n = 10, min = 1, max = 10))

12.2 Visualisations classiques

Il y a beaucoups de types de graphiques disponibles dans la librairie graphics. Voyons les plus classiques.

Notez que les diagrammes sectioriels, les pie charts, ne sont pas recommandés puisqu’ils sont très difficiles à lire. Il est très difficile de comparer les proportions des secteurs d’un diagramme sectioriel. Il est préférable d’utiliser un diagramme en barres pour comparer des proportions.

Nuage de points

Aussi appelé diagramme de dispersion, le nuage de points est un graphique qui permet de visualiser la relation entre deux variables continues. La commande plot() permet de construire un nuage de points.

plot(x = 1:10, y = runif(n = 10, min = 1, max = 10))

Plusieurs type de nuages de points sont disponibles. Le type de nuage de points est défini par le paramètre type de la commande plot(). Les types de nuages de points disponibles sont les suivants :

Valeur Description
p points
l lignes
b lignes et points
c lignes jointes par des segments droits
o lignes jointes par des segments droits et points
h barres verticales
s plateau puis pente
S pente puis creux
n ne rien afficher
plot(x = 1:10, y = runif(n = 10, min = 1, max = 10), type = "h")

Histogramme

hist(x = rnorm(n = 1000, mean = 0, sd = 1))

Diagramme en barres

barplot(height = runif(n = 10, min = 1, max = 10))

Boîte à moustache

boxplot(x = runif(n = 10, min = 1, max = 10))

Expressions mathématiques

Les expressions mathématiques peuvent être utilisées pour tracer le comportement d’une fonction. Par exemple, la commande curve() permet de visualiser la fonction trigonométrique sin().

curve(sin(x), from = 0, to = 2 * pi)

12.3 Paramètres graphiques

La fonction par()

La fonte du texte

La fonte du texte est définie par le paramètre font de la commande par(). Les valeurs possibles sont les suivantes :

Valeur Description
1 Normal
2 Gras
3 Italique
4 Gras et italique
par(font = 3)
plot(x = 1:10, y = runif(n = 10, min = 1, max = 10))

La taille du texte

La taille du texte est définie par le paramètre cex de la commande par(). La valeur par défaut est 1. La valeur 2 permet d’augmenter la taille du texte de 200% et la valeur 0.5 permet de diminuer la taille du texte de 50%.

par(cex = 0.5, mar=c(1,1,1,1))
plot(x = 1:10, y = runif(n = 10, min = 1, max = 10))

Le type de lignes

Le type de lignes est défini par le type de ligne lty, son épaisseur lwd et sa couleur col.

plot(x = 1:10, y = runif(n = 10, min = 1, max = 10), type = "l", lty = 2, lwd = 2, col = "red")

Les axes

Les axes sont définis par les paramètres xaxt et yaxt. Les valeurs possibles sont les suivantes :

Valeur Description
n Ne pas afficher les axes
s Afficher les axes
S Afficher les axes et les graduations
d Afficher les axes et les graduations à l’intérieur du graphique
D Afficher les axes et les graduations à l’intérieur du graphique
plot(x = 1:10, y = runif(n = 10, min = 1, max = 10), xaxt = "n", yaxt = "n")

Les marges

Les marges sont définies par les paramètres mar et mai. Les marges extérieures sont définies par le paramètre mar et les marges intérieures sont définies par le paramètre mai. Les marges sont définies en pouces. La commande par() permet de définir les marges extérieures et intérieures.

par(mar = c(1, 1, 1, 1), mai = c(1, 1, 1, 1))
plot(x = 1:10, y = runif(n = 10, min = 1, max = 10))

12.4 Ajouts

Graphique vierge

plot(x = 1:10, y = runif(n = 10, min = 1, max = 10), type = "n")

Axes et échelles

plot(x = 1:10, y = runif(n = 10, min = 1, max = 10), xaxt = "n", yaxt = "n")
axis(side = 1, at = 1:10)

Texte

plot(x = 1:10, y = 1:10, type = "n")
text(x = 1:10, y = 1:10, labels = 1:10)

Titre de figure

plot(x = 1:10, y = 1:10, type = "n")
title(main = "Titre de la figure")

Légende

plot(x = 1:10, y = runif(n = 10, min = 1, max = 10), col = 1:10)
legend(x = "topright", legend = 1:10, fill = 1:10)

Flèches

plot(x = 1:10, y = 1:10, type = "n")
arrows(x0 = 1, y0 = 1, x1 = 10, y1 = 10)

Lignes

plot(x = 1:10, y = 1:10, type = "n")
lines(x = 1:10, y = 10:1)

Points

plot(x = 1:10, y = 1:10, type = "n")
points(x = 1:10, y = runif(n = 10, min = 1, max = 10))

12.5 Enregistrer une figure

R permet de produire une figure, mais il est aussi possible de l’enregistrer dans un fichier. La commande png() permet d’enregistrer la figure dans un fichier png. La commande dev.off() permet de fermer le fichier sans lequel l’enregistrement ne se complètera pas.

png("figure.png")
plot(x = 1:10, y = runif(n = 10, min = 1, max = 10))
dev.off()

D’autres formats sont aussi disponibles. Par exemple, pdf(), jpeg(), bmp() ou tiff().

12.6 Ressources supplémentaires

L’art graphique sous R propose un guide d’utilisation du système graphique traditionnel de R pour produire des graphiques de haute qualité https://github.com/EcoNumUdS/BIO500/blob/master/references/graphsonr.pdf