-
Notifications
You must be signed in to change notification settings - Fork 33
Expand file tree
/
Copy pathchapitre_7.qmd
More file actions
executable file
·284 lines (217 loc) · 19.8 KB
/
Copy pathchapitre_7.qmd
File metadata and controls
executable file
·284 lines (217 loc) · 19.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
# Outils de visualisation graphique : de l'exploration à la communication scientifique {#sec-chap7}
\begin{center}
\textit{Alexandre Bouillon (Université Laval), \\
Hubert Cadieux (Université Laval)}
\end{center}
{fig-align="center" width="12%"}
Ce chapitre a pour objectif de souligner l'importance de la visualisation des données tout au long du processus de recherche, depuis l'obtention des données pour l'analyse exploratoire des données jusqu'à la création de graphiques pour la publication. La visualisation permet de valider les données, de déceler des anomalies, de découvrir des motifs et de formuler des hypothèses. En créant des graphiques simples, les chercheurs peuvent rapidement obtenir une compréhension initiale de la structure des données et des relations potentielles entre les variables. Par la suite, il s'agit de trouver la meilleure manière de rendre l'information digeste pour les experts ou pour le grand public.
Ainsi, la visualisation graphique des données est centrale, non seulement pour explorer et comprendre les données tout au long du processus de recherche, mais aussi pour vulgariser les résultats d'une recherche empirique. Il y a plusieurs façons de représenter les mêmes données. Les choix des chercheurs sont donc primordiaux même lorsqu’ils sont équipés des meilleurs outils comme ceux présentés dans ce chapitre. La visualisation graphique constitue un art appliqué dont la maîtrise renforce considérablement la communication scientifique et peut en accroître la portée. Au fil du temps, cet art s’est transformé grâce au développement d’outils toujours plus performants et à l’accès croissant à des données variées et volumineuses.
## Point d'observation : historique de la visualisation graphique
Pour comprendre l'évolution de la visualisation graphique, il est utile de se tourner vers des travaux qui en tracent le développement historique. L’un des projets les plus complets à ce sujet est le *Milestones Project* de Michael Friendly et Daniel J. Denis. Cette initiative vise à compiler de manière exhaustive les jalons significatifs de la visualisation de données, de ses débuts à ses avancées contemporaines, et à rendre cette histoire accessible sous une forme interactive. Accessible en ligne, le *Milestones Project* propose une base de données dynamique qui recense les grands événements, les outils, les auteurs, et les approches ayant façonné le champ de la visualisation graphique [@friendly_etal16].[^chapitre_7-1]
[^chapitre_7-1]: Pour plus d'informations sur le Milestones Project, consultez le site web du projet: <https://www.datavis.ca/milestones/index.php?page=introduction>.
```{r, out.width="80%"}
#| label: fig-milestones_project
#| echo: false
#| fig-cap: "La ligne du temps du Milestones project."
knitr::include_graphics("images/chapitre_7_milestones_projet.png", dpi = 600)
```
L’histoire de la visualisation graphique est marquée par une évolution continue, où chaque époque a apporté de nouvelles façons de représenter et de comprendre les données. Depuis les premières tentatives rudimentaires jusqu'à l’ère numérique actuelle, les avancées reflètent autant le développement des outils que l’évolution des besoins sociaux et scientifiques.
Les origines de la visualisation graphique remontent à des efforts visant à vulgariser des données à l’aide d’images. Dès le 17e siècle, les cartes thématiques apparaissent, représentant visuellement des phénomènes physiques et sociaux. Ces premières tentatives permettent de traduire des concepts abstraits (comme les populations ou les routes commerciales) en formes visuelles. Le 18e siècle voit l’émergence des premiers graphiques statistiques avec l’œuvre de William Playfair, qui introduit des outils tels que les diagrammes en barres et les graphiques en lignes. Ces innovations ouvrent la voie à une approche plus intuitive de la présentation des données, permettant aux lecteurs de mieux comprendre les relations quantitatives [@friendly_wainer21].
Au 19e siècle, la visualisation connaît une véritable accélération, qualifiée de premier âge d’or [@friendly08]. C’est une période caractérisée par une floraison d’innovations en matière de visualisation des données, principalement en réponse à une collecte systématique et extensive de données par les gouvernements et les scientifiques. Charles Joseph Minard se distingue à cette époque par ses cartes de flux, dont la célèbre représentation de la campagne russe de Napoléon en 1812, qui illustre avec clarté les pertes humaines au fil de la progression de l’armée. Cette carte narrative complexe superpose des informations géographiques, temporelles et statistiques, démontrant le potentiel des graphiques pour raconter des histoires puissantes et nuancées. L’essor de la statistique comme discipline académique contribue également à l’épanouissement de nouvelles formes de visualisation. Dans la deuxième moitié du 19e siècle, Francis Galton, avec ses diagrammes de corrélation, amorce l'exploration de la relation entre variables, ouvrant la voie à des outils analytiques tels que le nuage de points. L’introduction de ces représentations graphiques met en évidence le rôle fondamental des visualisations dans la compréhension de phénomènes complexes [@friendly_wainer21].
```{r, out.width="80%"}
#| label: fig-minard_napoleon
#| echo: false
#| fig-cap: "Carte des flux de l'invasion de la Russie par Napoléon de Charles Joseph Minard \\newline \\textit{Source} : Image récupérée sur https://ageofrevolution.org/200-object/flow-map-of-napoleons-invasion-of-russia/."
knitr::include_graphics("images/chapitre_7_minard_napoleon.png", dpi = 600)
```
L’entrée dans le 20e siècle et l’ère informatique ouvre une nouvelle phase pour la visualisation. La capacité des ordinateurs à traiter rapidement de grandes quantités de données transforme en profondeur les pratiques. Dès les années 1960, les premières visualisations générées par ordinateur permettent d’envisager des représentations plus complexes et dynamiques. Dans les décennies suivantes, des logiciels comme *SAS* et *SPSS* ont rendu ces outils accessibles à un public plus large.
Un acteur majeur de cette période est le politologue et statisticien Edward Tufte, dont les ouvrages ont profondément marqué la réflexion sur la visualisation des données [@friendly_wainer21]. Dans des livres devenus des références, tels que *The Visual Display of Quantitative Information* (1983, rééd. 2001), *Envisioning Information* (1990) et *Visual Explanations* (1997), Tufte développe une véritable philosophie de la communication graphique. Il insiste sur la nécessité de maximiser le rapport « data-ink ratio », c’est-à-dire de réduire les éléments décoratifs superflus afin de concentrer l’attention du lecteur sur l’information essentielle.
Aujourd'hui, la visualisation graphique continue d’évoluer à un rythme effréné, s’appuyant sur des technologies toujours plus sophistiquées. Avec l'essor des données massives (*big data*) et de l'intelligence artificielle, les outils de visualisation sont devenus essentiels pour interpréter rapidement des volumes importants d'informations. Les visualisations sont désormais interactives, dynamiques, et conçues pour s’adapter à différents publics, allant des décideurs aux scientifiques.
## Arpentage et choix éditorial : les systèmes graphiques dans $\textsf{R}$
Le langage $\textsf{R}$ s'est imposé comme un outil de référence pour la visualisation de données, particulièrement dans les domaines de la recherche et de l'analyse statistique. Plusieurs facteurs expliquent cette popularité : $\textsf{R}$ est un logiciel libre et gratuit, bénéficiant d'une communauté d'utilisateurs très active qui développe et maintient des milliers de packages spécialisés. Cette nature libre assure une transparence complète du code, facilitant la reproductibilité des analyses, un critère essentiel dans la recherche scientifique.
La flexibilité de $\textsf{R}$ constitue également un atout majeur. Contrairement aux logiciels propriétaires comme *Excel* ou *Tableau*, $\textsf{R}$ permet une personnalisation poussée des visualisations et s'intègre facilement dans des flux de travail automatisés. Cette adaptabilité en fait un choix privilégié pour les analystes qui souhaitent créer des visualisations sur mesure plutôt que de se limiter à des modèles prédéfinis.
Au sein de l'écosystème $\textsf{R}$, plusieurs systèmes graphiques coexistent, chacun avec ses spécificités. Le tableau 7.1 présente une comparaison de ces différentes approches.
Dans $\textsf{R}$ de base (*base R*), les graphiques sont créés de manière procédurale, en construisant les éléments un par un. Le package `lattice` offre une approche plus structurée, particulièrement efficace pour les graphiques conditionnels.
Cependant, c'est `ggplot2` qui révolutionne véritablement la création de graphiques en $\textsf{R}$ en implémentant une grammaire cohérente de la visualisation. Dans ce livre, notre choix éditorial se porte sur `ggplot2`, développé par Hadley Wickham, qui repose sur la « Grammaire des graphiques » (*Grammar of Graphics*) théorisée par Leland Wilkinson [@wilkinson05]. Cette approche conceptualise un graphique comme la combinaison de composants indépendants : les données, les mappings esthétiques (couleur, forme, taille), les objets géométriques (points, lignes, barres), les transformations statistiques, et les systèmes de coordonnées.
Cette grammaire présente plusieurs avantages pédagogiques et pratiques. Elle offre un cadre conceptuel unifié pour comprendre et créer des visualisations, réduisant l'apprentissage par cœur de syntaxes spécifiques. Les graphiques se construisent par couches successives, permettant une approche itérative et modulaire. Cette logique facilite non seulement l'apprentissage pour les novices, mais permet également aux utilisateurs expérimentés de concevoir des visualisations innovantes en combinant les composants de manière créative.
Les sections suivantes de ce chapitre exploreront en détail les principes de `ggplot2` et illustreront comment cette grammaire des graphiques peut transformer l'approche de la visualisation de données.
```{r}
#| tbl-cap: Comparaison des systèmes graphiques dans R
#| echo: false
#| warning: false
#| message: false
library(tidyverse)
library(gt)
tbl_systemes_graphiques_r <- tibble(
Critère = c(
"Accessibilité",
"Existence d'une communauté d'utilisateurs",
"Popularité en sciences sociales",
"Compatibilité avec d'autres outils",
"Transparence et réplicabilité",
"Adaptabilité et flexibilité"
),
`Base R` = c(
"Gratuit",
"Très grande",
"Très populaire",
"Facilement compatible",
"Excellente",
"Flexible"
),
lattice = c(
"Gratuit",
"Grande",
"Populaire",
"Facilement compatible",
"Excellente",
"Plutôt flexible"
),
ggplot2 = c(
"Gratuit",
"Très grande",
"Très populaire",
"Facilement compatible",
"Excellente",
"Très flexible"
)
)
tbl_systemes_graphiques_r |>
gt() |>
cols_label(
Critère = "Critère",
`Base R` = "Base R",
lattice = "lattice",
ggplot2 = "ggplot2"
) |>
cols_align("left", columns = everything()) |>
cols_width(
Critère ~ pct(40),
`Base R` ~ pct(20),
lattice ~ pct(20),
ggplot2 ~ pct(20)
) |>
tab_style(
style = list(cell_text(weight = "bold")),
locations = cells_column_labels(everything())
) |>
opt_table_lines() |>
tab_options(
table.font.size = px(12),
data_row.padding = px(11),
column_labels.background.color = "white",
table.width = pct(95)
)
```
## Manuel d’instruction : la grammaire des graphiques et `ggplot2`
La force de `ggplot2` réside dans sa mise en œuvre de la *Grammar of Graphics*, qui décompose tout graphique en éléments fondamentaux. Hadley Wickham [@wickham10] développe une approche dite *layered grammar of graphics*, où un graphique est construit par superposition de couches (*layers*). Chacune de ces couches combine des données, une transformation statistique éventuelle, un objet géométrique (*geom*), et des mappings esthétiques définis par l’utilisateur. Cette architecture reflète la vision de Wilkinson, Anand et Grossman [@wilkinson_etal05], qui ont cherché à formaliser les principes universels de la visualisation.
Concrètement, `ggplot2` permet de spécifier de manière explicite et déclarative les différents composants d’un graphique. La fonction `aes()` définit les *mappings esthétiques*, c’est-à-dire le lien entre les variables du jeu de données et leurs attributs visuels (position sur les axes, couleur, taille, forme). Les *objets géométriques* (*geoms*) déterminent la nature de la représentation : `geom_point()` trace des points, `geom_line()` des lignes, `geom_bar()` des barres, etc. Chaque *geom* peut être associé à une *transformation statistique* (*stat*), par exemple `stat_smooth()` pour ajouter un lissage ou `stat_bin()` pour construire un histogramme.
À ces éléments s’ajoutent les *échelles* (par exemple, `scale_x_log10()`, `scale_color_manual()`), qui traduisent les valeurs des données en valeurs perceptibles, et les *systèmes de coordonnées* (`coord_cartesian()`, `coord_polar()`), qui définissent la projection de l’espace graphique. Les *facettes* (`facet_wrap()`, `facet_grid()`) permettent de subdiviser le graphique en multiples panneaux pour comparer des sous-groupes. Enfin, la fonction `theme()` ajuste l’apparence générale du graphique (grilles, polices, arrière-plans), tandis que `labs()` ajoute des titres et des étiquettes.
```{r, out.width="80%"}
#| label: fig-grammar_graphic
#| echo: false
#| fig-cap: "La logique en couches de la grammaire des graphiques \\newline \\textit{Source} : [Site officiel de ggplot2](https://ggplot2.tidyverse.org/articles/ggplot2.html)."
knitr::include_graphics("images/chapitre_7_grammaire_graphique.png", dpi = 600)
```
Cette approche modulaire et incrémentale distingue `ggplot2` des systèmes graphiques traditionnels. Comme le souligne Wickham [@wickham09, chap. 1], l’utilisateur peut commencer par un nuage de points simple, puis enrichir le graphique par ajouts successifs : annotations, résumés statistiques, facettes ou encore ajustements esthétiques. Cette logique rend possible la création de graphiques élégants et reproductibles, mais surtout adaptés aux besoins analytiques précis du chercheur. Elle transforme la visualisation en un véritable langage, où chaque composant est indépendant et combinable, facilitant ainsi l’exploration et la communication des données.
En voici un exemple d'ajout progressif de couches (*layers*) avec le jeu de données `mtcars`:
```{r}
library(ggplot2)
# Couche de base avec les données
p1 <- ggplot(mtcars, aes(x = wt, y = mpg))
print(p1)
```
```{r}
# Ajout des points
p2 <- p1 + geom_point()
print(p2)
```
```{r}
# Ajout d'une ligne de tendance
p3 <- p2 + geom_smooth(method = "lm")
print(p3)
```
```{r}
# Ajout de labels
p4 <- p3 + labs(title = "Consommation vs Poids",
x = "Poids (1000 lbs)",
y = "Miles par gallon")
print(p4)
```
### Aller plus loin : la visualisation interactive des données
Si jusqu'à présent la visualisation des données a été présentée comme une étape servant à exposer les résultats de recherches, elle peut également être perçue comme un outil précieux pour l'exploration de données multidimensionnelles. En effet, les visualisations interactives offrent la possibilité d'explorer et même d'analyser les données directement à partir des graphiques ou tableaux. Cela permet non seulement de mieux appréhender la structure des données, mais aussi de les inspecter plus efficacement, tout en suscitant des questions de recherche qui auraient pu être négligées autrement [@sievert20].
#### Graphiques interactifs
Les graphiques interactifs permettent une exploration dynamique des données, offrant aux utilisateurs la possibilité de zoomer, survoler des points pour obtenir plus d’informations, et d’examiner les relations entre variables de manière plus intuitive. En $\textsf{R}$, la fonction `ggplotly()` et le package `plotly` permettent de créer facilement des graphiques interactifs à partir de visualisations statiques.
::: callout-note
Note : Le rendu de graphiques interactifs n'est pas possible dans un document PDF. Par conséquent, seuls les codes sont fournis ci-dessous. Ces codes peuvent être testés dans un environnement de développement pour voir le résultat.
:::
##### Exemple avec `ggplotly`
`ggplotly` permet de transformer un graphique `ggplot2` en une visualisation interactive.
```{r}
#| message: false
library(ggplot2)
library(plotly)
```
```{r}
#| eval: false
# Ce package, webshot2, peut être nécessaire pour visualiser
# des graphiques interactifs
#install.packages("webshot2")
# Création d'un graphique ggplot
p <- ggplot(mtcars, aes(x = hp, y = mpg)) +
geom_point() +
labs(title = "Effet de hp sur mpg")
# Transformation en graphique interactif
ggplotly(p)
```
Et voici un exemple avec `plotly`, un package qui n'emprunte pas la grammaire de `ggplot2`:
```{r}
#| eval: false
# Création d'un graphique interactif avec plotly
fig <- plot_ly(
data = mtcars,
x = ~hp, y = ~mpg,
type = 'scatter',
mode = 'markers'
) %>%
layout(title = "Effet de hp sur mpg")
fig
```
Nous recommandons de consulter la documentation officielle du package `plotly` (et de la fonction `ggplotly()`) pour découvrir toutes les options et fonctionnalités disponibles, afin d'enrichir les graphiques interactifs.
#### Applications interactives avec Shiny
`shiny` est un package $\textsf{R}$ puissant qui permet de créer des applications web interactives sans avoir besoin de compétences avancées en développement web. Il permet de relier facilement des données, des visualisations et des contrôles interactifs, rendant les analyses accessibles à un large public via une interface web.
##### Exemple de base avec `shiny`
Voici un exemple simple d'application `shiny` où l'utilisateur peut sélectionner une variable pour tracer un graphique interactif. Si le package `shiny` est installé, il suffit de copier ce code dans un script $\textsf{R}$ sous `RStudio`, puis de lancer l'application web directement.
```{r}
#| eval: false
#| label: shiny
library(shiny)
library(ggplot2)
# Interface utilisateur
ui <- fluidPage(
titlePanel("Exemple d'application Shiny"),
sidebarLayout(
sidebarPanel(
selectInput("var", "Choisir une variable:",
choices = names(mtcars))
),
mainPanel(
plotOutput("plot")
)
)
)
# Serveur
server <- function(input, output) {
output$plot <- renderPlot({
ggplot(mtcars, aes(x = .data[[input$var]], y = mpg)) +
geom_point() +
labs(title = paste("Effet de", input$var, "sur mpg"))
})
}
# Lancement de l'application
shinyApp(ui = ui, server = server)
```
Cette application simple permet à l'utilisateur de choisir une variable dans le jeu de données mtcars pour voir son impact sur la consommation de carburant (`mpg`), visualisée à travers un graphique interactif.
Pour explorer davantage les possibilités de `shiny`, nous recommandons de consulter la documentation officielle du package `shiny` ainsi que les forums en ligne qui proposent des exemples plus complexes et des fonctionnalités avancées.
## En terminant
Dans ce chapitre, nous avons montré comment la visualisation graphique peut accompagner l’analyse de données et faire parler les résultats. En démontrant les fonctionnalités de base des packages `ggplot2`, `plotly` et `shiny`, ce chapitre a montré comment les sciences sociales disposent aujourd’hui d’outils puissants pour explorer, comprendre et partager les données de façon claire et efficace.