head(ToothGrowth) len supp dose
1 4.2 VC 0.5
2 11.5 VC 0.5
3 7.3 VC 0.5
4 5.8 VC 0.5
5 6.4 VC 0.5
6 10.0 VC 0.5
Tracez un nuage de points à une dimension, groupez avec y ~ group, jitterez pour éviter le chevauchement et superposez la moyenne
Créez un strip chart (nuage de points à une dimension) en R de base avec stripchart(). Tracez une variable ou par groupe avec la formule y ~ group, jitterez ou empilez les points qui se chevauchent, passez de la verticale à l’horizontale, définissez les formes et couleurs des points, superposez la moyenne du groupe, et posez un strip chart par-dessus une boîte à moustaches.
30 juin 2026
7 juillet 2026
stripchart() : une seule variable avec stripchart(x), ou par groupe avec la formule stripchart(y ~ group, data = df). Aucun package nécessaire.method = "jitter" (décalage aléatoire) ou method = "stack" (empile les valeurs identiques) ; la valeur par défaut "overplot" les trace sur une seule ligne.vertical = TRUE, définissez le marqueur avec pch et cex, et colorez chaque groupe avec un vecteur passé à col.points()/segments(), ou posez le strip chart par-dessus une boîte à moustaches avec stripchart(..., add = TRUE) pour une vue résumé-plus-données-brutes.Un strip chart trace chaque valeur d’une variable numérique le long d’un seul axe — un nuage de points à une dimension, aussi appelé dot plot. Contrairement à une boîte à moustaches, qui résume un groupe en cinq nombres, un strip chart montre chaque observation. C’est ce qui en fait le meilleur choix quand les tailles d’échantillon sont petites : avec six points par groupe, les quartiles d’une boîte à moustaches n’ont quasiment aucun sens, alors qu’un strip chart vous montre exactement ce dont vous disposez.
En R de base, vous en dessinez un avec stripchart(). Il fonctionne de deux façons : passez un seul vecteur pour tracer une variable, ou passez une formule y ~ group pour dessiner un strip par groupe. Cette leçon couvre les deux, puis les éléments que vous utiliserez vraiment — le jitter pour empêcher les points de s’empiler, la disposition verticale ou horizontale, les formes et couleurs des points, la superposition de la moyenne du groupe, et la combinaison d’un strip chart avec une boîte à moustaches.
Nous utilisons le jeu de données intégré ToothGrowth : la longueur des odontoblastes (len) chez des cobayes ayant reçu de la vitamine C à trois doses (dose) selon deux méthodes d’administration (supp).
len supp dose
1 4.2 VC 0.5
2 11.5 VC 0.5
3 7.3 VC 0.5
4 5.8 VC 0.5
5 6.4 VC 0.5
6 10.0 VC 0.5
Vous préférez la grammaire des graphiques ? Le geom_jitter() de ggplot2 construit la légende et le thème pour vous — voir stripchart dans la série ggplot2 pour la voie ggstripchart / geom_jitter.
Passez un seul vecteur numérique et stripchart() dispose chaque valeur le long de l’axe des x. Voici la consommation de carburant pour les 32 voitures de mtcars :
Chaque voiture est un point. Là où deux voitures partagent une valeur, les points se superposent — le signe que vous avez besoin de jitter ou de stack, ce que nous voyons plus bas.
Le cas courant est un strip par groupe. Utilisez l’interface formule — y ~ group — et nommez le data frame dans data =. R dessine une rangée de points pour chaque niveau de dose :

len ~ dose se lit « longueur en fonction de dose ». Par défaut, les strips sont horizontaux, une rangée par groupe, et la longueur grimpe nettement avec la dose. frame = FALSE supprime le cadre autour pour un rendu plus net. Comme chaque point est tracé, vous voyez aussi que chaque groupe ne compte que dix animaux — exactement le cas où un strip chart l’emporte sur une boîte à moustaches.
Définissez vertical = TRUE pour dresser les groupes côte à côte, avec la valeur sur l’axe des y. Cette disposition correspond à ce que la plupart des lecteurs attendent d’une comparaison groupée et s’associe naturellement à une boîte à moustaches :

