Introduction

A l'exception de quelques fonctions simples, R n'offre - pour l'instant - pas de graphiques interactifs (dynamiques). (Voir ce document pour quelques extensions/bibliothèques R).

Fonctions R

Le langage R possède quelques fonctions permettant d'effectuer quelques tâches interactives et la création d'outils interactifs simples, en particulier les fonctions identify() (et locator() (retourne les coordonnées d'un click) utile dans la programmation). Le but de ce document n'est pas de discuter tous les détails, mais de montrer quelques exemples simples à partir de la fonction identify().. Notes que ces fonctions ont été développées pour interagir avec des nuages de points.

Si nous exécutons la séquence:

 plot(urb,mortinf)
 identify(urb,mortinf,labels=rownames(pays))

nous obtenons un nuage de points qui nous permet d'identifier les observations on cliquant (notez le curseur en forme ce croix qui vous permet de le faire: placez-le sur un point et cliquez!)

Pour arrêter ce processus vous utiliserez le bouton de droite de votre souris, ce qui affichera. Choisir vous fera sortir de ce mode; R afficher alors

[1]   1   7  46  65  67 143 148

à savoir les indices des observations choisies.

Ceci nous permet donc de spécifier un mécanisme de sélection qui sera utilisable par d'autres fonctions. On pourra par exemple produire un histogramme d'une variable pour les observations que l'on aura sélectionné interactivement:

 plot(urb,mortinf)
 hist(tert[identify(urb,mortinf,labels=rownames(pays))])
Identifier des observations sur un boxplot.

Comme la fonction identify à besoin de coordonnées en X et en Y, il faut les indiquer; dans l'exemple ci-dessous rep(1,length(super)) crée simplement une variable index de 1 au nombre d'observations de la variable qui nous intéresse.

boxplot(super, ylab="Superficie")
identify(rep(1, length(super)), super, rownames(paysl))
Bibliothèque lattice

La bibliothèque lattice offre une fonction analogue: panel.identify.

Voici deux exemples: contrairement à identify, dans lattice on n'a pas besoin d'indiquer les coordonnées X,Y, par contre il faut indiquer le "panel" sur lequel on désire travailler, dans l'exemple ci-dessous le premier de la 2e ligne.

xyplot(urb ~ mortinf | continents)
trellis.focus("panel",1,2)
panel.identify(labels=rownames(pays))

Dans l'exemple ci-dessous, il n'y a qu'un seul panel, mais il faut l'indiquer.

bwplot(super)
trellis.focus("panel", 1, 1)
panel.identify(labels=rownames(pays))

Documentation très incomplète: Consultez la documentation R pour plus de détails.