L3 économie-finance
9 septembre 2026
Ce script s’exécute sans erreur et sans avertissement. Pourtant le commentaire qui l’accompagne est faux.
Trouvez ce qui ne va pas, corrigez, et expliquez en français ce qui s’est passé.
# A tibble: 1 × 2
effectif tv_moyenne
<int> <dbl>
1 1991 2.23
Important
Deux erreurs superposées : le mutate() sans <- ne modifiait rien, donc le recodage annoncé n’avait jamais lieu ; et l’effectif affiché (n()) comptait tout le tableau au lieu des seuls répondants, cachant le na.rm = TRUE.
La séance dernière, nous avons résumé l’âge des enquêtés :
# A tibble: 1 × 3
moyenne ecart_type mediane
<dbl> <dbl> <dbl>
1 48.2 16.9 48
Trois nombres. Mais quelle est la forme de cette distribution ? Y a-t-il un seul groupe d’âge, ou plusieurs ? Des valeurs aberrantes ?
Deux indicateurs identiques peuvent correspondre à des distributions très différentes. C’est ce que nous allons apprendre à voir.
ggplot2ggplot2 permet de construire des graphiques avec une syntaxe cohérente et puissante. Elle demande l’apprentissage d’un petit langage supplémentaire, mais permet ensuite de construire des graphiques complexes efficacement.
Une de ses particularités : les données d’un graphique sont toujours dans un tableau de données.
Ce chapitre est élaboré à partir du chapitre 8 de Barnier et Kauffmann (2023).
Un graphique s’initialise avec la fonction ggplot(). On lui passe le tableau de données.
Rien ne s’affiche : nous n’avons pas encore dit quoi représenter, ni comment.
Il faut ajouter un élément de représentation graphique, appelé géométrie (geom). On l’ajoute avec l’opérateur +.
Cela ne fonctionne pas encore : il manque la variable à représenter.
On indique la variable à représenter avec la fonction aes(). Ici, le paramètre x désigne la variable portée par l’axe horizontal.
Il suffit de changer la valeur de x :
Note
R affiche un avertissement signalant les valeurs manquantes écartées. Un avertissement n’est pas une erreur : le graphique est produit. Mais lisez-le – il vous dit combien d’observations ne sont pas représentées.
Pour faire un graphique, il faut trois choses :
ggplot()geom_xxxxaes()On lie les éléments avec l’opérateur +.
L’histogramme découpe la variable en intervalles et compte les observations dans chacun. On contrôle le découpage avec bins :
Avertissement
Le nombre d’intervalles change ce que vous voyez. Identifiez l’intervalle qui correspond à ce que vous étudiez, ou essayez-en toujours plusieurs avant de conclure quoi que ce soit sur la forme d’une distribution.
Astuce
geom_bar() compte lui-même les effectifs : c’est l’équivalent graphique du count() de la séance dernière. Les valeurs manquantes apparaissent comme une barre.
Quand les modalités sont longues, on inverse les axes en passant la variable en y :
freres.soeurs).relig. Comparez avec le count() de la séance dernière.Pour deux variables quantitatives, on utilise geom_point(), qui demande une position en x et une en y :
Il y a 2000 observations et beaucoup se superposent exactement : impossible de savoir où se concentrent les enquêtés.
La transparence (alpha) et un léger décalage aléatoire (geom_jitter) rendent la densité visible :
Important
Le premier graphique n’était pas faux, il était illisible. Un graphique peut cacher l’information aussi bien qu’un tableau.
Ce sont exactement les quartiles calculés la séance dernière avec quantile(). La boîte est leur traduction visuelle.
Astuce
Comparez avec le tableau group_by(qualif) |> summarise(...) de la séance dernière : même information, mais la dispersion de chaque groupe devient visible.
Un mappage est une mise en relation entre un attribut graphique (position, couleur, taille, transparence) et une variable du tableau.
Tous les mappages se déclarent dans aes().
Chaque geom possède sa propre liste de mappages possibles.
aes() ou pas aes() ?Parfois on veut fixer un attribut sans le relier à une variable : tous les points en rouge, par exemple. On utilise le même argument color, mais à l’extérieur de aes().
Important
Si l’attribut dépend d’une variable, il va dans aes().
Si l’attribut est le même pour tous les points, il va en dehors de aes().
color est ici dans aes() : R comprend qu’il faut colorer selon une variable qui vaudrait « darkred » pour tout le monde. Il crée donc un groupe unique, lui attribue sa première couleur de palette, et ajoute une légende absurde. Aucun message d’erreur.
On peut ajouter plusieurs geom avec +. Pour éviter de répéter les mappages, on les déclare dans ggplot() : ils sont hérités par toutes les géométries.
Note
geom_smooth(method = "lm") ajoute une droite de régression linéaire. Vous la retrouverez en économétrie ; ici, elle sert seulement à visualiser une tendance.
facet_wrap() répète le même graphique pour chaque modalité d’une variable :
C’est le pendant graphique du group_by() de la séance dernière.
Les scales modifient la manière dont un attribut est relié aux valeurs d’une variable, et l’affichage de la légende correspondante. Elles s’ajoutent avec + et prennent la forme scale_<attribut>_<type>.
labs() règle tous les textes du graphique en une seule fois :
Essayez aussi theme_bw(), theme_classic(), theme_light().
heures.tv n’est pas un titre d’axe.ggsave() enregistre le dernier graphique affiché, dans le dossier de travail. Le format est déduit de l’extension du fichier.
Dans un script commenté :
nivetud), lisible.facet_wrap(), et donnez-lui un titre et des axes nommés.Astuce
Pour chaque graphique, écrivez en commentaire ce que vous y lisez. Un graphique sans lecture ne sert à rien.
Faites la leçon Representations_graphiques.
Note
En option, pour pratiquer davantage : la leçon facultative Exercice_5 reprend nuage de points, boîte à moustaches et diagramme en bâtons. Voir LECONS_OPTIONNELLES.md.
La séance 5 est un projet : une analyse complète, de votre choix, sur hdv2003.
L’antisèche ggplot2 résume l’essentiel en deux pages. Elle est aussi accessible depuis RStudio : Help > Cheatsheets > Data visualization with ggplot2.
La documentation officielle donne la liste complète des géométries, avec un exemple pour chacune.
Le chapitre Data visualisation de R for Data Science est une bonne introduction complémentaire, en anglais.