Avec vertical = TRUE, les rôles s’inversent : les groupes s’étalent sur l’axe des x et la variable numérique monte le long de l’axe des y, alors échangez vos xlab et ylab en conséquence.
Quand plusieurs observations partagent une valeur, elles s’empilent sur un seul point et vous perdez le compte. method corrige cela — "jitter" décale chaque point d’une petite quantité aléatoire, "stack" empile proprement les valeurs identiques :
op <- par(mfrow = c(1, 2))
# Left: jitter — a small random horizontal nudge
stripchart(len ~ dose, data = ToothGrowth,
vertical = TRUE, method = "jitter", jitter = 0.15,
pch = 19, col = "#3a86d4", frame = FALSE,
main = 'method = "jitter"',
xlab = "Dose (mg/day)", ylab = "Tooth length")
# Right: stack — identical values pile up
stripchart(len ~ dose, data = ToothGrowth,
vertical = TRUE, method = "stack",
pch = 19, col = "#3a86d4", frame = FALSE,
main = 'method = "stack"',
xlab = "Dose (mg/day)", ylab = "Tooth length")
Utilisez jitter pour des données continues — jitter = 0.15 contrôle l’ampleur de l’écartement. Utilisez stack quand les valeurs se répètent (données arrondies ou discrètes), pour que les points égaux ressortent en une rangée nette au lieu de se cacher les uns derrière les autres. La valeur par défaut, method = "overplot", les trace tous sur la même ligne.
Changez le marqueur avec pch et sa taille avec cex. Passez un seul pch pour tous les groupes, ou un vecteur pour donner à chaque groupe son propre symbole :

