Truc informatique

Espacer les barres d'un histogramme

Ton histogramme s'affiche en un seul gros carré bleu au lieu de jolies barres ? Bonne nouvelle : ton code marche probablement. Voici pourquoi, et comment écarter les barres pour les voir une à une.

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,7526,75 à 34,534,5 à 42,2542,25 à 50
Hauteurs22, 19, 2628, 33, 3135, 41, 3850, 47, 44
Nombre de plants3333

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

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.

plt.bar - Diagramme à barres

Une barre par catégorie séparée (épinette, bouleau, sapin). Les barres sont espacées d'office, car les catégories n'ont rien de continu.

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.