23 février 2024
Package destiné à la création de graphiques.
Respecte la grammaire graphique par couches :
ggplot(data = <DATA>) + <GEOM_FUNCTION>( mapping = aes(<MAPPINGS>), stat = <STAT>, position = <POSITION> ) + <COORDINATE_FUNCTION> + <FACET_FUNCTION>
Les données sont obligatoirement un dataframe (un tibble est un dataframe).
L’esthétique désigne ce qui est représenté :
x
et y
(ou fill
pour un histogramme…) ;geom_
.Fonction aes()
Ă plusieurs niveaux :
mapping
de ggplot()
, hérité par les couches (geom_
) ;mapping
de chaque couche.La géométrie est définie par une fonction geom_xxx
et une esthétique (ce qui est représenté).
ggplot(data = diamonds) + geom_point(mapping = aes(x = carat, y = price, color = cut)) + scale_colour_brewer(palette = "Set1")
Chaque geom_
va de pair avec une statistique de transformation des données :
“identity” pour geom_point
;
“boxplot” pour geom_boxplot
;
20 statistiques disponibles…
ggplot(data=diamonds) + geom_boxplot(mapping = aes(x = cut, y = price))
Différent de la transformation de variables (cf. scale) : le graphique utilise des données dérivées des données originales.
Chaque statistique a un geom_
par défaut :
stat_summary
est interchangeable avec geom_pointrange
.
ggplot(data = diamonds) + stat_summary( mapping = aes(x = cut, y = depth), fun = median, fun.min = min, fun.max = max )
Transformation de variable.
diamonds |> filter(carat>.5) |> ggplot(aes(x = carat, y=price)) + geom_point() + scale_x_log10() + scale_y_log10() + geom_smooth(method="lm")
La position définit l’emplacement des objets sur le graphique.
“identity” en gĂ©nĂ©ral ;
“stack” empile les catĂ©gories dans un histogramme ;
“jitter” dĂ©place alĂ©atoirement les points dans un geom_point
pour Ă©viter les superpositions.
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, fill = color), position = "stack") + scale_fill_brewer(palette = "Set1")
Système de coordonnées :
coord_flip()
intervertit x
et y
;
coord_polar()
: coordonnées polaires ;
coord_trans()
transforme l’affichage des coordonnées (mais pas les données comme scale_
) ;
etc.
Exemple : tracer la carte des wapas de la parcelle 6 de Paracou.
read_csv2("data/Paracou6.csv") |> filter(Genus == "Eperua") |> ggplot() + geom_point( aes( x = Xfield, y = Yfield, size = CircCorr, color = Species ) ) + coord_fixed() + labs(x = NULL, y = NULL, size = "Circumference") -> paracou6_wapas_map
paracou6_wapas_map
PrĂ©sente plusieurs aspects du mĂªme graphique.
paracou6_wapas_map + facet_wrap(~ Species)
Remarquer : la possibilité d’affiner un graphique.
Les thèmes définissent l’aspect des graphiques (hors traitement des données).
Dans ce document : pas de fond grisé dans les graphiques (theme_bw
), police 12, modifié pour que le fond soit transparent.
theme_set(theme_bw(base_size=12)) theme_update( panel.background = element_rect(fill = "transparent", colour = NA), plot.background = element_rect(fill = "transparent", colour = NA) )
Ce sont des options globales, valides pour la session R en cours.
Possibilité d’enregistrer des paramètres de forme au-delà du thème dans une liste.
Préparation d’un style pour l’impression en noir et blanc, sans cartouches de légende.
style_nb <- list(scale_colour_grey(), theme(legend.position = "none")) paracou6_wapas_map + style_nb
Les couleurs par défaut sont assez laides.
Utiliser scale_color_xxx
et scale_fill_xxx
Le suffixe _brewer
est pour utiliser des palettes de ColorBrewer
Le suffixe _gradient
permet de produire un gradient de couleurs pour les valeurs continues.
Voir les autres fonctions dans l’aide du package.
qplot()
mime la syntaxe de plot()
avec ggplot2. Utiliser plutĂ´t la syntaxe native.
autoplot()
est un générique à étendre par des méthodes S3 pour faire des graphiques ggplot. Exemple:
library("entropart") rCommunity(1, size = 5000) |> autoplot(Distribution = "lnorm") + style_nb
De nombreux packages Ă©tendent ggplot2 avec de nouveaux geom_
. Exemple de ggraph :