INFO
Représentation graphique
TP 7
I 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 IEdit shell configurations... Igui IPySide 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.
Si Xet Ysont 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)).
Nuage de points - Ligne brisée
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 IPyzo 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é Sq1de sommets A1(1; 1),B1(1; 1),C1(1; 1) et D1(1; 1)
1. Représenter Sq1et ajuster la fenêtre de visualisation.
2. Écrire une fonction affine qui, étant donnés deux flottants aet b, renvoie (a+9*b)/10.
3. Fixons un entier naturel non nul n. À partir du carré Sq1, on construit :
ãle carré Sq2dont les sommets sont A2=1
10 A1+9
10 B1,B2=1
10 B1+9
10 C1,C2=1
10 C1+9
10 D1,
D2=1
10 D1+9
10 A1.
ãle carré Sq3sur le même procédé, appliqué à Sq2;
ãet ainsi de suite, nfois.
(a) Écrire une fonction qui, étant données deux listes Xet Yrepré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, . . . , Sqnsur la figure précédente.
III 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.
Affichage dynamique
Exemple 2. Imaginons que C1et C2dé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
Pour représenter une fonction (mathématique) fsur un intervalle [a;b],a, b R,a<b:
ãon fixe un entier naturel non nul net on définit un pas h=ba
n;
ãon construit la liste X= [a;a+h;a+ 2h;. . . ;a+ (n1)h;b](on dit que l’on discrétise l’intervalle
[a;b]) ;
ãon construit la liste Ydes images par fde chaque terme de X.
On construit ensuite la représentation graphique de (X,Y).
Représentation graphique d’une fonction
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 3et 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,Cet Dqui 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 nentier 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,Hdéduits de A,B,C,Dpour 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
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !