Tracer une ou plusieurs courbes sur un même graphe

Afin de comparer le comportement réel d'un système du laboratoire avec son comportement anticipé à l'aide d'un logiciel de simulation (Scilab, Matlab, Méca3D,...), il est souvent intéressant de tracer les courbes résultats (expérimentaux et simulés) sur le même graphe afin d'évaluer les écarts, puis de les interpréter.

Pour ce faire, voici quelques fonctions utiles à ces tracés.

Fonctions nécessaires

CODE

FONCTION

import matplotlib.pyplot as plt

Importe la bibliothèque pyplot de matplotlib (nécessaire pour utiliser les fonctions permettant de tracer des courbes ci-dessous).

plt.clf()

plt.draw()

...

plt.show()

Tant que la figure n’est pas fermée, les courbes s'ajouteront sur la figure. Il est donc utile de commencer chaque tracé par les 2 première lignes ci-contre.

clf effacera la figure avant de recommencer le tracé.

draw forcera à redessiner sur la figure.

Enfin, le code se terminera par show afin d’afficher le graphe. NB : Si le graphe n'apparaît pas, cliquer sur l'icône Pyzo en bas de votre écran afin de visualiser la 2ème fenêtre qui est cachée...

plt.plot(x_tab,y_tab)

Trace la courbe des points de coordonnée (x_tab,y_tab) : « x_tab » et « y_tab » étant 2 tableaux de valeurs.

plt.plot((-20,20),(2,2))

Trace un segment reliant les points (-20,2) et (20,2). Utile pour le tracé d'une bande de +/- 5%.

plt.plot(x1_tab,y1_tab,label="y1")

plt.plot(x2_tab,y2_tab,label="y2")

plt.legend(fontsize=15)

Si 2 courbes sont tracées sur le même graphe, il est nécessaire de légender ces courbes.

label affiche la légende « y1 » pour la 1ère courbe.

label affiche la légende « y2 » pour la 2ème courbe

legend est nécessaire. Si cette ligne est oubliée, la légende ne s’affichera pas.

fontsize précise la taille de la légende.

plt.grid()

Affiche une grille.

plt.xlabel("Temps en s", fontsize=15)

Affiche le label « Temps en s » sur l'axe des abscisses (idem pour ylabel).

fontsize précise la taille du xlabel.

plt.title("Réponse de y en fonction du temps",fontsize=20)

Affiche le titre du graphe « Réponse de y en fonction du temps ».

fontsize précise la taille du titre.

Fonctions pour peaufiner si besoin (mais pas nécessaire)

CODE

FONCTION

plt.plot(x_tab,y_tab,linewidth=2)

plt.plot(x_tab,y_tab,"b",linewidth=2)

plt.plot(x_tab,y_tab,"b--",linewidth=2)

plt.plot(x_tab,y_tab,"+b--",linewidth=2)

linewidth précise l'épaisseur de la courbe.

b précise la couleur : b=blue, g=green, k=black, m=magenta, r=red, y=yellow.

-- précise le style de la ligne : -=ligne continue, --=ligne discontinue, :=ligne pointillée, -.=ligne mixte.

+ précise le tracé de chaque point : +=plus, ^=triangle, v=triangle dans l'autre sens, s=carré, o=rond.

plt.legend(loc="lower right", fontsize=15)

loc impose l'emplacement de la légende : 'upper left', ’upper center', 'upper right', 'center right', 'center', 'center left', 'lower right', 'lower center', 'lower left'

plt.title("Réponse de y \n en fonction du temps",fontsize=20)

\n effectue un saut à la ligne afin d’afficher le titre sur 2 lignes (idem pour xlabel et ylabel).

plt.title("Réponse pour "+str(a))

Affiche dans le titre la valeur de la variable a (idem pour xlabel et ylabel).

plt.xlim(-5,20)

Zoom l'intervalle d'affichage des abscisses entre -5 et 20 (idem pour ylim) (utile uniquement si les valeurs automatiques affichées sur l'axe des abscisses ne conviennent pas...).

plt.xticks(fontsize=15)

Précise la taille des valeurs sur l'axe des abscisses (idem pour yticks).

plt.xticks((-20,-10,0,10,20), fontsize=15)

Fixe les valeurs à afficher sur l'axe des abscisses (utile uniquement si les valeurs automatiques affichées sur l'axe des abscisses ne conviennent pas...).