Vous êtes sur la page 1sur 11

Les graphiques

idèle à son principe, le logiciel R a recours à l’utilisation de fonctions pour la réalisation de graphiques.
Si elles sont utilisables "directement" à partir de données, elles sont également "paramétrables", donnant
ainsi à chaque utilisateur la possibilité de les personnaliser en vue d’une utilisation adaptée à son besoin.
En plus des fonctions permettant la réalisation des graphiques habituels (fonctions graphiques de
haut niveau), il existe une famille de fonctions (dîtes de bas niveau) permettant d’ajouter des
éléments à un graphique existant et une autre (on parle alors de fonctions interactive) pour obtenir ou
ajouter des informations de manière interactive (avec l’aide de la souris notamment). Grâce à ces 3
types de fonctions, l’utilisateur pourra élaborer de nouvelles fonctions graphiques qui répondront àces
besoins. L’objectif est de vous présenter ces notions de bases afin que vous soyiez capables, à l’issue de
cet E-thème, de créer vos propres outils graphiques. Au cours de celui-ci, la data frame dfcontenu dans
le fichier donnees.txt sera utilisée. Il convient donc avant de commencer de la charger et d’en extraire
les variables (Avec les fonctions source() et attach()).

1 - Les fonctions graphiques

omme nous l’avons dit, il existe trois familles de fonctions. Cette "distinction" ne les rend pas pour
autant dissociables. Au contraire elles sont parfaitement complémentaires. Généralement, lorsqu’elles
sont utilisées ensemble la démarche est la suivante. Un graphique complet est construit avec les
fonctions de haut niveau. Ensuite, quelques éléments informatifs (titres, légende, texte, ...) peuvent
être ajouté avec les fonctions de bas niveau. Enfin, moins systématiquement, la possibilité peut être
donnée à l’utilisateur d’extraire l’information de son choix avec les fonctions interactives.

1.1 - Les fonctions graphiques de haut niveaux

es fonctions graphiques de haut niveaux permettent donc la réalisation de graphiques complets


(graphes, titre, labels, ...) avec plus ou moins de renseignements selon les paramètres que l’on fournit.
Les graphiques générés sont en général satisfaisants (grâce notamment aux paramètres par défaut) si
bien qu’elles peuvent être utilisées seules.
La fonction graphique la plus utilisée dans R est certainement la fonction plot. C’est en effet une
fonction générique qui permet de représenter des données quantitatives, qualitatives et même mixtes.
Intéressons nous aux variables quantitatives VER et JA1, ainsi qu’aux qualitatives IMP et ADA. A l’aide de
cette seule fonction, il est possible d’obtenir
le graphique des coordonnées de VER par rapport à leur indice dans le vecteur : plot(VER).
la répartition des individus entre les différentes modalités de IMP : plot(IMP).

le nuage de points des variables VER et JA1 : plot(VER,JA1).

Vous remarquerez au passage que le premier argument correspond à la variable en abscisse et le


deuxième à la variable en ordonnée.
le croisement des variables IMP et ADA : plot(IMP,ADA).

la distribution de VER selon les modalités de IMP : plot(IMP,VER).


Comme vous pouvez le constater, ces graphiques sont très pauvres au niveau des informations et de
l’aspect visuel. Un paragraphe sera consacréaux principaux paramètres graphiques, mais on peut déjà
souligner que les fonctions de haut niveau permettent de régler quelques uns d’entre eux (titre,
labels,...), ce qui permet d’obtenir un résultat plus correct. Pour chaque fonctions, une liste des options
disponibles est fournit dans l’aide en ligne.

1.2 - Les fonctions graphiques de bas niveaux

es fonctions de bas niveau servent à ajouter des renseignements à un graphique déjàexistant.


Reprenons le graphique représentant le nuage de points des variables VER et JA1. On ajoute un titre à ce
graphique par

title("Nuage de points des variables VER et JA1")

Supposons maintenant que l’on souhaite mettre en valeur les individus possédant tous la modalité
majeure de la variable IMP. On utilise alors l’instruction

points(VER[IMP=="majeure"],JA1[IMP=="majeure"],col="red")
qui superpose (en rouge) les points correspondants à ces individus.

Enfin, intérressons nous à l’histogramme de la variable VER, obtenu par hist(VER,freq=FALSE), et


supposons que l’on souhaite vérifier que cette distribution puisse être une de type log-normale. On
ajoute alors la représentation d’une telle distribution par l’instruction

lines(1 :10000,dlnorm(1 :10000,mean(log(VER)),sd(log(VER))),col="blue")

Ces trois fonctions sont les plus courramment utilisées avec text, legend ou axis (qui le sont un peu
moins). Comme le montrent les exemples ci-dessus, les fonctions de bas niveau sont destinées à deux
tâches principalement :
ajouter de nouveaux éléments graphiques ajouter des informations. En s’intéressant
aux options des fonctions de haut niveau, vous remarquerez que l’on peut parfaitement intégrer
directement celles-ci au graphique. Cependant l’utilisation des fonctions de bas niveau permet de les
"affiner" pour un rendu plus esthétique.

