Gérer les graphiques avec R
Cette page récapitule à travers des exemples comment réaliser tous les types de graphiques sous R, du plus classique au plus complexe.
1- Sauvegarder un graphique
Lorsqu'on veut sauvegarder un graphique sous forme d'image, il y a différentes commandes pour réaliser différents formats.
Sauvegarder le graphique au format png
# 1 - Utiliser la commande png indiquant qu'il faudra sauvegarder l'image
png()
# 2 - Tracer le graphique (ici pie en exemple)
pie(100, col=2) #?png pour voir comment modifier la taille, la résolution
# 3 - Fermer les fenêtres graphiques avec graphics.off ou dev.off
# PS : la sauvegarde a lieu à l'adresse par défaut affichable avec getwd() et modifiable avec setwd()
dev.off()
Sauvegarder le graphique au format pdf avec la commande pdf
pdf()
# Puis tracer le graphique
dev.off() # pour terminer la sauvegarde
# ATTENTION : l'image sera sauvegardée dans le répertoire source dont on peut obtenir l'adresse avec getwd() ou qu'on peut redéfinir avec l'aide la commande setwd.
Sauvegarder le graphique au format jpeg avec la commande jpeg()
# Même usage que pour pdf() ou png()
2- Gérer les couleurs sous R
Lorsqu'on veut colorer une courbe, un point, un diagramme, il y a plusieurs manières de formuler le code couleur :
Couleurs pré-enregistrées
col = 1 <=> noir
col = 2 <=> rouge
col = 3 <=> vert
etc.
pie(100, col=2) # col=2 permet d'accéder à une couleur pré-enregistrée, ici le rouge - la fonction pie est utilisée ici à titre d'exemple
Couleur au format html hexadécimal
pie(100, col="#F7D358") # chaque paire de lettres correspond à une composante (rouge, vert ou bleu)
Couleur avec gestion de la transparence
couleur =rgb(red=(245/255), green=(169/255), blue=(169/255), alpha=0.8) # l'alpha traduit la transparence
plot(100,200,pch=16,cex=3)
polygon(x=c(50,150,150,50),y=c(0,0,300,300),col=couleur)
Couleur transparente avec code hexadécimal
# Il suffit d'ajouter une paire de lettre au code
plot(100,200,pch=16,cex=3)
polygon(x=c(50,150,150,50),y=c(0,0,300,300),col="#F7FF58CC")
# Ou encore la fonction rainbow pour capter dans la palette de l'arc-en-ciel
rainbow(12) # génére 12 couleurs
pie(rep(1, 12), col = rainbow(12))
data(swiss) ; plot(swiss[,1:2],col=rainbow(30)[as.factor(swiss[,4])],pch=16,cex=2)
data(swiss) ; plot(swiss[,1:2],col=heat.colors(30)[as.factor(swiss[,4])],pch=16,cex=2)
data(swiss) ; plot(swiss[,1:2],col=terrain.colors(30)[as.factor(swiss[,4])],pch=16,cex=2)
data(swiss) ; plot(swiss[,1:2],col=colorRampPalette(c("red","black"))(10)[as.factor(swiss[,4])],pch=16,cex=2)
Couleurs définie par sa palette personnelle
voir la commande colorRampPalette
colorRampPalett(c("green","orange","red"))
Ajouter de la transparence à une liste de couleurs - ajouter de l'alpha pour rendre transparent
install.packages("prettyGraphs")
library("prettyGraphs")
colors <- add.alpha(colors,alpha=0.8)
Colorer un graphique avec la palette Viridis adapté aux daltoniens.
# Installer et charger le package viridis
install.packages("viridis")
library(viridis)
# Générer des données aléatoires
x <- rnorm(20) ; y <- rnorm(20) ; z <- rnorm(20)
# Créer une palette de couleurs avec viridis
pal <- viridis(20) # pal : palette de 20 couleurs
# Faire le graphique avec les couleurs correspondant à z
plot(x, y, col = pal[cut(z, breaks = 20)], pch = 16, cex = 2)
#cut() : découpe z en 20 catégories en fonction de sa valeur
La fonction col2rgb() permet de convertir une couleur donnée en un vecteur de trois entiers correspondant aux valeurs RGB (rouge, vert et bleu) de la couleur.
La fonction col2hex() permet quant à elle de convertir une couleur donnée en une chaîne de caractères hexadécimaux correspondant aux valeurs RGB de la couleur.
3- Gérer les marges et axes d'un graphique ou diagramme
Changer les marges d'un graphique permet d'élargir la place nécessaire aux annotations des axes.
Afficher les marges d'un graphique :
Restitue les valeurs sous la forme c(bottom, left, top, right).
par("mar")
Changer les valeurs des marges : les 4 valeurs définit en terme de marge (paramètre mar de la commande par) sont dans l'ordre les marges basse, gauche, haute et droite
plot.new()
#par(mar=c(marge basse, marge gauche, marge haute, marge droite))
par(mar = c(8, 8, 2, 2))
plot(c(1:10)) # Exemple
4- Gérer les fenêtres graphiques
x11() permet de créer une nouvelle fenêtre graphique sans écraser les anciens graphiques.
graphics.off() permet de fermer toutes les fenêtres graphiques
for (i in 1:10) {hist(rnorm(150));x11()}
graphics.off()
De façon équivalente et plus progressive, browser(), permet de faire défiler les graphiques un par un en appuyant sur ENTRÉE.
Si on désire sortir de browser(), il suffit de taper Q dans la console.
for (i in 1:10) {hist(rnorm(150));browser()}
5- La commande text() pour annoter un diagramme
text permet d'ajouter du texte sur un graphique
x
y
adj : permet de signaler si le texte est centré, aligné à gauche, centré verticalement...
pos
las
Mettre en forme le tracé des points et courbes
bg
couleur du fond du graphique
par(bg="orange")
plot(c(1,2,3))
Afficher la p-value en écriture scientifique
x <- rnorm(100) ; y <- rnorm(100)+3*x
plot(x, y, sub=paste("X et Y sont corrélés avec une p-value de",format(cor.test(x,y)$p.value,scientific=TRUE,digits=2)))
La fonction format() permet d'afficher des nombres en écriture scientifique et de limiter le nombre de chiffres après la virgule.
Idéal pour afficher la p-value dans un sous-titre sub.
Mettre en forme les axes et graduations
Rubrique à terminer.
Lien externe : Des exemples de graphiques
Différents packages (librairies) pour visualiser les données sous R
Annotation - expression - bquote
http://astrostatistics.psu.edu/su07/R/html/grDevices/html/plotmath.html
PAGE EN TRAVAUX