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.
# 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.
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).
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 :
Le graphique obtenu est très simple. On dispose de beaucoup d'options pour l'améliorer.
linewidth du traitUn 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.
On se donne une liste de points de coordonnées (x,y). On souhaite les afficher.
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 :
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()
xs correspond aux positions x des barres,hs sont les hauteurs des barreswidth est la largeur des barrescolor est une couleur donnée ici en RGBedgecolor est la couleur des bordslinewidth est l'épaisseur des bordsimport 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()
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.