Afin de vous familiariser avec l’utilisation conjointe des deux types de fonctions que nous venons de voir,
il est utile de regarder la démonstration proposé par R (demo(graphics)).

1.3 - Les fonctions graphiques interactives

es fonctions dîtes interactives permettent aux utilisateurs d’extraire ou d’apporter de l’information


àun graphique. On retiendra ici les 2 principales : locator et identify.
La première donne la possibilité à l’utilisateur de rajouter des points ou des lignes à un graphique. Le
résultat de cette fonction dépend en fait de la définition des arguments (n : nombre de points à
sélectionner ; type : représentation des points sélectionnés). Reprenons le nuage de points des variables
VER et JA1. Un point sera rajouté avec l’instruction locator(1,type="p") et une ligne brisée avec
locator(4,type="pl"). Une fois la sélection faîte, les coordonnées des points concernés apparaissent
dans la console.
L’intérêt de cette fonction est donc assez limitée. On peut néanmoins s’en servir pour améliorer
l’information contenue dans un graphique. Ainsi, pour le graphique ci-dessous, nous avons répété
l’instruction locator(4,type="pl",col=...) pour mettre en évidence "à la main" des groupes
d’individus dont les coordonnées sont proches.

Par contre, elle peut s’avérer être très utile associée aux fonctions de bas niveaux servant à donner des
informations sur un graphique (texte, legende, ...). En effet, en remplaçant la définition des coordonnées
par locator(1), l’utilisateur peut placer manuellement ces éléments. Lorsque les graphiques sont
chargés, cela est très appréciable.

L’autre fonction (identify) a plus d’intérêt. Elle permet en effet, pour les représentations de
variables quantitatives, d’obtenir, par un simple clic, l’identité et les coordonnées d’un individu. Pour
cela, il suffit juste de fournir les vecteurs de données et les identifiants correspondants. Admettons que
l’on souhaite connaître les 6 individus du groupe supérieur gauche dans le graphes ci-dessus. Pour cela, il
faut passer l’instruction :

identify(VER,JA1,row.names(df),plot=T)

Lorsque la sélection est terminée, un simple clic sur le bouton droit de la souris permet de stopper
l’éxécution de la fonction.
Dans la console, apparait alors les identifiants sélectionnés.

1.4 - La gestion des fenêtres graphiques


omme vous avez du le constater, lorsque l’on crée un nouveau graphique, l’éventuel graphique en
cours est écrasé. Il est alors impossible d’y avoir à nouveau accès. Pour remédier à ce problème, deux
stratégies sont possibles.
La première utilise les options de la barre des menus. Lorsque l’on souhaite conserver l’accès à un
graphe, il suffit de le signaler en choisissant l’action ADD du menu History de la fenêtre graphique.
Lorsque plusieurs graphes cohabiteront, le passage de l’un à l’autre se fera par les actions Previous et
Next de ce même menu.
La seconde est plus simple. Elle consiste à ouvrir une nouvelle fenêtre graphique pour chaque nouveau
graphe avec la commande x11(). Cependant, il faut alors être vigilant quand au graphique qui est actif.
Si l’on souhaite ajouter de nouveaux éléments, il est nécessaire de vérifier que la fenêtre graphique
possède bien l’attribut (ACTIVE) à la suite de son nom. Si tel n’est pas le cas, il est possible de l’activer
par les commandes dev.set(dev.next()) ou dev.set(dev.prev()).

Enfin, la sauvegarde des graphiques s’effectue avec la fonction savePlot en précisant le nom du fichier
de sauvegarde et le type de fichier (jpg, bmp, ps, pdf, ...).

2 - La paramétrisation des graphiques

es fonctions que nous venons de voir possèdent des arguments permettant de régler certains aspects
graphiques (titre, labels, couleur, ...). Mais d’un point de vue visuel, le résultat n’est pas toujours
satisfaisant. Il faut alors avoir recours à la fonction par, qui permet de régler un nombre très important
de paramètres à appliquer au graphique en construction. Son principe consiste à lui donner en argument
la liste des nouvelles valeurs de ces paramètres (col="red" pour la couleur rouge par exemple). Elle doît
être utilisée avant de construire le graphique.
Les paramètres qu’il est possible de régler sont en nombre très important. Il est possible d’en obtenir la
liste complète par l’instruction par(). Les tableaux suivant fournissent les paramètres les plus utiles.

3 - Les principales fonctions graphiques

our terminer cette présentation des fonctions graphiques, nous vous donnons ci-dessous une liste qui
devrait vous permettre de réaliser la plupart des graphiques que vous souhaitez réaliser. Aucune
description n’est faîte et il est donc plus que conseilléd’aller regarder l’aide en ligne.
4 - Exercice

EXERCICE :

ENONCE :

et exercice reprend les données utilisées au cours de cet E-thème. Le but est de construire une
fonction graphique représentant la liaison entre deux variables qualitatives. Pour cela, elle devra
représenter, dans un même graphique, la distribution de ces 2 variables, le nuage de points auquel on
superposera la droite de régression et le coefficient de corrélation. Le résultat devra prendre la forme
du graphique ci-dessous.
Les arguments de cette fonction seront au nombre de 2 : la variable àexpliquer et la variable
explicative.

