Fonction boxplot() de Matplotlib
Documentation de référence de Matplotlib
boxplot()Utilisé pour tracer des diagrammes en boîte, affichant intuitivement le résumé en cinq nombres des données : minimum, premier quartile, médiane, troisième quartile, maximum et éventuelles valeurs aberrantes.
Les diagrammes en boîte sont un outil essentiel pour l'analyse exploratoire des données, adaptés à la comparaison des caractéristiques de distribution de plusieurs groupes de données.
Définition de fonction
matplotlib.pyplot.boxplot(x, notch=None, sym=None, vert=None,
whis=None, positions=None, widths=None, patch_artist=None,
bootstrap=None, usermedians=None, conf_intervals=None,
meanline=None, showmeans=None, showcaps=None, showbox=None,
showfliers=None, boxprops=None, labels=None, flierprops=None,
medianprops=None, meanprops=None, capprops=None,
whiskerprops=None, manage_ticks=True, autorange=False,
zorder=None, capwidths=None, **kwargs)
Description du paramètre
| Paramètre | Type | Description |
|---|---|---|
| x | tableau ou séquence de tableaux | Données d'entrée ; un tableau unidimensionnel trace une boîte, une séquence de tableaux bidimensionnels trace plusieurs boîtes |
| notch | bool | Indique s'il faut tracer un diagramme en boîte entaillé (les encoches servent à l'intervalle de confiance de la médiane), par défaut False |
| vert | bool | True=vertical (par défaut), False=horizontal |
| whis | float ou (float, float) | Longueur des moustaches (multiple de l'IQR), par défaut 1.5. Par exemple, (5, 95) signifie les 5e et 95e percentiles |
| sym | str ou None | Style de marqueur pour les valeurs aberrantes ; None signifie que les valeurs aberrantes ne sont pas affichées |
| widths | float ou array-like | Largeur de chaque boîte |
| patch_artist | bool | Si True, les boîtes sont remplies avec une couleur de remplissage (personnalisable avec facecolor) |
| showmeans | bool | Afficher ou non les points de moyenne, False par défaut |
| showfliers | bool | Afficher ou non les valeurs aberrantes, True par défaut |
| labels | liste | Libellé pour chaque boîte |
| boxprops / flierprops / medianprops / meanprops | dict | Contrôler les propriétés d'apparence des boîtes/valeurs aberrantes/lignes médianes/moyennes respectivement |
Structure d'un diagramme en boîte : la boîte s'étend de Q1 à Q3, et la ligne médiane est la médiane. Les moustaches s'étendent jusqu'aux points de données les plus éloignés dans l'intervalle de Q1-1.5*IQR à Q3+1.5*IQR. Les valeurs au-delà des moustaches sont des valeurs aberrantes.
Exemples d'utilisation
Exemple 1 : Diagramme en boîte simple
Exemple
import numpy as np
np.random.seed(42)
# Trois groupes de données avec des distributions différentes
data = [
np.random.normal(0, 1, 100), # Normale standard
np.random.normal(2, 1.5, 100), # moyenne=2, écart-type=1.5
np.random.normal(-1, 0.5, 100), # moyenne=-1, écart-type=0.5
]
fig, ax = plt.subplots(figsize=(7, 5), layout='constrained')
bp = ax.boxplot(data, labels=['Groupe A', 'Groupe B', 'Groupe C'],
patch_artist=True)
# Couleurs personnalisées
colors = ['#3498db', '#e74c3c', '#2E7DCC']
for patch, color in zip(bp['boxes'], colors):
patch.set_facecolor(color)
ax.set_title('Diagramme en boîte : Comparaison de trois groupes')
ax.set_ylabel('Valeur')
ax.grid(axis='y', alpha=0.3)
plt.show()
Exemple 2 : Diagramme en boîte entaillé + Affichage de la moyenne
Exemple
import numpy as np
np.random.seed(42)
data = [
np.random.normal(0, 1, 100),
np.random.normal(0, 1.2, 100),
np.random.normal(0.3, 1, 100),
]
fig, ax = plt.subplots(figsize=(7, 5), layout='constrained')
bp = ax.boxplot(data,
notch=True, # Encoche (intervalle de confiance de la médiane)
showmeans=True, # Afficher la moyenne
meanprops=dict(marker='D', markerfacecolor='red',
markersize=8),
patch_artist=True,
labels=['Contrôle', 'Test A', 'Test B'])
colors = ['#bdc3c7', '#3498db', '#2E7DCC']
for patch, color in zip(bp['boxes'], colors):
patch.set_facecolor(color)
ax.set_title('Diagramme en boîte entaillé avec moyennes')
ax.set_ylabel('Mesure')
ax.grid(axis='y', alpha=0.3)
plt.show()
Exemple 3 : Diagramme en boîte horizontal
Exemple
import numpy as np
np.random.seed(42)
data = [np.random.exponential(scale=s, size=100) for s in [1, 2, 3, 4]]
labels = ['Échelle=1', 'Échelle=2', 'Échelle=3', 'Échelle=4']
fig, ax = plt.subplots(figsize=(8, 5), layout='constrained')
bp = ax.boxplot(data, labels=labels,
vert=False, # Direction horizontale
patch_artist=True)
colors = ['#e74c3c', '#f39c12', '#2E7DCC', '#3498db']
for patch, color in zip(bp['boxes'], colors):
patch.set_facecolor(color)
patch.set_alpha(0.7)
ax.set_title('Diagramme en boîte horizontal')
ax.set_xlabel('Valeur')
ax.grid(axis='x', alpha=0.3)
plt.show()
FAQ
Que signifient les parties d'un diagramme en boîte ?
Boîte: L'IQR (écart interquartile) de Q1 (25%) à Q3 (75%).
Ligne médiane: La ligne au milieu de la boîte = Q2 (50%).
Moustaches: S'étendent jusqu'aux points de données les plus éloignés dans Q1-1.5*IQR et Q3+1.5*IQR.
Valeurs aberrantes: Points de données individuels en dehors de la plage des moustaches.
Autres extensions