Pour utiliser un graphique de R dans une autre application, comme MS-Word par exemple, il est utile de pouvoir enregistrer la fenêtre graphique sous un format adapté (graphique) dans un fichier. Ce chapitre explique comment procéder. Il est précédé d'un paragraphe sur les possibilités offertes pour manipuler la fenêtre graphique elle-même avant d'éventuellement la sauvegarder dans un fichier externe.
La fenêtre qui s'ouvre lorsqu'on crée un graphique peut être divisée en plusieurs sous-fenêtres graphiques (elles-mêmes divisables...) si nécessaire à l'aide de la fonction 'split.screen'. Cette fonction a pour argument un vecteur avec deux composantes, respectivement le nombre de lignes n et de colonnes m, et a pour effet de diviser la fenêtre en n*m sous-fenêtres, réparties sur n lignes et m colonnes. Chaque sous-fenêtre est alors accessible via un appel à la fonction 'screen', qui prend un argument correspondant au numéro de la fenêtre (les numéros sont attribués de manière croissante de gauche à droite, puis de haut en bas). Le code qui suit va illustrer l'utilisation de ces fonctionnalités:
olpar<-par() #sauvetage des paramètres graphiques
par(bg="white") # par défaut, la couleur de fond est "transparent"
x<-rnorm(50)
y<-rnorm(50) # création de deux vecteur aléatoires et indépendants
rho<-0.8 # coefficient de corrélation dans la population
u<-(1+rho)/2*x+(1-rho)/2*y
v<-(1+rho)/2*x-(1-rho)/2*y # création de deux vecteurs corrélés
w<-rnorm(50) # création d'un vecteur aléatoire indépendant de u et v
split.screen(c(2,2)) # découpage de la fenêtre graphique en 2 lignes et 2 colonnes
screen(1) # on travaille dans la fenêtre supérieure gauche
plot(u,v) # graphique des deux séries corrélées (u et v)
screen(2) # on travaille dans la fenêtre supérieure droite
plot(u,w) # graphique des deux séries non corrélées (u et w)
screen(3) # on travaille dans la fenêtre inférieure gauche
plot(v,v) # graphique des deux séries identiques (v et v)
screen(4) # on travaille dans la fenêtre inférieure droite
plot(v,w) # graphique des deux séries non corrélées (v et w)
erase.screen(3) # ce graphique n'apporte rien, on l'efface
par(olpar) # restauration des paramètres graphiques
A noter que la fonction 'erase.screen' remplit la fenêtre correspondante avec la couleur de fond, ce qui justifie la ligne 'par(bg="white")'. Cette séquence d'instructions conduit au graphique suivant:
Lorsqu'on souhaite récupérer la fenêtre graphique dans un fichier graphique, on procède de la manière suivante:
olpar<-par() #sauvetage des paramètres graphiques
par(bg="white") # par défaut, la couleur de fond est "transparent"
x<-rnorm(50)
y<-rnorm(50) # création de deux vecteur aléatoires et indépendants
rho<-0.8 # coefficient de corrélation dans la population
u<-(1+rho)/2*x+(1-rho)/2*y
v<-(1+rho)/2*x-(1-rho)/2*y # création de deux vecteurs corrélés
w<-rnorm(50) # création d'un vecteur aléatoire indépendant de u et v
jpeg(file="graphiques.jpg")
split.screen(c(2,2)) # découpage de la fenêtre graphique en 2 lignes et 2 colonnes
screen(1) # on travaille dans la fenêtre supérieure gauche
plot(u,v) # graphique des deux séries corrélées (u et v)
screen(2) # on travaille dans la fenêtre supérieure droite
plot(u,w) # graphique des deux séries non corrélées (u et w)
screen(3) # on travaille dans la fenêtre inférieure gauche
plot(v,v) # graphique des deux séries identiques (v et v)
screen(4) # on travaille dans la fenêtre inférieure droite
plot(v,w) # graphique des deux séries non corrélées (v et w)
erase.screen(3) # ce graphique n'apporte rien, on l'efface
dev.off()
par(olpar) # restauration des paramètres graphiques
Signalons encore qu'il est possible d'ouvrir simultanément plusieurs dispositifs graphiques (typiquement, plusieurs fichiers graphiques), dont la fenêtre graphique habituelle, et d'y écrire en sélectionnant le dispositif avec la commande 'dev.set(numero)', où 'numero' est le numéro du dispositif, fourni par la commande 'dev.list()'. Voici, par exemple, comment écrire sur la fenêtre graphique et dans un fichier jpeg simultanément:
X<-rnorm(50) # Création d'un vecteur aléatoire normal de moyenne 0
plot(X) # Plot de X sur la fenêtre graphique
Y<-rnorm(50,mean=10) # Création d'un vecteur aléatoire normal de moyenne 10
jpeg(file="grapheY.jpg")
dev.list()
## windows jpeg:75:grapheY.jpg
## 2 3
dev.cur() # Quel est le dispositif courant?
## jpeg:75:grapheY.jpg
## 3
plot(Y) # Plot de Y dans le fichier jpeg
dev.set(2) # Le dispositif d'écriture est maintenant dans la fenêtre
plot(Y) # Plot de Y dans la fenêtre graphique
dev.off() # Fermeture de la fenêtre. Le fichier jpeg redevient le dispositif d'écriture
dev.off() # Fermeture du fichier. Il devient disponible pour être affiché.
dev.list() # La liste des dispositifs est maintenant vide.
## NULL