INDICATION :

a "difficulté" de la construction ne réside pas dans la réalisation des différents graphiques, mais plus
dans leur organisation. La définition de paramètres graphiques avec la fonction par sera abondamment
utilisée.
Quelques points sont à souligner. Tout d’abord, rappelez vous que la juxtaposition de texte et de la
valeur d’un objet se fait à l’aide de la fonction paste. Enfin, l’impression sur le graphique du coefficient
de corrélation dans un cadre se fait par un moyen détourné. Il n’existe en effet pas de fonction de haut
niveau dessinant un cadre. Il faut donc construire un nuage de points (dont les individus importent
peu) et ne pas représenter les points, les axes et les labels (en réglant certains paramètres). Ensuite, il
reste à placer dans le graphe le coefficient de corrélation. Pour déterminer les coordonnées où sera
placer le texte, le paramètre usr est utilisé. C’est un vecteur de dimension 4 qui contient les
coordonnées des extrémités de la région de dessin. Il suffit alors d’utiliser ces 4 éléments pour
déterminer les coordonnées souhaitées.

CORRECTION :

ne des solutions possibles est :


liaison0<-function(y,x)

nomy<-deparse(substitute(y))

nomx<-deparse(substitute(x))

par.old <- par(c("mfrow", "xaxt", "yaxt"))

on.exit(par(par.old)) par(mfrow=c(2,2))

# distributions

boxplot(y,main=paste("Distribution de",nomy),horizontal=TRUE)

boxplot(x,main=paste("Distribution de",nomx),horizontal=TRUE)

# Tracé du nuage de points

plot(x,y,main=paste("Nuage de points des variables ",nomy,"et",nomx))

# Ajout d’une droite de la régression de VER sur JA1

lines(x,glm(y x)$fitted.values,type="l")

# Coefficient de corrélation par(xaxt="n",yaxt="n")

plot(c(0,10),c(0,10),main="Coefficient de corrélation",type="n",xlab="",ylab="")

usr <-par("usr")

text((usr[1]+usr[2])/2,(usr[3]+usr[4])/2,paste(round(cor(VER,JA1),3)),font=4,cex=2)

Dans ce programme, 3 points sont à mettre en valeur.


Tout d’abord, la gestion des paramètres graphiques. Notez que les paramètres par défaut sont d’abord
sauvés (par.old <-par(c("mfrow", "xaxt", "yaxt"))) puis rétabli à la fin de la fonction
(on.exit(par(par.old))).
Ensuite, remarquez la manière dont le coefficient de corrélation a été inséré dans un cadre avec la
fonction plot. Il n’existe pas de fonction de fonction de haut niveau dessinant un cadre. Il a donc fallu
paramétrer une fonction dont l’usage n’est pas celui-ci pour arriver ànos fins. Cela est très courant
dans R, et cela est rendu d’autant plus possible que les possibilités graphiques sont très étendues.
Enfin, cet exemple illustre l’utilisation des paramètres graphiques. Mais le résultat produit n’est pas
très esthétique. La fonction ci-dessous reprend la précédente en ajustant plusieurs autres paramètres.
liaison<-function(y,x)

nomy<-deparse(substitute(y))

nomx<-deparse(substitute(x))

par.old <- par(c("mfrow", "bg", "col.main", "cex.main"))

on.exit(par(par.old))

par(mfrow=c(2,2),bg="lavender",col.main="blue",cex.main=0.8)

# distributions

boxplot(x,horizontal=TRUE)

usr <- par("usr")

rect(usr[1], usr[3], usr[2], usr[4], col = "cornsilk")

boxplot(x,main=paste("Distribution de",nomx),col="lavender",horizontal=TRUE,add=TRUE)

boxplot(y,horizontal=TRUE)

usr <- par("usr")

rect(usr[1], usr[3], usr[2], usr[4], col = "cornsilk")

boxplot(y,main=paste("Distribution de",nomy),col="lavender",horizontal=TRUE,add=TRUE)

# Tracé du nuage de points

plot(x,y,main=paste("Nuage de points des variables ",nomy,"et",nomx),type="n")

usr <- par("usr")

rect(usr[1], usr[3], usr[2], usr[4], col = "cornsilk")

points(x,y)

# Ajout d’une droite de la régression de VER sur JA1

lines(x,glm(y x)$fitted.values,type="l",col="red")

# Coefficient de corrélation

plot(x,y,main="Coefficient de
corrélation",type="n",xlab="",ylab="",col.axis="lavender",col.lab="lavender",tcl=0)

usr <- par("usr")

rect(usr[1], usr[3], usr[2], usr[4], col = "cornsilk")

text((usr[1]+usr[2])/2,(usr[3]+usr[4])/2,paste(round(cor(VER,JA1),3)),font=4,cex=2)
Le résultat est alors plus probant.

<

Vous aimerez peut-être aussi