Les graphiques avec R

Aperçu du package graphics

La version R de base permet de réaliser des graphiques. Ou plutôt c’est le package graphics, importé avec R-base et chargé par défaut à l’ouverture d’une session, qui les construit. Pas avec autant de brio de ggplot mais c'est tout de même correct.

Nous étudierons ici quelques fonctionnalités de graphics. La liste complète figure en page de packages.

 

Exemple

Explorons à partir d’un exemple. Soit une petite table d’une feuille Excel sur laquelle se trouvent les productions d’huile d’olive dans le monde en 2013 (en tonnes).

production d'huile

Nous souhaitons réaliser un diagramme de répartition. Comme c’est une répartition par pays (critère qualitatif), notre graphique sera un diagramme circulaire (camembert).

D’abord, nous importons les données. En l’occurrence, nous avons utilisé R-Studio en ligne, le fichier Excel se trouvant sur disque dur, en local. Donc, Files puis Upload pour charger le jeu de données. Rappelons qu’un package spécial doit être chargé pour importer des données depuis Excel :

library(readxl)

L’importation :

data <- read_excel("olives.xlsx", sheet = "Feuil1")

Notre data frame se nomme donc data.

categories <- data$Pays
valeurs <- data$Production
names(valeurs) <- categories

pie(valeurs, main = "Répartition de la production d’huile par pays", col = rainbow(length(valeurs)))

La fonction pie() est celle qui permet de dessiner un diagramme circulaire, main est le titre, rainbow utilise les couleurs de l’arc-en-ciel.

Avec R-Studio, le résultat apparaît dans la fenêtre en bas à droite, onglet Plots. Éventuellement, on peut l’exporter (plusieurs formats d’images sont disponibles) ou le copier via le presse-papiers (clipboard).

Sans R-Studio, les graphiques s’affichent dans une fenêtre externe.

Sauvegarde en fonction du format désiré : pdf(), png(), ou jpeg().

 

Autres types de graphiques

 

Titre et texte libre

La fonction title() a pour arguments main = (titre, utilisez \n pour aller à la ligne), sub =(texte sous le graphe), xlab = (titre axe x) et ylab (axes évidemment sans objet pour un camembert). Attention à l’ordre des instructions (si celle du titre est placée avant celle du graphe, le titre n’apparaît pas).

pie(valeurs, col = rainbow(length(valeurs)))
title(main = "Répartition de la production d'huile d'olive par pays", sub = "en tonnes")

Plus loin, nous illustrerons deux possibilités de graphics, dans un but didactique mais certainement pas esthétique !

Ajout du texte à un endroit précis : text(x, y, labels, options...). En marge du graphique : mtext(text, side, line, options...).

Les options pour le texte sont col (couleur), cex (taille, 1 par défaut), font (1 pour normal, 2 pour gras, 3 pour italique, 4 pour gras et italique), adj (0 pour alignement à gauche, 0.5 pour centré et 1 pour alignement à droite).

 

Couleurs (et comparaison avec CSS)

Les codes couleurs utilisés en R ne sont pas exactement les mêmes que ceux du CSS, bien qu'il y ait des similitudes. Voici les principales différences :

Noms de couleurs : il existe une large gamme de noms de couleurs prédéfinis, mais la liste est différente de celle disponible en CSS. Par exemple, les couleurs comme red, blue, green, yellow, etc., existent en R et en CSS, mais R ne supporte pas certaines teintes comme indianred ou mediumseagreen.

Codes hexadécimaux : on peut aussi employer des codes hexadécimaux pour spécifier les couleurs. Notez qu'elles apparaissent graphiquement dans le sens trigonomérique. Exemple :

répartition

Modèle RVB : utilisez la fonction rgb() pour spécifier des couleurs en fonction de leurs valeurs rouges, vertes et bleues (R, G, B), avec des valeurs comprises entre 0 et 1. En CSS, la notation RVB est similaire, mais les valeurs vont de 0 à 255. Exemple :

colors <- c(rgb(0.9,0.9,0), rgb(0,0.5,0.5), rgb(0.9,0.2,0.4), rgb(0,0.6,0.2), rgb(0.9,0.6,0.6), rgb(0.2,0.2,0.2))
pie(valeurs, col = colors)
title(main = "Répartition de la production d'huile d'olive", font.main=3 , cex.main=1.5)

répartition

 

diagramme circulaire