Graphiques avec ggplot2
Le paquetage ggplot2</a >, créé par Hadley Wickham, offre un langage graphique puissant pour créer des graphiques élégants et complexes. Sa popularité dans la communauté R a explosé ces dernières années. Basé à l'origine sur l'ouvrage de Leland Wilkinson The Grammar of Graphics</a >, ggplot2 vous permet de créer des graphiques représentant des données numériques et catégorielles univariées et multivariées d'une manière simple. Le regroupement peut être représenté par une couleur, un symbole, une taille et une transparence. La création de parcelles en treillis (c'est-à-dire le conditionnement) est relativement simple.
Maîtriser le langage ggplot2 peut s'avérer difficile (voir la section Aller plus loin ci-dessous pour des ressources utiles). Il existe une fonction d'aide appelée qplot() (pour quick plot) qui peut masquer une grande partie de cette complexité lors de la création de graphiques standard.
qplot()
La fonction qplot() permet de créer les types de graphiques les plus courants. Bien qu'il n'expose pas toute la puissance de ggplot, il permet de créer une très large gamme de graphiques utiles. Le format est le suivant :
qplot(x, y, data=, color=, shape=, size=, alpha=, geom=, method=,
formula=, facets=, xlim=, ylim= xlab=, ylab=, main=, sub=)
où se trouvent les options :
option | description |
alpha | Transparence alpha pour les éléments qui se chevauchent, exprimée sous la forme d'une fraction comprise entre 0 (transparence totale) et 1 (opacité totale). |
couleur, forme, taille, remplissage | Associe les niveaux de variables à la couleur, à la forme ou à la taille du symbole. Pour les tracés linéaires, la couleur associe les niveaux d'une variable à la couleur du tracé. Pour les diagrammes de densité et les diagrammes en boîte, le remplissage associe les couleurs de remplissage à une variable. Les légendes sont dessinées automatiquement. |
data | Spécifie un cadre de données |
facettes | Crée un graphe de treillis en spécifiant des variables de conditionnement. Sa valeur est exprimée sous la forme rowvar ~ colvar. Pour créer des graphiques en treillis basés sur une seule variable de conditionnement, utilisez rowvar</em |
geom | Spécifie les objets géométriques qui définissent le type de graphique. L'option geom est exprimée sous la forme d'un vecteur de caractères avec une ou plusieurs entrées. Les valeurs geom comprennent "point", "smooth", "boxplot", "line", "histogram", "density", "bar" et "jitter". |
principal, secondaire | Vecteurs de caractères spécifiant le titre et le sous-titre |
méthode, formule | Si geom="smooth", une ligne d'ajustement de loess et des limites de confiance sont ajoutées par défaut. Lorsque le nombre d'observations est supérieur à 1 000, un algorithme de lissage plus efficace est utilisé. Les méthodes comprennent "lm" pour la régression, "gam" pour les modèles additifs généralisés et "rlm" pour la régression robuste. Le paramètre de la formule donne la forme de l'ajustement. Par exemple, pour ajouter des lignes de régression linéaire simple, vous devez spécifier geom="smooth", method="lm", formula=y |
x, y | Spécifie les variables placées sur les axes horizontal et vertical. Pour les graphiques univariés (par exemple, les histogrammes), omettre y |
xlab, ylab | Vecteurs de caractères spécifiant les étiquettes des axes horizontaux et verticaux |
xlim,ylim | Vecteurs numériques à deux éléments indiquant les valeurs minimales et maximales pour les axes horizontal et vertical, respectivement. |
Notes :
- Actuellement, ggplot2 ne peut pas être utilisé pour créer des graphiques en 3D ou des mosaïques.
- Utilisez I(valeur) pour indiquer une valeur spécifique. Par exemple, size=z rend la taille des points ou des lignes tracés proportionnelle aux valeurs d'une variable z. En revanche, size=I(3) donne à chaque point ou ligne une taille trois fois supérieure à la taille par défaut.
Voici quelques exemples utilisant des données automobiles (kilométrage, poids, nombre de vitesses, nombre de cylindres, etc.) contenues dans la base de données mtcars.
# ggplot2 examples
library(ggplot2)
# create factors with value labels
mtcars$gear <- factor(mtcars$gear,levels=c(3,4,5),
labels=c("3gears","4gears","5gears"))
mtcars$am <- factor(mtcars$am,levels=c(0,1),
labels=c("Automatic","Manual"))
mtcars$cyl <- factor(mtcars$cyl,levels=c(4,6,8),
labels=c("4cyl","6cyl","8cyl"))
# Kernel density plots for mpg
# grouped by number of gears (indicated by color)
qplot(mpg, data=mtcars, geom="density", fill=gear, alpha=I(.5),
main="Distribution of Gas Milage", xlab="Miles Per Gallon",
ylab="Density")
# Scatterplot of mpg vs. hp for each combination of gears and cylinders
# in each facet, transmittion type is represented by shape and color
qplot(hp, mpg, data=mtcars, shape=am, color=am,
facets=gear~cyl, size=I(3),
xlab="Horsepower", ylab="Miles per Gallon")
# Separate regressions of mpg on weight for each number of cylinders
qplot(wt, mpg, data=mtcars, geom=c("point", "smooth"),
method="lm", formula=y~x, color=cyl,
main="Regression of MPG on Weight",
xlab="Weight", ylab="Miles per Gallon")
# Boxplots of mpg by number of gears
# observations (points) are overlayed and jittered
qplot(gear, mpg, data=mtcars, geom=c("boxplot", "jitter"),
fill=gear, main="Mileage by Gear Number",
xlab="", ylab="Miles per Gallon")
Personnaliser les graphiques ggplot2
Contrairement aux graphiques de base de R, les graphiques ggplot2 ne sont pas affectés par de nombreuses options définies dans la fonction par( ). Ils peuvent être modifiés à l'aide de la fonction theme() et en ajoutant des paramètres graphiques dans la fonction qplot(). Pour un meilleur contrôle, utilisez ggplot() et les autres fonctions fournies par le paquet. Notez que les fonctions ggplot2 peuvent être enchaînées avec des signes "+" pour générer le tracé final.
library(ggplot2)
p <- qplot(hp, mpg, data=mtcars, shape=am, color=am,
facets=gear~cyl, main="Scatterplots of MPG vs. Horsepower",
xlab="Horsepower", ylab="Miles per Gallon")
# White background and black grid lines
p + theme_bw()
# Large brown bold italics labels
# and legend placed at top of plot
p + theme(axis.title=element_text(face="bold.italic",
size="12", color="brown"), legend.position="top")
Aller plus loin
Nous n'avons fait qu'effleurer le sujet. Pour en savoir plus, consultez cette fiche pratique sur les ggplots</a >, ainsi que l'excellent Cookbook for R de Winston Chang site. Bien que légèrement dépassé, ggplot2 : Elegant Graphics for Data Anaysis</a > reste l'ouvrage de référence en la matière.
Pratiquer
Essayez gratuitement le premier chapitre de ce tutoriel interactif sur ggplot2.</a >