Créer des graphiques avec matplotlib
On va utiliser la bibliothèque matplotlib pour tracer des graphiques. Il s'agit d'une bibliothèque de Python déjà installés dans EduPython.
Cette bibliothèque contient plusieurs modules contenant chacun plusieurs fonctions
Pour créer un graphique, on doit définir deux listes de nombres : l'une contenant les abscisses et l'autre les ordonnées
Exemple
Pour tracer la courbe de la fonction \(f : x \)→ \(x^2-4\) sur l'intervalle [-4 ; 4] :
- On définit la fonction \( f \):
# -*- coding: utf-8 -*- def f(x): return x**2-4 - On crée ensuite une liste de 50 valeurs allant de -4 à 4 à l'aide de la bibliothèque
numpyet la liste ly des images des éléments de la liste lx comme suit :# -*- coding: utf-8 -*- import numpy as np lx=np.linspace(-4,4,50) ly=f(lx) -
A partir de ces deux listes, on peut créer un graphique de f :
# -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt # importation du module matplotlib.pyplot sous l'alias plt def f(x): return x**2-4 lx=np.linspace(-4,4,50) ly=f(lx) plt.plot(lx,ly) # A partir des deux listes on crée le graphique plt.show() # pour afficher le graphique
Remarque
le rôle de l'instruction plt.plot(lx,ly) est de relier les points d'abscisses et d'ordonnées les éléments
des listes respectives lx et ly, situés à la même position, par des segments
Repérage des points sur le graphique
- Si on veut afficher clairement les points qui ont permis de créer le graphique, on remplace l'instruction
plt.plot(lx,ly)parplt.plot(lx,ly,marker='o') - Si on veut placer les points sans les relier, on remplace
plt.plot(lx,ly)parplt.plot(lx,ly,'o')on obtient la figure :
- Si on veut tracer la courbe en pointillés en vert on remplace l'instruction
plt.plot(lx,ly)parplt.plot(lx,ly,'b--')
Remarque
Voici un programme en Python pour tracer la courbe de f avec des options supplémentaires
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
def f(x):
return x**2 - 4
lx=np.arange(-4,4.1,0.1) # liste de nombres allant de -4 à 4 avec un pas h = 0.1
plt.plot(lx,f(lx))
plt.xlabel("x")
plt.ylabel("f(x)")
plt.title('Courbe de f : y = x² - 4')
plt.show()
On obtient le graphique suivant :
Remarque
Si on souhaite changer un des quatre valeurs xmin et xmax sur l'axe des abscisses, ymin et ymax sur l'axe des ordonnées, par exemple on écrit :
plt.axis(xmin=0,ymin=0)
Si on veut modifier les quatre valeurs, on écrit plt.axis([-6,6,-7,16]), la fonction fixera l'intervalle des abscisses à [-6 ; 6]
et celui des ordonnées à [-7 ; 16].
On obtient le graphique suivant :
Placer un point dans un graphique
Voici un programme pour placer le point M(3,2) du plan dans un repère
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
plt.plot(3,2,'gx')
plt.xlabel("Abscisses")
plt.ylabel("Ordonnées")
plt.axis([-1,4,-2,5])
plt.title('Placer un point')
plt.show()
Vous avez remarqué que quant on affiche une figure avec la fonction plt.show()
on ne peut plus utilisr la console tant que la fenêtre du graphique n'est pas fermée et après la ferméture du fichier on perd la courbe tracée,
pour pouvoir conserver ce graphique, on peut le sauvegarder en utilisant la fonction plt.savefig().
elle enregistre votre tracé sous la forme d'une image dont vous pouvez vous servir dans vos cours. On peut imposer le format d'images qu'on veut
(PNG, JPG, ...). En prenant comme argument le nom à donner au fichier avec le format choisi, par exemple figure.png.
Attention :
- Si vous écrivez vos instructions dans un programme dans la zone de programmmes d'EduPython. Après son exécution, Python sauvegarde votre fichier
dans le même repertoire où votre programme est enregistré, si vous voulez le sauvegarder dans un autre repertoire, vous devez décrire le chemin,
par exemple
plt.savefig('Images/figure.png')le fichier figure.jpg sera sauvegardé dans le repertoire Images, qui existe déjà, situé dans le même dossier que votre programme. - Si toutes les instructions sont saisies dans la console, votre fichier image sera sauvegardé par défaut dans le dossier où vous avez installé votre distribution EduPython.
Remarque
Dans le programme ci-dessous, l'instruction ly=f(lx)) ne fonctionne pas pour une fonction
définie, par exemple, par morceaux
Pour éviter ce problème, on peut définir la liste des images ly de la liste lx des abscisses autrement :
ly=[f(x) for x in lx]
Voici un programme qui permet de tracer la courbe de la fonction valeur absolue sur l'intervalle [-4 ; 4]
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
def f(x):
if x <0 : return -x
else : return x
lx=np.arange(-4,4,0.1)
ly=[f(x) for x in lx]
plt.plot(lx,ly)
plt.show()
On obtient la figure suivante :
Diagramme en barres
Exemple
On a noté les prix d'un article (en €) dans divers magasins voici les données :
| Prix | 69 | 70 | 71 | 72 | 73 | 74 |
| Nombre de magasins | 2 | 16 | 11 | 8 | 7 | 6 |
Représenter ces résultats en diagramme en barres
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
def diagramme(L_valeurs,L_effectifs):
" Création d'un diagramme en barres"
plt.grid ( True )
plt.xlabel ("Les prix")
plt.ylabel (" Les effectifs")
plt.bar( L_valeurs , L_effectifs,color='r') # création d'un diagramme en barres
plt.show ()
L_valeurs=[69,70,71,72,73,74]
L_effectifs = [2, 16, 11, 8, 7, 6]
diagramme(L_valeurs,L_effectifs)
On obtient le diagramme en barres suivant :