Dans un TP précédent, on a vu comment réaliser des graphiques en utilisant les méthodes de la bibliothèque pandas
.
Comme toujours avec python, il existe plusieurs manières de réaliser à peu près la même chose. Lors de ce TP, nous avions utilisé les fonctions graphiques du paquetage pandas qui elles-mêmes utilisent celles du paquetage matplotlib. Ce dernier est un paquetage très utile et de grande qualité, très riche en possibilités dont seule une petite partie peut être utilisée via pandas.
On peut utiliser directement matplotlib ce qui donne beaucoup plus de libertés et qui est très pratique lorsque l'on veut réaliser une figure contenant plusieurs graphiques.
Ce court TP a pour objectif de vous présenter cette autre manière de faire.
Pour réaliser un graphique, la méthode vue précédemment dans le TP graphiques consiste à faire une instruction telle que :
olives.plot.scatter (x = "linoleic", y = "palmitic", title = "Les olives dans le plan linoleic x palmitic", c = "region", cmap = "tab10") plt. show().
fig, ax = plt.subplots () ax. scatter (x = "linoleic", y = "palmitic", c = "region", data = olives, cmap = "tab10") ax. set_title ("Les olives dans le plan linoleic x palmitic") ax. set_xlabel ("Acide linoleic") ax. set_ylabel ("Acide palmitic") fig. show()
fig, ax = plt.subplots ()
. Ensuite, on ajoute des éléments à la figure avec des instructions du genre ax. xxx (...)
où xxx
indique l'élément de la figure dont on veut spécifier la valeur. On termine par fig. show()
pour afficher la figure. On peut aussi la mettre dans un fichier avec fig. savefig (nom-du-fichier)
.
s
:
fig, ax = plt.subplots () ax. scatter (x = "linoleic", y = "palmitic", c = "region", data = olives, cmap = "tab10", s = 3) ax. set_title ("Les olives dans le plan linoleic x palmitic") ax. set_xlabel ("Acide linoleic") ax. set_ylabel ("Acide palmitic") fig. show()
fig, ax = plt.subplots () ax. scatter (x = "linoleic", y = "palmitic", c = "blue", data = olives [olives.region == 1], cmap = "tab10", label = "Nord", s = 3) ax. scatter (x = "linoleic", y = "palmitic", c = "red", data = olives [olives.region == 2], cmap = "tab10", label = "Sardaigne", s = 3) ax. scatter (x = "linoleic", y = "palmitic", c = "green", data = olives [olives.region == 3], cmap = "tab10", label = "Sud", s = 3) ax. set_title ("Les olives dans le plan linoleic x palmitic") ax. set_xlabel ("Acide linoleic") ax. set_ylabel ("Acide palmitique") ax. legend () fig. show()
fig, ax = plt.subplots () ax. scatter (x = "linoleic", y = "palmitic", c = "blue", data = olives [olives.region == 1], cmap = "tab10", label = "Nord", marker = "s", s = 16) ax. scatter (x = "linoleic", y = "palmitic", c = "red", data = olives [olives.region == 2], cmap = "tab10", label = "Sardaigne", marker = "X", s = 16) ax. scatter (x = "linoleic", y = "palmitic", c = "green", data = olives [olives.region == 3], cmap = "tab10", label = "Sud", marker = "<", s = 16) ax. set_title ("Les olives dans le plan linoleic x palmitic") ax. set_xlabel ("Acide linoleic") ax. set_ylabel ("Acide palmitique") ax. legend () fig. show()
On peut créer une figure composée de plusieurs sous-figures. Dans ce cas, la figure principale est une matrice de sous-figures. Par exemple, on peut représenter les valeurs de chacun des 8 acides dans une figure composée de 2 lignes de 4 figures comme suit :
fig, ax = plt.subplots (2, 4) ax [0, 0]. scatter (x = "palmitic", y = "numero", data = olives, c = "region", s = 3) ax [0, 0]. set_title ("palmitic") ax [0, 1]. scatter (x = "palmitoleic", y = "numero", data = olives, c = "region", s = 3) ax [0, 1]. set_title ("palmitoleic") ax [0, 2]. scatter (x = "stearic", y = "numero", data = olives, c = "region", s = 3) ax [0, 2]. set_title ("stearic") ax [0, 3]. scatter (x = "oleic", y = "numero", data = olives, c = "region", s = 3) ax [0, 3]. set_title ("oleic") ax [1, 0]. scatter (x = "linoleic", y = "numero", data = olives, c = "region", s = 3) ax [1, 0]. set_title ("linoleic") ax [1, 1]. scatter (x = "linolenic", y = "numero", data = olives, c = "region", s = 3) ax [1, 1]. set_title ("linolenic") ax [1, 2]. scatter (x = "arachidic", y = "numero", data = olives, c = "region", s = 3) ax [1, 2]. set_title ("arachidic") ax [1, 3]. scatter (x = "eicosenoic", y = "numero", data = olives, c = "region", s = 3) ax [1, 3]. set_title ("eicosenoic") fig. show ()
attributs = list (olives) [3:11] fig, ax = plt.subplots (2, 4) for ligne in range (2): for colonne in range (4): ax [ligne, colonne]. scatter (x = attributs [ligne * 4 + colonne], y = "numero", data = olives, c = "region", s = 3) ax [ligne, colonne]. set_title (attributs [ligne * 4 + colonne]) fig. show ()
Les possibilités offertes par matplotlib
sont immenses. Consultez la documentation en ligne