pch = c(21, 18, 16) fait alterner un cercle vide, un losange et un cercle plein sur les trois doses ; cex = 1.2 agrandit chaque point de 20 %. Voir formes des points (pch) pour l’ensemble complet des symboles.
col colore les points. Donnez une seule couleur pour tous, ou un vecteur — un jeu adapté au daltonisme — pour colorer chaque groupe, puis reliez les couleurs avec un legend() :
grp_cols <- c("#3a86d4", "#f4a259", "#5fad56") # colourblind-safe set
stripchart(len ~ dose, data = ToothGrowth,
vertical = TRUE, method = "jitter",
pch = 19, col = grp_cols, frame = FALSE,
xlab = "Dose (mg/day)", ylab = "Tooth length")
legend("topleft", inset = 0.02,
legend = c("0.5", "1", "2"), pch = 19, col = grp_cols,
title = "Dose", cex = 0.8)
Le vecteur de couleurs correspond aux groupes dans l’ordre des niveaux du facteur. stripchart() n’ajoute aucune légende de lui-même, alors appelez legend() quand la couleur porte elle-même l’information de groupe.
Un strip chart montre la dispersion ; ajoutez la moyenne pour montrer le centre. Calculez les moyennes par groupe avec le tapply() de R de base, puis tracez-les par-dessus les strips. Ici, nous utilisons segments() pour dessiner un court trait horizontal à chaque moyenne — plus clair qu’un simple point :
group_means <- tapply(ToothGrowth$len, ToothGrowth$dose, mean)
stripchart(len ~ dose, data = ToothGrowth,
vertical = TRUE, method = "jitter", jitter = 0.15,
pch = 19, col = "#3a86d4", frame = FALSE,
xlab = "Dose (mg/day)", ylab = "Tooth length")
# the groups sit at x = 1, 2, 3; draw a crossbar at each mean
segments(1:3 - 0.15, group_means, 1:3 + 0.15, group_means,
lwd = 3, col = "#d1495b")
tapply(len, dose, mean) renvoie une moyenne par dose, dans l’ordre des niveaux du facteur, donc les valeurs s’alignent sur les positions des groupes 1, 2, 3. Remplacez mean par median pour marquer la médiane à la place, ou utilisez points(1:3, group_means, pch = 18, cex = 1.8) pour poser un seul symbole sur chaque moyenne plutôt qu’un trait horizontal.
Pour des échantillons de petite à moyenne taille, le meilleur des deux mondes est une boîte à moustaches pour le résumé avec les points bruts superposés. Dessinez d’abord la boîte à moustaches (masquez ses valeurs aberrantes pour qu’elles ne soient pas tracées deux fois), puis ajoutez le strip chart avec add = TRUE :
boxplot(len ~ dose, data = ToothGrowth, frame = FALSE,
outline = FALSE, # the strip chart shows the points
xlab = "Dose (mg/day)", ylab = "Tooth length",
col = "white")
stripchart(len ~ dose, data = ToothGrowth,
vertical = TRUE, method = "jitter", jitter = 0.15,
pch = 19, cex = 0.8, col = "#1d4e7a", add = TRUE)
add = TRUE dessine les points sur la boîte à moustaches courante au lieu d’en commencer une nouvelle — la boîte et le strip chart doivent donc partager les mêmes x ~ group et orientation (vertical = TRUE). Mettre outline = FALSE sur la boîte à moustaches empêche les valeurs aberrantes d’apparaître deux fois, une fois comme valeur aberrante de la boîte et une fois comme point réel. Le résultat conserve les quartiles de la boîte à moustaches tout en montrant l’échantillon derrière eux.
Un strip chart et une boîte à moustaches répondent à des questions différentes. Choisissez selon ce que le lecteur a besoin de voir :
| Utilisez un strip chart quand… | Utilisez une boîte à moustaches quand… |
|---|---|
| Les échantillons sont petits (≈ < 20 par groupe) — montrez chaque point. | Les échantillons sont grands — un résumé en cinq nombres suffit. |
| Vous voulez révéler les trous, regroupements ou égalités dans les données. | Vous voulez comparer médianes et dispersion d’un coup d’œil. |
| L’honnêteté sur le peu de points derrière chaque groupe compte. | De nombreux groupes rendent les points individuels illisibles. |
En cas de doute, dessinez les deux : une boîte à moustaches avec le strip chart superposé (ci-dessus) donne le résumé et les données brutes en une seule figure.
Modifiez la formule, la méthode, les couleurs ou les formes et appuyez sur Run — cela s’exécute dans votre navigateur via webR, sans installation.
Demandez à Prova « quand devrais-je utiliser un stripchart plutôt qu’un boxplot en R ? » — elle répond avec du code R base que vous pouvez exécuter, donc l’explication est reproductible. The runtime is the judge. Demander à Prova →
Les points s’empilent tous sur une seule ligne et je ne vois pas combien il y en a. C’est la valeur par défaut method = "overplot". Ajoutez method = "jitter" (avec jitter = 0.1–0.2) pour des données continues, ou method = "stack" quand les valeurs se répètent, pour que les points coïncidents se séparent.
Mon trait de moyenne (ou points()) tombe au mauvais endroit. stripchart() place les groupes à x = 1, 2, 3, … uniquement quand vertical = TRUE. Pour la disposition horizontale par défaut, les groupes se situent plutôt sur l’axe des y, donc une superposition verticale nécessite vertical = TRUE, et tapply() doit renvoyer ses moyennes dans le même ordre de niveaux de facteur que les strips.
stripchart(..., add = TRUE) dessine sur le mauvais graphique ou décale les points. add = TRUE réutilise les axes du graphique courant, donc la boîte à moustaches que vous avez dessinée en premier doit utiliser les mêmes y ~ group et la même orientation (vertical = TRUE). Dessinez la boîte à moustaches, puis le strip chart, dans cet ordre.
Un strip chart est un nuage de points à une dimension : il trace chaque observation d’une variable numérique le long d’un seul axe. En R de base, vous en dessinez un avec stripchart(). C’est une bonne alternative à une boîte à moustaches quand les tailles d’échantillon sont petites, car il montre chaque point de données au lieu d’un résumé en cinq nombres.
Utilisez l’interface formule stripchart(y ~ group, data = df). Par exemple, stripchart(len ~ dose, data = ToothGrowth) dessine une rangée de points par dose. Ajoutez vertical = TRUE pour dresser les groupes côte à côte, et passez un vecteur à col pour colorer chaque groupe.
Définissez l’argument method. method = "jitter" ajoute un petit décalage aléatoire (réglez-le avec jitter = 0.15), ce qui convient aux données continues ; method = "stack" empile les valeurs identiques en une rangée nette, ce qui convient aux données arrondies ou discrètes. La valeur par défaut method = "overplot" trace les points coïncidents sur la même ligne.
Une boîte à moustaches résume un groupe avec cinq nombres (médiane, quartiles, moustaches) et masque les points individuels ; un strip chart trace chaque observation. Utilisez un strip chart pour les petits échantillons où les quartiles de la boîte à moustaches ne sont pas fiables, et une boîte à moustaches pour les grands échantillons. Vous pouvez les combiner avec stripchart(..., add = TRUE) pour superposer les points bruts sur une boîte à moustaches.
Calculez les moyennes par groupe avec tapply(y, group, mean), puis tracez-les par-dessus un strip chart vertical où les groupes se trouvent à x = 1, 2, 3. Utilisez points(1:3, means, pch = 18) pour un seul symbole par groupe, ou segments(1:3 - 0.15, means, 1:3 + 0.15, means) pour un trait de moyenne.
En partant d’iris, dessinez un strip chart vertical et jitteré de Sepal.Length par Species qui utilise les trois couleurs adaptées au daltonisme ci-dessous, puis superposez la moyenne de chaque groupe sous forme de trait horizontal.
Appelez stripchart(Sepal.Length ~ Species, data = iris, vertical = TRUE, method = "jitter") avec col = grp_cols. Puis means <- tapply(iris$Sepal.Length, iris$Species, mean) et dessinez un trait horizontal à chacune des trois positions de groupe avec segments().
grp_cols <- c("#3a86d4", "#f4a259", "#5fad56")
stripchart(Sepal.Length ~ Species, data = iris,
vertical = TRUE, method = "jitter", jitter = 0.15,
pch = 19, col = grp_cols, frame = FALSE,
xlab = "Species", ylab = "Sepal length")
means <- tapply(iris$Sepal.Length, iris$Species, mean)
segments(1:3 - 0.15, means, 1:3 + 0.15, means, lwd = 3, col = "#d1495b")tapply() renvoie une moyenne par espèce dans l’ordre des niveaux du facteur, donc les trois valeurs s’alignent sur les positions des strips 1, 2, 3.
Vérification rapide. Vous exécutez stripchart(len ~ dose, data = ToothGrowth) et chaque point se place sur une seule ligne par groupe. Quel argument sépare les points coïncidents ?
method — définissez method = "jitter" (un petit décalage aléatoire) ou method = "stack" (empile les valeurs identiques). La valeur par défaut est method = "overplot", qui trace les points coïncidents sur la même ligne.
stripchart() est la seule fonction dont vous avez besoin pour les nuages de points à une dimension en R de base. Passez un vecteur pour une seule variable, ou la formule y ~ group pour un strip par groupe. À partir de là, method sépare les points qui se chevauchent, vertical = TRUE change l’orientation, pch/cex définissent le marqueur, col colore chaque groupe, et tapply() avec points()/segments() superpose la moyenne. Posez-le par-dessus une boîte à moustaches avec add = TRUE et vous obtenez le résumé et les données brutes en une seule figure honnête — exactement ce dont les petits échantillons ont besoin.
Prouvez que vous savez le faire. Maîtrisez toute la série R Base Graphics — suivez votre parcours, construisez des projets et obtenez un certificat.
Passez à Pro — Prova illimité sur vos propres données et un certificat vérifiable qui atteste la compétence.
dès 15 $/mois facturé annuellement
✓ Vous êtes Pro — continuez. The runtime is the judge.
Prêt à passer à la vitesse supérieure ?
Recevez les nouvelles leçons R & Python par e-mail
Pratique, reproductible, sans spam. Désinscription à tout moment.
Double opt-in. Nous ne partageons jamais votre e-mail.
Cette leçon est reproductible : chaque figure a été produite par le code montré, exécuté au moment du build (si elles s’affichent, le code fonctionne), et le bac à sable se réexécute en direct dans votre navigateur. Modifiez n’importe quel bloc et appuyez sur Run. The runtime is the judge.
@online{2026,
author = {},
title = {Strip chart en R : la fonction stripchart()},
date = {2026-06-30},
url = {https://www.datanovia.com/learn/data-visualization/r-base/stripchart},
langid = {fr}
}