Strip chart en R : la fonction stripchart()

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.

Date de publication

30 juin 2026

Modifié

7 juillet 2026

AstucePoints clés
  • Tracez un strip chart — un nuage de points à une dimension — avec stripchart() : une seule variable avec stripchart(x), ou par groupe avec la formule stripchart(y ~ group, data = df). Aucun package nécessaire.
  • Un strip chart montre chaque observation, ce qui en fait le choix honnête pour les petits échantillons, là où une boîte à moustaches masquerait le peu de points dont on dispose.
  • Espacez les points qui se chevauchent avec 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.
  • Changez l’orientation avec vertical = TRUE, définissez le marqueur avec pch et cex, et colorez chaque groupe avec un vecteur passé à col.
  • Superposez la moyenne du groupe avec 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.

Introduction

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).

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

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.

Un strip chart d’une seule variable

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 :

stripchart(mtcars$mpg,
           xlab = "Miles per gallon",
           pch = 19, col = "#3a86d4")

A horizontal base R strip chart of miles per gallon for 32 cars, every value plotted as a point along one axis with some points overlapping.

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.

Strip chart par groupe : la formule y ~ group

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 :

stripchart(len ~ dose, data = ToothGrowth,
           pch = 19, col = "#3a86d4", frame = FALSE,
           xlab = "Tooth length", ylab = "Dose (mg/day)")

A horizontal base R strip chart of tooth length by dose, three rows of points with length rising as the dose increases.

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.

Strip charts verticaux

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 :

stripchart(len ~ dose, data = ToothGrowth,
           vertical = TRUE, pch = 19, col = "#3a86d4", frame = FALSE,
           xlab = "Dose (mg/day)", ylab = "Tooth length")

A vertical base R strip chart of tooth length by dose, three columns of points with the value axis running up the side.

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.

Éviter le chevauchement : jitter et stack

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")

Two vertical base R strip charts of tooth length by dose side by side: the left jitters the points, the right stacks identical values into rows.

par(op)

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.

Formes et taille des points

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 :

stripchart(len ~ dose, data = ToothGrowth,
           vertical = TRUE, method = "jitter",
           pch = c(21, 18, 16), cex = 1.2, col = "#3a86d4", frame = FALSE,
           xlab = "Dose (mg/day)", ylab = "Tooth length")

A vertical jittered base R strip chart of tooth length by dose using a different point shape for each of the three groups at a larger size.

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.

Couleurs par groupe

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)

A vertical jittered base R strip chart of tooth length by dose with each of the three groups in a different colourblind-safe colour and a legend.

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.

Superposer la moyenne du 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")

A base R strip chart of tooth length by dose, points jittered for each of three groups with the group mean drawn as a red crossbar.

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.

Strip chart par-dessus une boîte à moustaches

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)

A base R box plot of tooth length by dose with the individual data points jittered over each box in a dark azure.

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.

Quand utiliser un strip chart

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.

Essayez en direct

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.

🟢 Avec un agent IA

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 →

Problèmes fréquents

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.10.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.

Questions fréquentes

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.

Testez vos connaissances

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.

Conclusion

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.

Leçons connexes

Cette page vous a-t-elle été utile ?

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.

Commencer gratuitement →

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

Passer à Pro →

✓ Vous êtes Pro — continuez. The runtime is the judge.

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.

Partager cette pageXLinkedInRedditHN
Note

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.

Réutilisation

Citation

BibTeX
@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}
}
Veuillez citer ce travail comme suit :
“Strip chart en R : la fonction stripchart().” 2026. June 30. https://www.datanovia.com/learn/data-visualization/r-base/stripchart.