Une liste brute de 50 hauteurs d'arbres : 12, 18, 9, 22, 15, 11, 7, 25... Impossible de voir la tendance d'un coup d'oeil.
Un graphique transforme ces chiffres en image : on voit immediatement le maximum, le minimum, les anomalies et la tendance generale.
En sciences, visualiser = comprendre. La fourmi compte ; l'aigle survole.
Par convention, on importe matplotlib.pyplot sous le nom court plt. Tout le monde sur Terre utilise ce raccourci - autant le garder !
matplotlib est la bibliotheque standard pour tracer des graphiques en Python.
Elle est installee dans tous les environnements scientifiques (Colab, Anaconda, Jupyter).
Le sous-module pyplot offre une interface simple, inspiree de MATLAB, pour creer des figures en quelques lignes.
Un graphique a besoin de deux listes : les valeurs de l'axe x (horizontal) et celles de l'axe y (vertical).
plot(x, y) relie les points dans l'ordre. show() affiche la figure. Sans show(), rien n'apparait. Le graphique est la... mais tout nu : on ne sait pas ce qu'on regarde.
xlabel et ylabel nomment les axes. Le lecteur sait enfin ce qui est mesure et dans quelle unite (toujours mettre l'unite entre parentheses).
title coiffe la figure d'une phrase qui dit ce qu'elle montre. Titre + deux axes nommes = le trio obligatoire de tout graphique scientifique.
Quand on trace plusieurs courbes, on donne a chacune un label. Puis legend() affiche la petite boite qui dit quelle couleur correspond a quoi.
Noms : "red", "teal", "orange"... ou un code "#0E7490".
color change la couleur du trace, marker="o" dessine un point a chaque donnee, linewidth regle l'epaisseur. La couleur n'est pas que jolie : elle distingue et met en valeur.
grid(True) affiche un quadrillage qui aide a lire la valeur en face de chaque point. On le decore avec la couleur, le style de trait ("--" tirets, ":" pointille, "-" plein), l'epaisseur et la transparence alpha - discret, pour ne pas voler la vedette aux donnees.
Une grille legere (alpha=0.3) aide l'oeil a lire les valeurs sans voler la vedette aux donnees. Trop foncee, elle ecrase la courbe ; trop pale, elle ne sert a rien. C'est exactement la nuance du verbe habiller : on decore pour clarifier, pas pour surcharger.
show() ouvre la figure a l'ecran ; savefig("foret.png") l'enregistre dans un fichier image - pratique quand on veut garder un graphique pour le glisser dans un rapport, par exemple pour presenter les graphiques du Projet 3. Attention : appelle savefig avant show(), sinon le fichier ressort vide.
.show()L'extension du nom de fichier choisit le format : .png, .jpg, .pdf... Pour un rapport propre, dpi=300 donne une image bien nette et bbox_inches="tight" coupe les marges blanches inutiles.
show sans () n'affiche rien.Toujours le meme refrain : dessiner → habiller → montrer. Le piege le plus frequent : tout habiller mais oublier plt.plot → le graphique s'affiche... mais tout nu, avec des axes de 0 a 1 et aucune courbe.
| Graphique | Pour faire voir... | La question posee |
|---|---|---|
| plt.plot | une evolution continue | "comment ca change dans le temps ?" |
| plt.bar | comparer des categories | "laquelle est la plus grande ?" |
| plt.hist | une distribution | "comment ca se repartit ?" |
| plt.scatter | un lien entre deux mesures | "x et y vont-ils ensemble ?" |
| plt.pie | des parts d'un tout | "quelle proportion du total ?" |
Le bon graphique depend de la question, pas seulement des donnees. Demande-toi d'abord ce que tu veux faire voir - le type de graphe en decoule.
Un dictionnaire colle ensemble une cle et sa valeur : "epinettes" va avec 71.
Mais plt.bar(x, y) reclame deux listes separees : les etiquettes d'un cote, les hauteurs de l'autre.
Il faut donc defaire le dictionnaire en deux listes bien alignees.
Raccourci tout fait : list(dictionnaire.keys()) et list(dictionnaire.values()) donnent exactement la meme chose.
dictionnaire.items() sort les paires (cle, valeur) une par une ; on ne garde que la moitie qui nous interesse.
Les cles deviennent les etiquettes sous chaque barre, les valeurs deviennent les hauteurs. La 1re liste donne l'axe x, la 2e l'axe y - et sans plt.show(), rien ne s'affiche !
c=, la couleur de chaque point porte une 3e mesure. colorbar() ajoute l'echelle de couleurs a droite. Trois informations sur un seul graphique !color= : une teinte par bande. Utile pour identifier les categories d'un coup d'oeil.barres = plt.bar(...). Puis bar_label(barres) ecrit la hauteur de chaque barre juste au-dessus, d'un coup et sans boucle. padding=3 decolle un peu le nombre du sommet.bottom=, chaque barre se pose sur la precedente. Une barre = un total ; les couleurs empilees montrent sa composition. C'est le graphique bonus du Projet 2.edgecolor="black" trace le contour de chaque tranche ; rwidth=0.8 retrecit les barres a 80 % et laisse un espace.plt.hist ne te rend pas les barres directement : il rend un trio. Et bar_label veut la 3e case de ce trio.
Memes resultats. Dans les deux cas, bar_label prend les barres, jamais les chiffres : chaque barre connait deja sa hauteur et y lit l'effectif.
| Tu veux... | Couleur | Le nom a ecrire |
|---|---|---|
| Vert fonce | 'darkgreen' | |
| Vert moyen | 'green' | |
| Vert foret (tres joli pour des arbres 🌲) | 'forestgreen' | |
| Vert olive | 'olive' | |
| Vert mer | 'seagreen' |
Le nom s'ecrit entre guillemets, comme tout texte : plt.bar(especes, nombres, color="forestgreen"). matplotlib comprend environ 140 noms de couleurs en anglais.
| Tu veux... | Couleur | Le nom a ecrire |
|---|---|---|
| Brun ecorce | 'saddlebrown' | |
| Brun terre | 'sienna' | |
| Brun chaud | 'chocolate' | |
| Sable du sentier | 'peru' | |
| Beige clair | 'tan' |
Parfaits pour un tronc, un sol ou un sentier - ou pour distinguer une serie "bois" d'une serie "feuillage" dans le meme graphique.
| Tu veux... | Couleur | Le nom a ecrire |
|---|---|---|
| Ciel clair | 'skyblue' | |
| Bleu acier | 'steelblue' | |
| Bleu riviere | 'royalblue' | |
| Bleu profond | 'navy' | |
| Bleu-vert du lac | 'teal' |
Pour l'eau, le ciel, ou une grandeur "fraiche" (temperature, humidite). Astuce : choisis des couleurs contrastees entre series pour qu'on les distingue d'un coup d'oeil.
Une couleur = un nom entre guillemets, ou un code hexadecimal : color="#228B22". Garde cette feuille a portee de main pour habiller tes graphiques de foret !
Lire un CSV (souviens-toi du jour 4), c'est remplir une liste par colonne : ici especes et hauteurs.
A partir de ces listes, chaque graphique a sa petite recette de preparation. En voici trois, de la plus simple a la plus rusee.
float(champs[i]) pour passer du texte du CSV aux nombres.C'est la recette la plus simple : la forme du CSV correspond deja a ce que plot et scatter attendent.
plt.bar.plt.hist(hauteurs, bins=3) fait tout seul - le faire a la main, c'est comprendre ce qui se passe dessous.| Tu veux faire voir... | La preparation des donnees | Le trace |
|---|---|---|
| une evolution, un lien | deux colonnes numeriques alignees (float) | plot / scatter |
| comparer des categories | compter par categorie - dico accumulateur | bar |
| une distribution | la liste brute... ou compter par tranche (if) | hist / bar |
| des parts d'un tout | additionner par categorie, garder les totaux | pie |
Toujours la meme demarche : 1. lire les colonnes du CSV, 2. les remodeler selon le graphe vise (boucle, accumulateurs, if), 3. appeler la fonction matplotlib. Le plus dur n'est pas de tracer - c'est de preparer !
plt.imread lit l'image comme un tableau 2D de pixels (souvenez-vous du jour 3). PIL (la bibliotheque Pillow) ouvre plus de formats et permet en plus de redimensionner, recadrer ou pivoter avant l'affichage. plt.axis("off") enleve la regle graduee, inutile pour une photo.
plt.subplots(2, 2) cree une grille de cases dans une seule figure. La boucle remplit chaque case : cases.flat les parcourt une a une, zip apparie chaque case a son fichier, imshow y pose l'image et set_title la nomme. Parfait pour comparer d'un coup d'oeil.
Avec subplots(2, 2), cases devient un tableau 2D : cases[ligne][colonne]. Chaque case recoit son propre graphique. tight_layout() evite que les titres se chevauchent. Un vrai tableau de bord !
Trace le graphique de tes donnees forestieres dans ton calepin Colab. Choisis le bon type, ajoute un titre, des axes, une legende et des couleurs.