Représentation graphique

publicité
INFO
I
Représentation graphique
TP 7
Configuration du shell
Ce TP nécessite une configuration graphique de la fenêtre de commandes intéractives. On commencera donc
par vérifier que cette configuration est correcte à l’ouverture de Pyzo :
Python I Edit shell configurations... I gui I PySide ou Tk doivent être sélectionnés.
II
Représentation de segments de droites
Pour effectuer une représentation graphique avec Python, on utilisera le répertoire pyplot de la bibliothèque
matplotlib.
Nuage de points - Ligne brisée
Si X et Y sont deux objets de type range ou list (ou encore array...) de même longueur,
ã l’instruction scatter(X,Y) produit l’affichage du nuage de points de coordonnées (X(i), Y (i)).
ã l’instruction plot(X,Y) produit l’affichage de la ligne brisée obtenue en reliant de manière consécutive
les points de coordonnées (X(i), Y (i)).
Exemple 1.
import matplotlib.pyplot as mp
X,Y = [0,1,2,3,4],[0,1,0,1,0]
mp.scatter(X,Y)
import matplotlib.pyplot as mp
X,Y = [0,1,2,3,4],[0,1,0,1,0]
mp.plot(X,Y)
Selon la version de Pyzo, il faut parfois terminer ces lignes avec la commande mp.show().
Remarque.
ã On peut superposer plusieurs courbes sur un même graphe :
X1,Y1 = [0,1,2,3,4],[0,1,0,1,0]
X2,Y2 = [0,4],[0,1]
## Méthode 1
mp.plot(X1,Y1)
mp.plot(X2,Y2)
## Méthode 2
p1=mp.plot(X1,Y1)
p2=mp.plot(X2,Y2)
mp.show()
## Méthode 3
mp.plot(X1,Y1,X2,Y2)
ã On peut agrémenter les graphes d’options facultatives telles que la couleur, les symboles des points et
les styles de trait :
# courbe avec de longs tirets verts, les points étant des petits disques
plot(X,Y,’o’,color=’g’,linestyle=’–’)
La couleur peut être ’y’,’r’,’g’,’b’... Ou encore définie en codage [r,g,b] (trois nombres de [0; 1]
pour les niveaux de rouge, vert, bleu).
On consultera l’aide de Pyzo pour plus de détails : Help I Pyzo Website
ã La fenêtre graphique obtenue est en partie intéractive : on peut zoomer et se déplacer manuellement.
ã L’instruction savefig(’nom.png’) permet de sauvegarder la figure créée sous le nom nom et l’extension
png.
Attention : pour cette opération, on veillera à définir un espace de travail adéquat pour Pyzo, par exemple
votre répertoire « TP7 » !
Exercice 1. Créer les deux lignes brisées précédentes (X1, Y1, X2, Y2) et sauvegarder la figure obtenue sous
le nom fig_essai et sous l’extension pdf.
1/4
j.verliat.free.fr
Remarque. De nombreuses options pour les graphes sont disponibles. On citera surtout :
ã L’instruction clf() permet d’effacer la fenêtre de graphe.
ã L’instruction axis([min_x,max_x,min_y,max_y]) permet de positionner la fénêtre de visualisation de
la figure, les abscisses étant délimitées par min_x et max_x et les ordonnées par min_y et max_y.
axis(’equal’) et axis(’scaled’) forcent le repère à être orthonormé.
ã et bien d’autres encore : grid, title... Consulter l’aide de Pyzo.
Exercice 2. On considère le carré Sq1 de sommets A1 (1; 1), B1 (−1; 1), C1 (−1; −1) et D1 (1; −1)
1. Représenter Sq1 et ajuster la fenêtre de visualisation.
2. Écrire une fonction affine qui, étant donnés deux flottants a et b, renvoie (a+9*b)/10.
3. Fixons un entier naturel non nul n. À partir du carré Sq1 , on construit :
ã le carré Sq2 dont les sommets sont A2 =
1
9
D2 = 10
D1 + 10
A1 .
1
10 A1
+
9
10 B1 ,
B2 =
1
10 B1
+
9
10 C1 ,
C2 =
1
10 C1
+
9
10 D1 ,
ã le carré Sq3 sur le même procédé, appliqué à Sq2 ;
ã et ainsi de suite, n fois.
(a) Écrire une fonction qui, étant données deux listes X et Y représentant respectivement les abscisses
et les ordonnées des sommets d’un carré, renvoie les listes des abscisses et ordonnées du carré obtenu
par application du procédé précédent au carré donné.
(b) Écrire un script qui affiche les carrés successifs Sq1 , Sq2 , Sq3 , . . . , Sqn sur la figure précédente.
III
Affichage dynamique
Affichage dynamique
On peut forcer Python à faire afficher des séquences d’images à l’aide de l’instruction pause du répertoire
pyplot de la bibliothèque matplotlib.
Exemple 2. Imaginons que C1 et C2 désignent les carrés de l’exercice 2.
mp.plot(C1)
mp.pause(1)
mp.plot(C2) # affiche C2 un peu plus tard que C1...
Exercice 3. Reprendre l’exercice 2 avec un affichage dynamique.
IV
Représentation de la courbe d’une fonction
Représentation graphique d’une fonction
Pour représenter une fonction (mathématique) f sur un intervalle [a; b], a, b ∈ R, a < b :
ã on fixe un entier naturel non nul n et on définit un pas h =
b−a
n
;
ã on construit la liste X = [a; a + h; a + 2h; . . . ; a + (n − 1)h; b] (on dit que l’on discrétise l’intervalle
[a; b]) ;
ã on construit la liste Y des images par f de chaque terme de X.
On construit ensuite la représentation graphique de (X,Y).
Exercice 4. Représenter sur un même graphique les fonctions sinus et cosinus sur l’intervalle [−2π; 2π].
Remarque. Les tableaux de la bibliothèque numpy se prêtent particulièrement à la représentation graphique :
2/4
Représentation graphique
ã la fonction linspace permet de « discrétiser » un intervalle [a; b] ; elle renvoie un tableau à une ligne.
ã les principales fonctions mathématiques existent dans Python et sont construites de telle manière qu’elles
s’appliquent terme à terme.
Exemple 3. On peut représenter la fonction exponentielle sur [0; 1] :
import numpy as np
n=50
X=np.linspace(0,1,n)
Y=np.exp(X)
mp.plot(X,Y)
Exercice 5. Reprendre l’exercice précédent.
Exercice 6. À faire une fois le TP terminé.
Représenter la fonction tangente sur l’intervalle [−2π; 2π].
On prendra des précautions par rapport au domaine de définition...
V
Figures géométriques
Dessiner un rectangle. Python permet de provoquer l’affichage d’un rectangle.
ax=mp.axes()
rec=mp.Rectangle((1,2),3,4,45,facecolor=’red’,edgecolor=’black’,fill=False)
ax.add_patch(rec)
Cette instruction provoque l’affichage d’un rectangle :
ã dont le sommet « en bas à gauche » a pour coordonnées (1, 2) ;
ã dont la largeur est 3 et la hauteur est 4 ;
ã image par la rotation de centre (1, 2) et d’angle 45°( !) dans le sens direct (argument optionnel et dépend
des version de Python) ;
ã dont la couleur intérieure est rouge (argument optionnel) ;
ã dont la couleur du bord est noir (argument optionnel) ;
ã qui n’est pas rempli (ou qui est rempli si fill=True, argument optionnel).
Remarque. Python permet en fait de provoquer l’affichage d’autres types de figures géométriques : voir l’aide
de Pyzo.
Exercice 7. Représenter un carré qui tourne sur lui-même.
Exercice 8. On se donne quatre points A, B, C et D qui sont les quatre sommets d’un carré.
Écrire une fonction récursive appelée Brocoli qui prend ces quatre points (quatre couples de flottants) en
argument, et un argument n entier naturel, et qui effectue les taches suivantes :
ã d’abord, la fonction trace le carré de sommet A, B, C, D ;
ã ensuite, si n > 0, la fonction définit les points E, F , G, I, H déduits de A, B, C, D pour former la figure
suivante et appelle Brocoli(D,E,G,F,n-1) et Brocoli(E,C,I,H,n-1).
On pourra préalablement comprendre et utiliser les fonctions du fichier fonctions_mysteres mis sur le réseau.
3/4
Téléchargement