Lycée Roland Garros BCPST 1ère année Mathématiques 2014 - 2015 TP 5 . Les graphiques avec Python Python permet de produire tous les types de graphiques dont vous pouvez avoir besoin. Nous allons voir dans ce TP comment procéder pour les types de graphiques les plus courants. , Les commandes qui permettent de le faire font partie de la librairiematplotlib 1 plus particulièrement de la sous-librairie matplotlib.pyplot . Par conséquent, créez un nouveau script TPgraphiques.py et commencez par écrire dans la première ligne : >>> import matplotlib.pyplot as plt Ainsi vous êtes autorisé à utiliser n'importe quelle commande de matplotlib.pyplot, et pour le faire vous devrez obligatoirement taper le suxe plt. La liste de fonctionnalités exposées ici est loin d'être exhaustive, plein d'exemples sur la page web de matplotlib : http ://matplotlib.org/gallery.html 1 La commande plot C'est la commande la plus importante pour tracer des graphiques ! Elle prend en argument deux listes de même taille. La commande plt.plot([x_1,x_2,...x_n],[y_1,y_2,...y_n]) produit l'achage d'une ligne brisée reliant les points (x1 , y1 ), (x2 , y2 ), . . . , (xn , yn ). En clair la première liste est celle des abscisses et la seconde celle des ordonnées. Exemple. Faites : >>> plt.plot([1,3,-1,4,8],[2,5,4,1,-3]) (tous les exemples de ce TP sont à tester dans la fenêtre principale, pas dans l'éditeur) 1. matplotlib = math plot library pyplot = python plot = librairie pour les graphiques mathématiques 1 Si l'on ne rentre qu'une seule liste [a1 , a2 , . . . , an ] au lieu de deux, Python considèrera par défaut que la première liste est la liste [1, 2, 3, . . . , n], de sorte que le tracé représentera la suite (an ). Exemple. Fermez la fenêtre graphique puis faites : >>> plt.plot([1,3,-1,0,1,2,1,-2,1]) Si vous ne fermez pas la fenêtre graphique entre deux plot, les deux graphiques seront superposés et munis de couleurs diérentes. Exemple. Fermez la fenêtre graphique puis faites : >>> plt.plot([1,2,3,0,4]) >>> plt.plot([1,3,2,0,1],[5,0,5,3,4]) 2 Tracé d'une fonction Une des utilités principales de plot est de permettre le tracé de la courbe d'une fonction. Soit f une fonction. Pour tracer le graphe de f sur un intervalle [a; b] il faut tracer les points (x, f (x)) avec x qui prend des valeurs entre a et b, susamment proches pour que l'oeil ne remarque pas la discontinuité sur l'écran (c'est-à-dire plus resserrés que la limite imposée par la résolution de l'écran, disons que 10000 points susent amplement). Le moyen le plus simple de créer une telle liste est d'utiliser la commande linspace de la librairie numpy : Exemple. Faites : >>> import numpy as np >>> X=np.linspace(2,5,11) >>> print(X) Faites varier les valeurs pour comprendre ce que fait exactement linspace ! Remarque : X n'est pas une variable de type list : >>> type(X) X est du type array (tableau en français), ça ressemble à une liste mais ce n'en est pas une. C'est beaucoup plus pratique qu'une liste car avec un tableau on peut faire directement les opérations élément par élément (contrairement aux listes) : >>> >>> >>> >>> 2*X X+1 X**2 np.cos(X) 2 Exemple. Si on veut tracer cos sur [0; 13] on fera : >>> X=np.linspace(0,13,10000) >>> Y=np.cos(X) . . . . . . . . . . . . . . . . . . . . on utilise la commande exp de numpy >>> plt.plot(X,Y) III Faites vos propres expériences ! Exercice 1 Tracer la fonction x 7→ sin(1/x) pour x ∈ [0, 01; 5] Exercice 2 Tracer sur un même graphique, la fonction f = exp et les fonc- tions f0 : x 7→ 1, f1 : x 7→ 1 + x, f2 : x 7→ 1 + x + x2 /2, f3 : x 7→ 1 + x + x2 /2 + x3 /6 Zoomez autour de x = 0 ! Que constatez-vous ? 3 Paramètres d'achage pour la commande plot De nombreux paramètres d'achage peuvent être modiés pour customiser votre graphique. 3.1 Nuage de points On peut choisir de représenter des points isolés plutôt qu'une ligne brisée (notamment quand on souhaite représenter une suite). Les points sont alors représentés par des marqueurs dont on peut choisir la forme. Exemple. Faites : >>> C=[np.cos(k) for k in range(1,50)] >>> plt.plot(C,'.') Fermez la fenêtre puis faites : >>> S=[sin(k) for k in range(1,50)] >>> plt.plot(C,S,'*') Essayez les marqueurs : 'o', 'v', '4', '+', 'h' . . . il en existe bien d'autres ! 3.2 Couleur, épaisseur On peut aussi gérer, pour une ligne brisée, la couleur et l'épaisseur du trait : Exemple. Faites : >>> L=[k**2 for k in range(1,5)] >>> plt.plot(L,linewidth=5) 3 Fermez la fenêtre puis faites : >>> plt.plot(L,color='r') Fermez la fenêtre puis faites : >>> plt.plot(L,color='g') Autres couleurs prédénies : b, c, m, y, k, w. Pour ceux qui connaissent le codage des couleurs RGB (et qui aiment le ranement), on peut choisir précisément n'importe quelle couleur en précisant le triplet RGB. Fermez la fenêtre puis faites : >>> plt.plot(L,color=(0.2,0.4,0.6)) 3.3 Autres On peut faire apparaître une grille de graduation en faisant : >>> plt.grid(True) On peut ajouter un titre en haut du graphique ainsi que des légendes aux axes : >>> plt.title("MON BEAU GRAPHIQUE\n QU'IL EST BEAU") >>> plt.xlabel("Axe des abcisses") >>> plt.ylabel("Axe des ordonnées") On peut également placer plusieurs graphiques sur une même fenêtre avec la commande subplot (en français : sous-graphique ). Dans subplot on précise 3 chires : le nombre de lignes, le nombre de colonnes et le numéro de la case qu'on ouvre. >>> >>> >>> >>> >>> >>> >>> >>> >>> X=np.linspace(0,1,1000) plt.subplot(2,2,1) plt.plot(X,X) plt.subplot(2,2,2) plt.plot(X,X**2) plt.subplot(2,2,3) plt.plot(X,X**3) plt.subplot(2,2,4) plt.plot(X,X**4) On peut écrire dans la fenêtre graphique avec la commande text. Il faut préciser les coordonnées où l'on veut écrire et le texte à écrire. Fermer la fenêtre puis faites : >>> plt.text(0.2,0.5,'on peut meme faire un $\mu$ ou une $\int f(x)dx$') On peut même faire une légende bien stylée : >>> x=np.linspace(-1,1,100) 4 >>> >>> >>> >>> p1,=plt.plot(x,x**2,'g') p2,=plt.plot(x,x**3,'b') p3,=plt.plot(x,np.exp(x),'o') plt.legend([p1, p2,p3], ["carré", "cube","exponentielle"]) 4 Histogrammes 4.1 La commande hist L'histogramme est un outil représentatif couramment utilisé en statistique. Il permet de visualiser la répartition d'une série de valeurs dans des intervalles donnés. On peut les produire avec la commande hist en Python Commençons par construire aléatoirement un tableau contenant plein de nombres (on anticipe un peu. . . pas besoin de connaître cette commande pour l'instant) : >>> A=np.random.normal (0,1,1000) >>> print(A) On commence par découper l'intervalle [−5; 5] en 20 sous-intervalles : >>> subdivision=np.linspace(-5,5,21) >>> plt.hist(A,subdivision) Alternative : on se contente de donner le nombre N d'intervalles, et Python découpe automatiquement [a; b] en N intervalles de largeurs égales, a et b étant les valeurs minimale/maximale dans A. >>> plt.hist(A,bins=50) 4.2 La commande bar Cette commande produit un diagramme en bâtons mais dont les hauteurs sont directement spéciées (contrairement à hist où celles-ci étaient calculées à partir des fréquences d'apparition dans la série A). Voici la répartition des mois de naissance de la population française de 1976 (source : INSEE). Jan Fév Mar Avr Mai Jui 4593426 4223840 4699022 4487830 4751820 4435032 Jui Aoû Sep Oct Nov Déc 4540628 4382234 4223840 4171042 4065446 4223840 Si l'on veut représenter cette répartition, on fera : 5 >>> hauteurs=[4593426,4223840,. . . ] . . . . . . bon courage pour la saisie :-) >>> plt.bar(range(1,13), hauteurs) Écrire une fonction coeff_binom(N) sous forme N N qui représente N N de diagramme en bâtons les nombres 0 , 1 , 2 , . . . , N . Exercice 3 5 Représenter un tableau de nombres Le type array rencontré plus haut permet notamment de manipuler de vrais tableaux de nombres (avec lignes et colonnes). On a souvent besoin de représenter de tels tableaux par un code couleur. Un nombre du tableau correspond à une case dans une grille. Créons un tableau de chires au hasard pour les besoins de l'exemple (pas besoin de retenir cette méthode pour l'instant, on fait ça juste pour construire un exemple) >>> A=np.random.randint(0,3,(10,10)) >>> print(A) On représente ce tableau grâce à la commande matshow : >>> plt.matshow(A) Remarque : bien sûr, possibilité de changer le code couleur ! 6 Activité 1 Créer une fonction monomes(N) qui représente les fonctions x 7→ xk pour k = 1, . . . , N , avec une légende. Par exemple, voici ce que doit produire l'instruction monomes(7) (les courbes ont des couleurs diérentes) : 6 7 Activité 2 Soit f : I → I avec I intervalle de R, et la suite récurrente dénie par ( un+1 = f (un ), u0 ∈ R Créez une fonction recurrente(f,u0,N,a,b) qui produit la représentation en escalier de la suite (un ). Plus précisément cette fonction devra : • • • • • tracer le graphe de f entre a et b, tracer la bissectrice d'équation y = x, tracer les deux axes (Ox) et (Oy) en noir, acher une grille de graduation, tracer, avec une ligne continue et des marqueurs (cf. ci-dessous), l'escalier représentant la suite (un ). Par exemple, voici ce que doit produire l'instruction recurrente(np.cos,2,5,-np.pi,np.pi) (np.pi est simplement le nombre π , qui fait partie de la librairie numpy). 7
© Copyright 2024 ExpyDoc