Table des matières
Module Matplotlib.pyplot
Le module Matplotlib est un très gros module de Python qui se subdivise en sous-modules. Celui qui nous intéresse ici est matplotlib.pyplot.
On trouve dans la référence du module un grand nombre d'exemple qui donnent une idée de ce qui est possible. Vous pouvez constater que matplotlib permet de faire de très beaux graphiques.
Import du module
# ceci suffit : import matplotlib.pyplot # mais on préfère : import matplotlib.pyplot as plt
Avec la première version d'import, on importe bien le module, mais on sera obligé d'écrire matplotlib.pyplot à chaque fois que l'on aura besoin d'une fonction du module. C'est long et on préfère éviter.
Avec la deuxième version, on définit un alias avec le mot clé as. Ainsi, dans la suite du programme, au lieu d'écrire matplotlib.pyplot, il suffira d'écrire plt ce qui est beaucoup plus simple.
Courbes
La fonction de base est plot ce qui signifie tracer.
Il s'agit de tracer une courbe formée de segments reliant des points dans un repère 2D. Ces points ont des coordonnées (x,y).
utilisation de base
On doit fournir la liste des x et la liste des y. Par exemple, si je veux afficher la courbe passant par les points de coordonnées (4,8), (10,2), (15,9) je fais :
Amélioration du résultat
Le graphique obtenu est très simple. On dispose de beaucoup d'options pour l'améliorer.
- on peut ajouter une 'label' qui permet d'ajouter un nom à la courbe pour faire une légende
- on peut préciser une épaisseur :
linewidthdu trait - on peut préciser une couleur : 'b' pour blue, 'r' pour red, …
- …
Un exemple :
import matplotlib.pyplot as plt
xs = [4, 10, 15]
ys = [8, 2, 9]
plt.plot(xs, ys, 'r', linewidth=2, label='ma courbe')
plt.legend() # affiche la légende
plt.xlim(0, 20) # indique les limites de x
plt.ylim(0, 20) # indique les limites de y
plt.title("mon beau graphique") # ajoute un titre au graphique
plt.xlabel("l'axe x") # étiquette sur l'axe x
plt.ylabel("l'axe y") # étiquette sur l'axe y
plt.show()
Il n'y a ici que 3 points alors on voit que la courbes est une séquence de 2 segments. Le tracé d'une courbe comme en mathématiques sera identique. Il y aura seulement beaucoup plus de points ce qui donnera un effet de courbe bien arrondie.
Nuages de points
On se donne une liste de points de coordonnées (x,y). On souhaite les afficher.
utilisation de base
On doit fournir la liste des x et la liste des y. Par exemple, si je veux afficher les points de coordonnées (4,8), (10,2), (15,9) je fais :
Amélioration
Là encore on peut utiliser legend, xlim, title… je ne reviens pas dessus.
On peut préciser la couleur des points et leur taille avec les attributs c (pour color) et s (pour size).
import matplotlib.pyplot as plt xs = [4, 10, 15] ys = [8, 2, 9] plt.scatter(xs, ys, c='r', s=50) plt.show()
Diagramme en bâtons
xscorrespond aux positions x des barres,hssont les hauteurs des barreswidthest la largeur des barrescolorest une couleur donnée ici en RGBedgecolorest la couleur des bordslinewidthest l'épaisseur des bords
import matplotlib.pyplot as plt xs = [4, 5, 7, 9, 10] hs = [8, 12, 9, 6, 5] plt.bar(xs, hs, width=1, color='#aaaaff', edgecolor='k', linewidth=3) plt.show()
Dans les fonctions plot, scatter ou bar, les arguments qui s'écrivent sous forme clé = valeur sont toujours optionnels.
On peut alterner les couleurs. Il suffit de donner deux couleurs au lieu d'une, dans une tableau.
On peut également attribuer une étiquette à chaque barre.
import matplotlib.pyplot as plt xs = [4, 5, 7, 9, 10] hs = [8, 12, 9, 6, 5] labels = ["A", "B", "C", "D", "E"] plt.bar(xs, hs, width=1, color=['#aaaaff', 'b'], edgecolor='k', linewidth=3) plt.xticks(xs, labels) plt.show()
Afficher une image
Considérons l'image france.png d'une carte de la France physique.
Pour l'afficher avec matplotlib, il nous faudra un module supplémentaire.
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
img = mpimg.imread('france.png')
plt.imshow(img)
plt.show()
Il est possible de cumuler plusieurs graphiques. Par exemple on pourrait ajouter des points à la carte.
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
img = mpimg.imread('france.png')
plt.imshow(img)
xs = [600, 800, 600]
ys = [400, 800,220]
tailles = [100, 80, 50]
plt.scatter(xs,ys,s=tailles)
plt.show()
Vous pouvez consulter cette fiche pour voir comment ajouter des points sur la carte à partir de coordonnées GPS.









