Graphique avec flèche extérieure à la zone graphique (avec le logiciel R)

Il est possible avec le logiciel R de tracer un graphique dont les axes ne sont pas sur les bords (bord inférieur pour les abscisses, bord de gauche pour les ordonnées).

Cela permet d'ajouter des annotations hors du graphique. On peut ainsi avec le logiciel R (R CRAN, R project) ajouter des flèches hors du graphique.

Etude de données permettant de comparer différentes exploitations agricoles (exemple)

Graphique du logiciel R avec flèche dépassant de la fenêtre

Voici un graphique donc l'axe est positionné manuellement : on peut ainsi ajouter des flèches dépassant du graphique pour annoter celui-ci.

Télécharger le script complet ici.

  1. Tracer un graphique en masquant volontairement les axes (positionnés automatique à gauche et en base) - définir des limitations de ces axes dépassant l'étendue des données à afficher pour avoir une zone graphique supérieur à la zone occupée par les données
plot(c(1999,2002,2015), c(100,110,125),axes = FALSE,xlim=c(1992,2015),ylim=c(90,130),type="l",col="red",xlab="",ylab="") 
# les données en x vont de 1999 à 2015 mais la zone graphique (xlim) va de 1992 à 2015
# les données en y vont de 100 à 125 mais la zone graphique (ylim) va de 90 à 130
# xlab et ylab sont égaux à "" afin de ne pas afficher les titres des axes à la position par défaut
# axes = FALSE masque les axes
# col et type permet d'avoir une ligne rouge
  1. Ajouter les axes manuellement
axis(1, pos = 100, cex.axis = 0.8,xaxp=c(1999,2015,16)) # Ajout de l'axe des abscisses à la position y = 100 
# xaxp force à avoir une valeur par année soit 16 valeurs de 1999 à 2015
axis(2, pos = 1999, cex.axis = 0.8, las = 2,yaxp=c(100,125,5)) #  Ajout de l'axe des ordonnées de 100  à125
text(1999,128,"Axe des y (unités)") # on ajoute manuellement le titre des l'axe des y en position x = 1999 et y = 128
text(2006,92,"Axe des x (unités)") # on fait de même pour l'axe des x, en position x = 2006 et y = 92
  1. Ajouter la flèche qui dépasse du graphique
arrows(1995,123,2002,110.5,lwd=2,col="blue", length = 0.1,angle=20)
# on trace une flèche bleue qui va du point  (x=1995,y=123) vers le point (x=2002, y=110.5).
# length et angle permettent d'avoir une petite tête de flèche d'angle resserré.
text(1995,124,"ici",adj=c(0.5,0)) # On ajoute la légende de la flèche
#adj permet de centrer verticalement et horizontalement le text - 0.5 centrage horizontal et 0 verticalement en haut


Mise à jour de la page mars 2016