Étendre ggplot2
De nombreuses extensions permettent d’étendre les possibilités graphiques de ggplot2
. Certaines ont déjà été abordées dans les différents chapitres d’analyse-R. Le présent chapitre ne se veut pas exhaustif et ne présente qu’une sélection choisie d’extensions.
Le site ggplot2 extensions (http://www.ggplot2-exts.org/) recense diverses extensions pour ggplot2
.
Pour une présentation des fonctions des base et des concepts de ggplot2
, on pourra se référer au chapitre dédié ainsi qu’au deux chapitres introductifs : introduction à ggplot2 et graphiques bivariés avec ggplot2.
Nouvelles géométries
pirate : alternative aux boîtes à moustache
Cette représentation alternative aux boîtes à moustache s’obtient avec la géométrie geom_pirate
de l’extension ggpirate
1.
Étiquettes non superposées
Lorsque l’on affiche des étiquettes de texte, ces dernières peuvent se supperposer lorsqu’elles sont proches. Les géométries geom_text_repel
et geom_label_repel
de l’extension ggrepel
prennent en compte la position des différentes étiquettes pour éviter qu’elles ne se chevauchent.
library(ggplot2)
library(ggrepel)
library(ggrepel)
dat <- subset(mtcars, wt > 2.75 & wt < 3.45)
dat$car <- rownames(dat)
p <- ggplot(dat) + aes(wt, mpg, label = car) + geom_point(color = "red")
p1 <- p + geom_text() + labs(title = "geom_text()")
p2 <- p + geom_text_repel() + labs(title = "geom_text_repel()")
cowplot::plot_grid(p1, p2, nrow = 1)
Axes, légende et facettes
Axes limités
coord_capped_cart
et coord_capped_flip
de l’extension lemon
permet de limiter le dessin des axes au minimum et au maximum. Voir l’exemple ci-dessous.
Répéter les étiquettes des axes sur des facettes
Lorsque l’on réalise des facettes, les étiquettes des axes ne sont pas répétées.
L’extension lemon
propose facet_rep_grid
et facet_rep_wrap
qui répètent les axes sur chaque facette.
Cartes
Voir le chapitre dédié.
Graphiques complexes
Graphiques animés
L’extension gganimate
permets de réaliser des graphiques animés.
Voici un exemple :
library(ggplot2)
library(gganimate)
library(gapminder)
ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop, colour = country)) +
geom_point(alpha = 0.7, show.legend = FALSE) + scale_colour_manual(values = country_colors) +
scale_size(range = c(2, 12)) + scale_x_log10() + facet_wrap(~continent) +
# Here comes the gganimate specific bits
labs(title = "Year: {frame_time}", x = "GDP per capita", y = "life expectancy") +
transition_time(year) + ease_aes("linear")
Rendering [------------------------] at 1.1 fps ~ eta: 1m
Rendering [------------------------] at 1.2 fps ~ eta: 1m
Rendering [>-----------------------] at 1.2 fps ~ eta: 1m
Rendering [>-----------------------] at 1.3 fps ~ eta: 1m
Rendering [=>----------------------] at 1.3 fps ~ eta: 1m
Rendering [==>---------------------] at 1.3 fps ~ eta: 1m
Rendering [==>---------------------] at 1.2 fps ~ eta: 1m
Rendering [===>--------------------] at 1.2 fps ~ eta: 1m
Rendering [====>-------------------] at 1.2 fps ~ eta: 1m
Rendering [=====>------------------] at 1.2 fps ~ eta: 1m
Rendering [======>-----------------] at 1.2 fps ~ eta: 1m
Rendering [=======>----------------] at 1.2 fps ~ eta: 1m
Rendering [========>---------------] at 1.2 fps ~ eta: 1m
Rendering [========>---------------] at 1.3 fps ~ eta: 1m
Rendering [========>---------------] at 1.3 fps ~ eta: 49s
Rendering [========>---------------] at 1.3 fps ~ eta: 48s
Rendering [=========>--------------] at 1.3 fps ~ eta: 47s
Rendering [=========>--------------] at 1.3 fps ~ eta: 46s
Rendering [=========>--------------] at 1.3 fps ~ eta: 45s
Rendering [==========>-------------] at 1.3 fps ~ eta: 44s
Rendering [==========>-------------] at 1.3 fps ~ eta: 43s
Rendering [==========>-------------] at 1.3 fps ~ eta: 42s
Rendering [==========>-------------] at 1.3 fps ~ eta: 41s
Rendering [===========>------------] at 1.3 fps ~ eta: 41s
Rendering [===========>------------] at 1.3 fps ~ eta: 40s
Rendering [===========>------------] at 1.3 fps ~ eta: 39s
Rendering [===========>------------] at 1.3 fps ~ eta: 38s
Rendering [============>-----------] at 1.2 fps ~ eta: 38s
Rendering [============>-----------] at 1.2 fps ~ eta: 37s
Rendering [============>-----------] at 1.2 fps ~ eta: 36s
Rendering [=============>----------] at 1.2 fps ~ eta: 35s
Rendering [=============>----------] at 1.2 fps ~ eta: 34s
Rendering [=============>----------] at 1.2 fps ~ eta: 33s
Rendering [==============>---------] at 1.2 fps ~ eta: 32s
Rendering [==============>---------] at 1.2 fps ~ eta: 31s
Rendering [==============>---------] at 1.2 fps ~ eta: 30s
Rendering [==============>---------] at 1.2 fps ~ eta: 29s
Rendering [===============>--------] at 1.2 fps ~ eta: 29s
Rendering [===============>--------] at 1.2 fps ~ eta: 28s
Rendering [===============>--------] at 1.2 fps ~ eta: 27s
Rendering [===============>--------] at 1.2 fps ~ eta: 26s
Rendering [================>-------] at 1.2 fps ~ eta: 25s
Rendering [================>-------] at 1.2 fps ~ eta: 24s
Rendering [================>-------] at 1.2 fps ~ eta: 23s
Rendering [=================>------] at 1.2 fps ~ eta: 22s
Rendering [=================>------] at 1.2 fps ~ eta: 21s
Rendering [=================>------] at 1.3 fps ~ eta: 20s
Rendering [=================>------] at 1.3 fps ~ eta: 19s
Rendering [=================>------] at 1.3 fps ~ eta: 18s
Rendering [==================>-----] at 1.3 fps ~ eta: 17s
Rendering [==================>-----] at 1.3 fps ~ eta: 16s
Rendering [==================>-----] at 1.3 fps ~ eta: 15s
Rendering [===================>----] at 1.3 fps ~ eta: 14s
Rendering [===================>----] at 1.3 fps ~ eta: 13s
Rendering [===================>----] at 1.3 fps ~ eta: 12s
Rendering [====================>---] at 1.3 fps ~ eta: 11s
Rendering [====================>---] at 1.3 fps ~ eta: 10s
Rendering [====================>---] at 1.3 fps ~ eta: 9s
Rendering [====================>---] at 1.3 fps ~ eta: 8s
Rendering [=====================>--] at 1.3 fps ~ eta: 8s
Rendering [=====================>--] at 1.3 fps ~ eta: 7s
Rendering [=====================>--] at 1.3 fps ~ eta: 6s
Rendering [=====================>--] at 1.3 fps ~ eta: 5s
Rendering [======================>-] at 1.3 fps ~ eta: 5s
Rendering [======================>-] at 1.3 fps ~ eta: 4s
Rendering [======================>-] at 1.3 fps ~ eta: 3s
Rendering [======================>-] at 1.3 fps ~ eta: 2s
Rendering [=======================>] at 1.3 fps ~ eta: 2s
Rendering [=======================>] at 1.3 fps ~ eta: 1s
Rendering [========================] at 1.3 fps ~ eta: 0s
Frame 1 (1%)
Frame 2 (2%)
Frame 3 (3%)
Frame 4 (4%)
Frame 5 (5%)
Frame 6 (6%)
Frame 7 (7%)
Frame 8 (8%)
Frame 9 (9%)
Frame 10 (10%)
Frame 11 (11%)
Frame 12 (12%)
Frame 13 (13%)
Frame 14 (14%)
Frame 15 (15%)
Frame 16 (16%)
Frame 17 (17%)
Frame 18 (18%)
Frame 19 (19%)
Frame 20 (20%)
Frame 21 (21%)
Frame 22 (22%)
Frame 23 (23%)
Frame 24 (24%)
Frame 25 (25%)
Frame 26 (26%)
Frame 27 (27%)
Frame 28 (28%)
Frame 29 (29%)
Frame 30 (30%)
Frame 31 (31%)
Frame 32 (32%)
Frame 33 (33%)
Frame 34 (34%)
Frame 35 (35%)
Frame 36 (36%)
Frame 37 (37%)
Frame 38 (38%)
Frame 39 (39%)
Frame 40 (40%)
Frame 41 (41%)
Frame 42 (42%)
Frame 43 (43%)
Frame 44 (44%)
Frame 45 (45%)
Frame 46 (46%)
Frame 47 (47%)
Frame 48 (48%)
Frame 49 (49%)
Frame 50 (50%)
Frame 51 (51%)
Frame 52 (52%)
Frame 53 (53%)
Frame 54 (54%)
Frame 55 (55%)
Frame 56 (56%)
Frame 57 (57%)
Frame 58 (58%)
Frame 59 (59%)
Frame 60 (60%)
Frame 61 (61%)
Frame 62 (62%)
Frame 63 (63%)
Frame 64 (64%)
Frame 65 (65%)
Frame 66 (66%)
Frame 67 (67%)
Frame 68 (68%)
Frame 69 (69%)
Frame 70 (70%)
Frame 71 (71%)
Frame 72 (72%)
Frame 73 (73%)
Frame 74 (74%)
Frame 75 (75%)
Frame 76 (76%)
Frame 77 (77%)
Frame 78 (78%)
Frame 79 (79%)
Frame 80 (80%)
Frame 81 (81%)
Frame 82 (82%)
Frame 83 (83%)
Frame 84 (84%)
Frame 85 (85%)
Frame 86 (86%)
Frame 87 (87%)
Frame 88 (88%)
Frame 89 (89%)
Frame 90 (90%)
Frame 91 (91%)
Frame 92 (92%)
Frame 93 (93%)
Frame 94 (94%)
Frame 95 (95%)
Frame 96 (96%)
Frame 97 (97%)
Frame 98 (98%)
Frame 99 (99%)
Frame 100 (100%)
Finalizing encoding... done!
Voir le site de l’extension (https://gganimate.com/) pour la documentation et des tutoriels. Il est conseillé d’installer également l’extension gifski
avec gganimate
.
Thèmes et couleurs
Voir le chapitre Couleurs et palettes pour une sélection d’extensions proposant des palettes de couleurs additionnelles.
hrbrthemes
L’extension hrbrthemes
fournit plusieurs thèmes graphiques pour ggplot2
. Un exemple ci-dessous. Pour plus d’informations, voir https://github.com/hrbrmstr/hrbrthemes.
ggthemes
ggthemes
propose une vingtaine de thèmes différentes présentés sur le site de l’extension : https://jrnold.github.io/ggthemes/.
Voir ci-dessous un exemple du thème theme_tufte
inspiré d’Edward Tufte.
Attaching package: 'ggthemes'
The following object is masked from 'package:cowplot':
theme_map
Combiner plusieurs graphiques
Voir le chapitre dédié.
Cette extension n’étant pas sur CRAN, on l’installera avec la commande
devtools::install_github("mikabr/ggpirate")
.↩