Tracer un graphique
Une liste de nombres, c'est difficile à lire. Un graphique, on le comprend d'un coup d'œil. Apprenons à transformer des données en image.
Un diagramme en une ligne
La fonction histogramme dessine un diagramme en barres à partir d'un tableau :
ventes est un tableau vaut [12, 19, 7, 15, 22, 9, 14]
t est une toile
dimension(t, 400, 220)
remplir(t, #FFFFFF)
histogramme(t, ventes, #1D9BF0)
affiche t
Pratique et rapide. Mais pour choisir les couleurs, ajouter des étiquettes ou des valeurs, il faut construire le graphique soi-même. C'est un excellent exercice !
Construire ses propres barres
Trois calculs suffisent pour chaque barre :
- sa position horizontale : elle avance d'un pas fixe à chaque barre ;
- sa hauteur : la valeur, multipliée par une échelle ;
- son y : comme
y augmente vers le bas, une barre posée sur le sol commence à sol - hauteur.
ventes est un tableau vaut [12, 19, 7, 15, 22, 9, 14]
jours est un tableau vaut ['L', 'M', 'M', 'J', 'V', 'S', 'D']
t est une toile
dimension(t, 400, 240)
remplir(t, #FFFFFF)
sol est un nombre vaut 200
echelle est un nombre vaut 7
hauteurBarre est un nombre
hautBarre est un nombre
gaucheBarre est un nombre
pour i de 0 à longueur(ventes) - 1
hauteurBarre vaut ventes[i] * echelle
hautBarre vaut sol - hauteurBarre
gaucheBarre vaut 30 + i * 50
rectangle(t, gaucheBarre, hautBarre, 34, hauteurBarre, #1D9BF0)
label(t, gaucheBarre + 10, hautBarre - 6, convertir_texte(ventes[i]), #0F1419, 12)
label(t, gaucheBarre + 12, sol + 18, jours[i], #536471, 12)
fin pour
ligne(t, 20, sol, 380, sol, #0F1419, 2)
affiche t
Chaque barre porte sa valeur au-dessus et la lettre du jour en dessous.
Question : Sur une toile, pourquoi le haut d'une barre se calcule-t-il avec sol - hauteurBarre ? — Parce que y augmente vers le bas : pour monter, il faut soustraire. Le point (0, 0) est en haut à gauche. Plus y est petit, plus on est haut.
Mettre en valeur le maximum
Un graphique raconte une histoire. Colorons autrement la meilleure journée :
ventes est un tableau vaut [12, 19, 7, 15, 22, 9, 14]
t est une toile
dimension(t, 400, 240)
remplir(t, #FFFFFF)
// chercher la plus grande valeur
meilleur est un nombre vaut ventes[0]
pour i de 1 à longueur(ventes) - 1
si ventes[i] > meilleur alors
meilleur vaut ventes[i]
fin si
fin pour
sol est un nombre vaut 200
hauteurBarre est un nombre
pour i de 0 à longueur(ventes) - 1
hauteurBarre vaut ventes[i] * 7
si ventes[i] = meilleur alors
rectangle(t, 30 + i * 50, sol - hauteurBarre, 34, hauteurBarre, #00BA7C)
sinon
rectangle(t, 30 + i * 50, sol - hauteurBarre, 34, hauteurBarre, #B8D8F2)
fin si
fin pour
ligne(t, 20, sol, 380, sol, #0F1419, 2)
label(t, 20, 20, 'Meilleure journée : ' + meilleur + ' ventes', #0F1419, 13)
affiche t
On retrouve la recherche du maximum, puis une condition choisit la couleur de chaque barre : verte pour la meilleure journée, bleu clair pour les autres.
Une courbe
Pour montrer une évolution, on relie les points par des segments. Chaque segment va du point i - 1 au point i :
temperatures est un tableau vaut [8, 11, 15, 19, 23, 27, 29, 28, 24, 18, 12, 9]
t est une toile
dimension(t, 420, 220)
remplir(t, #FFFFFF)
departX est un nombre
departY est un nombre
finX est un nombre
finY est un nombre
pour i de 1 à longueur(temperatures) - 1
departX vaut 30 + (i - 1) * 32
departY vaut 200 - temperatures[i - 1] * 6
finX vaut 30 + i * 32
finY vaut 200 - temperatures[i] * 6
ligne(t, departX, departY, finX, finY, #FF7A00, 3)
fin pour
pour i de 0 à longueur(temperatures) - 1
cercle(t, 30 + i * 32, 200 - temperatures[i] * 6, 4, #FF7A00)
fin pour
label(t, 20, 20, 'Températures moyennes par mois', #0F1419, 13)
affiche t
La boucle des segments commence à 1 : il n'y a pas de point avant le premier.
En résumé
histogramme(toile, tableau, couleur) dessine un diagramme en barres tout prêt.- Une barre : une position qui avance, une hauteur proportionnelle à la valeur, un
y égal à sol - hauteur. - Une courbe : des segments reliant chaque point au précédent.
- Couleurs, étiquettes et mise en valeur rendent un graphique lisible.