Outils pour utilisateurs

Outils du site


python:tracer_un_graphique

Tracer un graphique


La bibliothèque matplotlib

Pour tracer un graphique nous utiliserons la bibliothèque matplotlib et plus exactement une sous-module de matplotlib qui se nomme matplolib.pyplot.

La première chose à faire est donc d'importer cette bibliothèque :

import matplotlib.pyplot as plt  # importation de la bibliothèque matplotlib.pyplot sous le nom plt

Toutes les fonctions seront appelées en les faisant précéder de plt.

Exemples :

  • plt.axis() # trace les axes du graphique
  • plt.show() # Affiche le graphique


Tracer un graphique à partir de mesures expérimentales

Par exemple, pour étudier la loi d'Ohm, on mesure la tension U aux bornes d'une résistance en fonction de l'intensité I du courant traversant cette résistance. On obtient les mesures suivantes :


Intensité I (mA) 0,5 1,0 2,0 4,0 6,0
Tension U (V) 1,0 2,2 4,5 8,8 13,2

On souhaite tracer la caractéristique U = f(I).

1) On crée deux listes, une pour les intensités en abscisse et une pour les tensions en ordonnée.

U = [1.0, 2.2, 4.5, 8.8, 13.2]
I = [0.5, 1.0, 2.0, 4.0, 6.0 ]

2) On crée les axes du graphique avec la fonction plt.axis() dont la syntaxe est : plt.axis([Xmin, Xmax, Ymin, Ymax])

  • Xmin et Xmax sont les valeurs minimales et maximales de l'axe des abscisses.
  • Ymin et Ymax sont les valeurs minimales et maximales de l'axe des ordonnées.

plt.axis([0,8,0,15] # de 0 à 8 en abscisse et de 0 à 15 en ordonnée)

3) Pour tracer le graphique, on utilise la fonction plt.plot() dans laquelle on indique les deux listes contenant les mesures et un paramètre pour définir la couleur et la forme du point du tracé :

plt.plot(U, I, 'r+')

Le r de r+ signifie que l'on souhaite des points rouges (red). D'autres couleurs sont disponibles : b (bleu), g (green), c (cyan), y (yellow), k (black), w (white).
Le + de r+ indique que l'on souhaite des points sous forme de plus (+). D'autres formes sont possibles :

  • . pour avoir un point ;
  • o pour avoir un cercle ;
  • - pour avoir une courbe en trait plein ;
  • - - pour avoir une courbe en pointillés.

On peut combiner les points et les courbes : 'r+- -' affiche des points rouges avec la forme d'un plus (+), la courbe est tracée en pointillés.

4) Le graphique est affiché à l'écran avec la fonction plt.show().

Le code complet et le graphique obtenu :


import matplotlib.pyplot as plt
U = [1.0, 2.2, 4.5, 8.8, 13.2]
I = [0.5, 1.0, 2.0, 4.0, 6.0 ]
plt.axis([0,8,0,15])
plt.plot(I, U, 'r+-')
plt.show()

Modifier le nom des axes

Pour nommer les axes, insérer au code précédent les lignes ci-dessous avant la fonction plt.show() :

plt.xlabel("Intensité")
plt.ylabel("Tension")


Ajouter un titre au graphique

Pour ajouter un titre, insérer au code précédent la ligne ci-dessous avant la fonction plt.show() :

plt.title("U = f(I)")


Pour augmenter la taille des caractères du titre, il faut ajouter “.set_fontsize(taille)”:

plt.title("U = f(I)").set_fontsize(16)


Ajouter un texte sur le graphique

Pour mettre du texte sur le graphique il faut utiliser la fonction : plt.text(x, y, texte, couleur).

  • x et y sont les coordonnées du premier caractère du texte dans le repère (Oxy) ;
  • texte est une chaîne de caractères à afficher ;
  • couleur est le paramètre de couleur. Si vous voulez un texte en rouge, il faut écrire : color= “r”. Il est possible d'utiliser les couleur RVB : color = (R, V, B). Exemple : color = (100, 240, 85).
plt.text(5, 10, "U = 2200 x I", color = 'r').set_fontsize(16)

.set_fontsize(16) permet d'augmenter la taille des caractères à 16 pixels (facultatif).


Afficher une grille de fond au graphique


Il est possible d'ajouter une grille de fond au graphique en utilisant la fonction grid() :

plt.grid()



Cette fonction accepte des paramètres pour la couleur (color), le style de trait (linestyle) ou l'épaisseur du tracé (linewidth) :

plt.grid(color='r', linestyle='-', linewidth=2)


Pour afficher uniquement des lignes horizontales :

plt.grid(axis='y') 

python/tracer_un_graphique.txt · Dernière modification: 24/09/2019 18:48 par Stéphane LAURENT