Livre_silo 30 août 2013 16:32 Page 232
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
232
Informatique pour tous
EN PRATIQUE Dans les versions Python 2.x
Attention, on se souvient qu’en Python 2.x, si k est un entier, alors k/10 va renvoyer le
quotient dans la division euclidienne. D’où l’utilisation de k/10. et non k/10 si on veut que
le code soit correctement interprété en Python 2.
9.3.2 Représentation de graphes avec plot
Pour représenter une solution, on va utiliser la commande plot de la bibliothèque matplotlib.pyplot. On suppose avoir chargé cette bibliothèque via
import matplotlib.pyplot as pl, ce qui évite d’avoir à taper tout le préfixe à chaque
fois. On suppose de même que numpy a été chargé via import numpy as np. L’utilisation de
base de plot est : plot(x,y), où x et y sont des tableaux d’abscisses et d’ordonnées. Par
exemple, pour représenter le graphe de t → e
t sin t sur [−π, π], on commence par créer le
tableau des abscisses ; ensuite, on crée le tableau des ordonnées en appliquant la fonction f
préalablement définie à chaque élément de x. Pour cela, on va appliquer directement f à
un tableau, ce qui produit le tableau des images.
def f(t):
return np.sin(5*t) * np.exp(t)
x = np.linspace(-np.pi, np.pi, 100)
y = f(x)
Appliquer directement une fonction à un tableau est assez crispant au début, mais on s’y
habitue ! Cela dit, toutes les fonctions ne peuvent pas être appliquées à des tableaux. Par
exemple, si la fonction sin utilisée avait été extraite de la bibliothèque math, on n’aurait
pas pu appliquer f à x. Il y a alors deux possibilités : on utilise la fonction map (solution
naturelle pour l’informaticien) avec y = map(f, x) ou bien on vectorialise f pour en faire une
fonction applicable à un tableau :
fv = np.vectorize(f)
y = fv(x)
On peut alors représenter le graphe : pl.plot(x, y). Le résultat est très décevant !
In [12]: pl.plot(x, y)
Out[12]: []
Le graphe a effectivement été créé... mais pas affiché ! Pour le voir dans une fenêtre, on
utilise pl.show(). Pour obtenir la figure 9.8, quelques décorations optionnelles ont été ajoutées : une grille, un titre, un nom pour les axes, ainsi que le tracé des axes, qui ne se fait
pas par défaut. On peut observer le code complet au programme 8 ci-après.
Signalons enfin que la gestion de l’affichage, via pl.show(), est dépendante de l’environnement (Spyder, Idle...), ce qui est assez pénible. Une façon fiable d’accéder aux graphiques
produits consiste à les sauvegarder (au format de son choix) via pl.savefig('le-nom.pdf').
Précédent

- 245/402

Suivant