Tracer une Courbe Simple

Introduction

matplotlib (matplolib.org) est une bibliothèque Python spécialisée dans le développement des graphiques à deux dimensions et à trois dimensions. On peut citer les fonctionnalités les plus utilisées :

• Simplicité extrême d'utilisation,

• Développement progressif et visualisation interactive des données,

• Expressions et texte en LaTeX,

• Contrôle accru des éléments graphiques,

• Exporter vers de nombreux formats, tels que PNG, PDF, SVG et EPS.

matplotlib est conçu pour reproduire autant que possible un environnement similaire à MATLAB en termes de vue graphique et de forme syntaxique. Cette approche s'est avérée fructueuse, car elle a su exploiter l'expérience du logiciel (MATLAB) qui est sur le marché depuis plusieurs années et qui est aujourd'hui largement répandu dans tous les milieux techniques et scientifiques professionnels.

matplotlib ressemble à une bibliothèque graphique qui permet de gérer par programme les éléments graphiques qui composent un graphique afin que l'affichage graphique puisse être contrôlé dans son intégralité. La possibilité de programmer la représentation graphique permet de gérer la reproductibilité de la représentation des données dans plusieurs environnements et en particulier lorsque vous apportez des modifications ou lorsque les données sont mises à jour.

pylab et pyplot

En général, pour tracer des graphiques, on utilise pylab ou pyplot. Mais quelle est la différence entre ces deux packages? pylab est un module installé avec matplotlib, tandis que pyplot est un module interne de matplotlib. Vous trouverez souvent des références à l'une ou l'autre approche.

>>> from pylab import *

ou

>>> import matplotlib.pyplot as plt

>>> import numpy as np

Pylab combine les fonctionnalités de pyplot avec les capacités de NumPy dans un seul espace de noms, et vous n'avez donc pas besoin d'importer NumPy séparément. De plus, si vous importez pylab, les fonctions pyplot et NumPy peuvent être appelées directement sans référence à un module (espace de noms), ce qui rend l'environnement plus similaire à MATLAB

>>> plot(x, y)

>>> array([1, 2, 3, 4])

Au lieu de

>>> plt.plot(x, y)

>>> np.array([1, 2, 3, 4])

Le module pyplot est une collection de fonctions qui permet d'utiliser matplotlib un peu comme MATLAB. Chaque fonction pyplot fonctionnera ou apportera des modifications à l'objet Figure, par exemple, la création de la figure elle-même, la création d'une zone de traçage, la représentation d'une ligne, la décoration du tracé avec une étiquette, etc.

Pyplot est également dynamique, car il suit l'état de la figure actuelle et sa zone de traçage. Les fonctions appelées agissent sur le chiffre courant.

Tracer des courbes 

Graphe avec une courbe simple

Commençons par l'un des graphiques les plus courants et les plus basiques que tout logiciel de traçage offre: les courbes. Soit le script plot.py :

import matplotlib.pyplot as plt

X = range(100)

Y = [value ** 2 for value in X]

plt.plot(X, Y)

plt.show()

Cela ouvrira une fenêtre comme indiqué dans la capture d'écran suivante:

La fenêtre montre la courbe Y = X ** 2 avec X dans la plage [0, 99].

  • La première ligne indique à Python que nous utilisons le module matplotlib.pyplot. Pour économiser sur le temps d’écriture, nous rendons le nom plt équivalent à matplotlib.pyplot.
  • La deuxième ligne crée une liste nommée X, avec toutes les valeurs entières de 0 à 99. La fonction de plage range est utilisée pour générer des nombres consécutifs. Vous pouvez exécuter l'interpréteur interactif Python et saisir la commande range(100). Cela affichera la liste de toutes les valeurs entières de 0 à 99.
  • La troisième ligne crée une liste nommée Y, avec toutes les valeurs de la liste X au carré. La liste Y contiendra les valeurs au carré de la liste X dans le même ordre. Donc Y contiendra 0, 1, 4, 9, 16, 25, etc.
  • La quatrième ligne trace une courbe, où les coordonnées x des points de la courbe sont données dans la liste X et les coordonnées y des points de la courbe sont données dans la liste Y. Notez que les noms des listes peuvent être tout ce que vous voulez.
  • La dernière ligne affiche un résultat, que vous verrez sur la fenêtre lors de l'exécution du script.

Graphe à plusieurs courbes

L'une des raisons pour lesquelles nous traçons des courbes est de comparer ces courbes. Correspondent-ils? Sont-ils corrélés? Un graphique peut aider à former un jugement rapide pour des investigations plus approfondies.

Montrons à la fois sin(x) et cos(x) dans l'intervalle [0, 2pi] comme suit:

import numpy as np

import matplotlib.pyplot as plt

X = np.linspace(0, 2 * np.pi, 100)

Ya = np.sin(X)

Yb = np.cos(X)

plt.plot(X, Ya)

plt.plot(X, Yb)

plt.show()

Le script précédent nous donnera le résultat suivant :

Les deux courbes apparaissent avec une couleur différente automatiquement captée par matplotlib.

Nous utilisons un appel de fonction plt.plot() pour une courbe; nous devons donc appeler deux fois plt.plot(). Cependant, nous devons encore appeler plt.show() une seule fois. Les fonctions appellent plt.plot(X, Ya) et plt.plot(X, Yb) peuvent être considérés comme des déclarations d'intentions. Nous voulons relier ces deux ensembles de points avec une courbe distincte pour chacun. matplotlib prendra simplement note de cette intention mais ne tracera rien encore. La courbe plt.show() indiquera que nous voulons tracer ce que nous avons décrit jusqu'à présent.

Tracer des courbes à partir d’un fichier de données

Comme expliqué précédemment, matplotlib ne gère que le traçage. Si vous souhaitez tracer des données stockées dans un fichier, vous devrez utiliser du code Python pour lire le fichier et extraire les données dont vous avez besoin.

Supposons que nous ayons des séries temporelles stockées dans un fichier texte simple nommé mes_donnees.txt comme suit:

0   0

1   1

2   4

3   9

4  16

5  25

6  36

Nous allons utiliser NumPy pour lire les données à partir d’un fichier puisque NumPy et très souvent utiliser avec matplotlib :

import numpy as np

import matplotlib.pyplot as plt

data = np.loadtxt('mes_donnees.txt')

plt.plot(data[:,0], data[:,1])

plt.show()

Le point suivant décrit le script précédent:

  • La fonction numpy.loadtxt() lit un fichier texte et renvoie un tableau 2D. Avec NumPy, les tableaux 2D ne sont pas une liste de listes, ce sont de vraies matrices à part entière.
  • Les données variables sont un tableau NumPy 2D, ce qui nous donne l'avantage de pouvoir manipuler les lignes et les colonnes d'une matrice comme un tableau 1D. En effet, dans la ligne plt.plot(data[:, 0], data[:, 1]), nous donnons la première colonne de données en coordonnées x et la deuxième colonne de données en coordonnées y. Cette notation est spécifique à NumPy.

 

Modifié le: lundi 11 mai 2020, 12:17