1. Le mystère du gros carré bleu
Prenons les hauteurs de 12 jeunes plants et traçons l'histogramme avec 4 classes :
hauteurs = [22, 35, 41, 28, 50, 33, 47, 19, 38, 44, 31, 26] plt.hist(hauteurs, bins=4) plt.show()
Résultat à l'écran : un rectangle bleu plein, sans barres distinctes. Pas de bug ! Regarde comment bins=4 a réparti les 12 hauteurs :
| Classe (cm) | 19 à 26,75 | 26,75 à 34,5 | 34,5 à 42,25 | 42,25 à 50 |
|---|---|---|---|---|
| Hauteurs | 22, 19, 26 | 28, 33, 31 | 35, 41, 38 | 50, 47, 44 |
| Nombre de plants | 3 | 3 | 3 | 3 |
Les 4 barres ont exactement la même hauteur (3). Et dans un histogramme, les barres se touchent (pas d'espace entre elles). Quatre barres égales collées les unes aux autres forment donc... un seul gros bloc bleu. Voilà ton carré.
À retenir
Un « gros carré » n'est pas une erreur : c'est souvent un histogramme dont les barres voisines ont la même hauteur et se touchent. Pour les distinguer, on ajoute un contour et/ou un espacement.
2. L'atelier : écarte les barres toi-même
Bouge les deux curseurs et coche le contour. L'histogramme et le code Python se mettent à jour en direct. Cherche le moment où le carré se découpe en barres.
Essaie rwidth = 1.0 avec 4 classes : tu retrouves le gros carré. Descends à 0.8 : les barres s'écartent. Mets bins = 5 : l'égalité parfaite se brise et l'histogramme prend enfin une vraie forme.
3. La recette à copier
Voici l'exemple complet, prêt à coller dans Colab. Les deux ingrédients qui règlent ton problème sont edgecolor (le contour) et rwidth (l'espacement).
import matplotlib.pyplot as plt
hauteurs = [22, 35, 41, 28, 50, 33, 47, 19, 38, 44, 31, 26]
plt.hist(hauteurs, bins=4, edgecolor="black", rwidth=0.8)
plt.xlabel("Hauteur (cm)")
plt.ylabel("Nombre d'arbres")
plt.title("La hauteur des arbres")
plt.show()
bins=4: découpe les hauteurs en 4 classes.edgecolor="black": un trait noir autour de chaque barre, pour les séparer visuellement.rwidth=0.8: chaque barre occupe 80 % de sa case, ce qui crée l'espace. Valeur entre 0 et 1.
4. Une nuance qui te donne de l'avance
Cet espacement est purement décoratif. Pourquoi ? Parce que l'axe d'un histogramme est continu : les classes s'enchaînent sans trou (19, puis 26,75, puis 34,5...). L'espace ne représente donc rien de réel - il sert juste à mieux voir les barres. C'est ce qui distingue un histogramme d'un diagramme à barres :
plt.hist - Histogramme
Compte combien de valeurs tombent dans chaque tranche de nombres (les hauteurs). Axe continu, barres collées par nature.
Donc pour ton exercice : rwidth=0.8 pour bien voir, en sachant que dans la « vraie vie » un histogramme se dessine collé. Pour le diagramme à barres et les autres graphiques, vois l'aide-mémoire des graphiques.