1. Tracer des courbes en Python

En tant qu'élève d'une filière scientifique, vous avez souvent à tracer des courbes en Maths, SPC, SVT...

Il existe un module Python qui permet également de tracer des courbes avec de nombreuses options de présentation; le but de ce chapitre et de l'utiliser, et en projet, de développer un traceur de courbe quelconque avec son interface graphique.

1.1. Le module Matplotlib

Attention, dans ce chapitre, bien utiliser la version de Python présente dans le répertoire Applis(v:) du réseau, et pas la version accessible depuis le menu Démarrer...

Pour découvrir ce module, rien ne vaut un premier petit exemple :

	import matplotlib.pyplot as plt

	x = [i for i in range(-2,2)]  # abscisses
	y = [i**2 for i in range(-2,2)]  # ordonnées

	plt.plot(x,y, 'r') # tracé de la courbe

	plt.xlabel('x')  # étiquettes des axes
	plt.ylabel('y')

	plt.show()# affichage		
			

Facile, non ? ;-)

La première ligne correspond à l'importation du module Matplotlib qui sert à tracer les courbes; tel qu'il est importé, il faudra, à chaque fois que l'on veut utiliser une de ses fonctions, la préfixer avec 'plt.'.

Viennent ensuite la définition de deux tableaux, de même taille bien sûr, qui contiennent les données pour les abscisses ( x ) et les données correspondantes pour les ordonnées ( y ) de la courbe.

La ligne suivante trace alors y = f(x); la dernière ligne affiche effectivement le résultat à l'écran.

Il est possible de tracer plusieurs courbes en même temps. De très nombreuses options de présentation sont disponibles : couleur des courbes, titres des axes, quadrillage,...Vous pouvez vous reporter à ce mémento pour découvrir quelques unes de ces options...

Enfin, vous remarquerez une barre de menu en haut de la fenêtre où se trace la courbe, menu qui permet de formater cette courbe mais également d 'enregistrer sous forme d'image le tracé.

Travail à faire

Vous avez manipulé des listes d'échantillons de sons dans un chapitre précédent...Pourquoi ne pas afficher la courbe correspondant à ce son ?

Vous utiliserez pour cela n'importe lequel des sons dont vous disposez, dont vous récupérerez la liste des échantillons, et vous ferez tracer à Matplotlib la courbe du signal sonore.

En abscisses on trouvera le temps ( en s ) et en ordonnée la valeur des échantillons ( on rappelle que cette valeur est comprise entre - 32 767 et + 32 767 ). Réfléchissez bien à la manière de créer la liste des valeurs à utiliser pour les abscisses...

N'hésitez pas à utiliser les options de présentation pour faire afficher une "belle" courbe...

1.2. Un module bien utile pour faire des maths...

Nous allons également utiliser dans ce chapitre un module plus pratique pour manipuler des listes de données : le module Numpy.

Il permet en effet de créer beaucoup plus simplement des listes de données; voyez cet exemple :

	import matplotlib.pyplot as plt
	import numpy as np
	
	x = np.arange(0,0.6,0.01) # liste des valeurs des abscisses
	y = np.cos(10*np.pi*x) # liste des valeurs des ordonnées, fonction de la liste précédente !
		
	plt.plot(x, y, 'b')
		
	plt.xlabel('x')
	plt.ylabel('y')
	
	plt.show()
			

Le module s'importe avec la deuxième ligne; là-aussi, on pensera à préfixer les fonctions de Numpy avec 'np.'.

La fonction np.arange() permet de créer facilement une liste de valeurs; sa syntaxe est la suivante :

liste = np.arange(valeur de début, valeur de fin, pas de variation)					
			

La ligne suivante montre alors la puissance de Numpy : pour créer une liste ( ici y ) dont les valeurs sont fonction de celles d'une autre ( ici x ), il suffit d'utiliser le nom de cette dernière dans une expression de fonction qui ressemble beaucoup à ce que l'on écrirait "naturellement" en Maths ( il s'agit ici de la fonction cosinus ).

Travail à faire

A vous d'utiliser les fonctions de Matplotlib et de Numpy pour tracer sur le même graphique les courbes représentatives des fonctions suivantes, que l'on trouve dans le phénomène physique appelé modulation d'amplitude :

'π' correspond à la lettre grecque pi; en syntaxe Numpy : np.pi.

Une légende devra permettre de distinguer les trois courbes; vous essayerez de respecter les options de présentation correspondant à la figure ci-dessous...