Interlude de programmation: enregistrer une figure

Hier, c’est encore arrivé. J’ai vu passer, sur un média social, un des conseils que je déteste le plus. Comme je ne peux pas vous surveiller en tout temps, j’ai décidé de clarifier cette situation via mon blogue :

N’utilisez pas la fonction d’exportation intégrée à Rstudio!

Premièrement, je ne suis pas une intégriste de ce qu’on doit et ne doit pas faire. Vous pouvez ignorer mon conseil et être un excellent étudiant/codeur/scientifique. Par contre, je vous donne ce conseil basé sur mon expérience et sur des raisons claires :

  • Utiliser la fonction intégrée de Rstudio ne rend pas reproductible l’exportation de votre figure. Oui, il y a un moyen d’extraire ce code. Mais ne vous mentez pas, vous ne le ferez pas.
  • La fonction intégrée permet de choisir la taille et la résolution, mais si vous avez à faire un changement rapide à la figure, il se peut que vous ne vous rappeliez pas les options choisies. Oui, vous pouvez aller les retrouver dans le précédent export de la figure, mais c’est plus lent. Et si quelqu’un d’autre doit le faire, c’est plus compliqué.

« Mais Emilie, que dois-je faire? »

Coder l’export de votre figure, comme toutes les autres actions que vous faites dans R ou Rstudio. Oui, c’est plus long la première fois. Oui, ça nécessitera du taponnage. Mais vous y gagnez pour le futur. Surtout si vous êtes rendu à soumettre le manuscrit qui contient cette figure à un troisième magazine qui demande un format différent!

Pour ce faire, je vous propose la série de fonctions suivantes : pdf(), tiff(), jpeg()… il y en a pour tout les goûts. Votre code final ressemblera à ceci :

>jpeg(file="D:/Documents/Figure1.jpeg", res = 300, width = 1000, height= 1000)
>#La fonction d’écriture de figure
>
>#Suit le code pour le graphique
>Ctot <- c(3.04, 3.20, 3.38, 3.56, 3.74, 3.92, 4.10, 4.28, 4.46, 4.64, 4.82, 5.00, 5.11)
>Ltot <- c(2.54, 2.76, 2.99, 3.19, 3.36, 3.50, 3.62, 3.72, 3.81, 3.89, 3.97, 4.05, 4.10)
>Utot <- c(3.54, 3.64, 3.77, 3.93, 4.12, 4.34, 4.59, 4.85, 5.12, 5.39, 5.67, 5.96, 6.12)
>densit <- c(-1.45, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.29)
>plot(Ctot~densit, ylab = "% shoots browsed on all species", xlab = "Number of stems", type = "n", ylim = c(0,10))
>lines(densit, Ctot)
>lines(densit, Utot, lty = 2)
>lines(densit, Ltot, lty = 2)
>
>dev.off()
>#Pour indiquer qu’on a terminé la figure!

Pour conclure, certaines personnes utilisent des logiciels d’édition graphique pour manipuler leurs figures après les avoir faits dans R (ajouter du texte dessus, mettre plusieurs figures ensemble). Personnellement, je ne le fais plus, pour les mêmes raisons de reproductibilité et de facilité à changer format, taille, résolution. Oui, c’est parfois long réussir à faire ce que vous voulez dans R. Mais c’est plus payant à long terme.

Avez-vous d’autres astuces? Partagez-les en commentaires ci-dessous! Vous pouvez également exprimer votre désaccord.