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 tout de même…
Ce sont quelques fonctionnalités de graphics que nous étudierons ici. La liste complète figure en page package.
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).
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 les 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.
# Transformer en table de fréquences
categories <- data$Pays
valeurs <- data$Production
names(valeurs) <- categories
# Créer le diagramme circulaire
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. Pour sauvegarder, utilisez des fonctions comme pdf(), png(), ou jpeg().
Autres types de graphiques
- plot (nuages de points et graphiques en lignes) : voir les pages consacrées à plot et aux nuages de points.
- hist (histogrammes) : voir les histogrammes avec R.
- boxplot (boîtes à moustaches)
- curve (courbes représentatives de fonctions numériques)
- barplot (barres empilées ou regroupées)…
Titre et texte libre
On peut aussi utiliser la fonction title() et l’améliorer avec 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). Dans le script ci-dessous, 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 verrons dans deux exemples quelques essais d’arguments pour mieux illustrer les possibilités du package graphics, dans un but didactique mais certainement pas esthétique !
Pour ajouter du texte à un endroit précis : text(x, y, labels, options...) et 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 en CSS, bien qu'il y ait des similitudes. Voici les principales différences :
Noms de couleurs : en R, on peut utiliser 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 couleurs comme indianred ou mediumseagreen.
Codes hexadécimaux : en R, on peut aussi employer des codes hexadécimaux pour spécifier les couleurs. Notez qu'elles apparaissent dans le sens trigonomérique. Exemple :
Modèle RVB : R permet d'utiliser 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)