Représentation graphique avec matplotlib
Le site de SciPy, propose un cours sur matplotlib. On trouve de plus une
gallerie bien fournie sur le site de matplotlib d'où on peut extraire de
nombreux exemples :
Cette page donne quelques bases pour démarrer :
Importation
Habituellement on importe matplotlib suivant :
import matplotlib.pyplot as plt
Le module pyplot contient de nombreuses fonctions pour faire des graphiques
diverses : plot (simple tracé), pie (camembert), bar, hist (histogramme),
polar, boxplot (boîte à moustaches) ... Il existe aussi des fonctions pour
représenter des données en 3D avec visualisation interactive.
Dans IPython ou Jupyter, on peut utiliser la commande magique %pylab pour
charger scipy, numpy et matplotlib :
In [1]: %pylab --no-import-all inline
--no-import-allévitefrom numpy import *etfrom scipy import *inlinepermet d'intégrer les graphiques dans le notebook ou la qtconsole
Exemples :
Ceci est un exemple pas à pas pour démarrer. Reportez-vous à la galerie pour plus d'exemples.
On va tracer la fonction :
Commençons par définir des fonctions
def signal(t):
return np.sin(2 * t) * np.exp(-4e-2 * t)
def envelope(t):
return np.exp(-4e-2 * t)
Remarque : Dans les lignes de code ci-dessous, matplotlib est importé
en faisant :
import matplotlib.pyplot as plt
Le premier graphique :
La fonction plot attend simplement comme premier argument l'abscisse et comme
deuxième argument l'ordonnée. On utilise NumPy pour se donner une série de
valeurs de t avec la fonction
np.linspace().
t = np.linspace(0, 80, 200)
plt.plot(t, signal(t))
plt.show()
# ou:
# plt.savefig("mongraph.eps")

Deux solutions s'offrent à nous pour affichier le graphique :
plt.show(): ouvre une fenêtre intéreactive qui contient le graphiqueplt.savefig(): permet de sauvegarder le graphique dans un fichier- Le comportement de
plt.show()peut être modifié, notament avec l'optioninlinedansIPythonoujupyterqui permet d'intégrer les graphiques.
Remarque : Avec NumPy, l'appel de la fonction signal(t) calcule automatiquement
les valeurs de la fonction pour toutes les valeurs de t.
Avec l'envelope
On ajoute l'envelope :
t = np.linspace(0, 80, 200)
plt.plot(t, signal(t))
plt.plot(t, envelope(t), color="red", linestyle="--")
plt.plot(t, -envelope(t), color="red", linestyle="--")
plt.show()

Ajoutons des informations
On va maintenant ajouter le nom des axes et un titre.
t = np.linspace(0, 80, 200)
plt.plot(t, signal(t))
plt.plot(t, envelope(t), color="red", linestyle="--")
plt.plot(t, -envelope(t), color="red", linestyle="--")
plt.xlabel("temps (s)")
plt.ylabel("Signal (ua)")
plt.title("Ma super fonction amortie")
plt.show()

Et la légende ?
On rajoute la légende.
t = np.linspace(0, 80, 200)
plt.plot(t, signal(t), label="signal")
plt.plot(t, envelope(t), color="red", linestyle="--", label="envelope")
plt.plot(t, -envelope(t), color="red", linestyle="--")
plt.xlabel("temps (s)")
plt.ylabel("Signal (ua)")
plt.title("Ma super fonction amortie")
plt.legend()
plt.show()

Les axes
On ajuste l'échelle des axes :
t = np.linspace(0, 80, 200)
plt.plot(t, signal(t), label="signal")
plt.plot(t, envelope(t), color="red", linestyle="--", label="envelope")
plt.plot(t, -envelope(t), color="red", linestyle="--")
plt.xlabel("temps (s)")
plt.ylabel("Signal (ua)")
plt.title("Ma super fonction amortie")
plt.legend()
plt.xlim((0, 40))
plt.ylim((-1.2, 1.5))
plt.show()

Annotations
On peut ajouter des annotations ou mettre en valeur des points.
t = np.linspace(0, 80, 200)
plt.plot(t, signal(t), label="signal")
plt.plot(t, envelope(t), color="red", linestyle="--", label="envelope")
plt.plot(t, -envelope(t), color="red", linestyle="--")
plt.xlabel("temps (s)")
plt.ylabel("Signal (ua)")
plt.title("Ma super fonction amortie")
plt.legend()
plt.xlim((0, 40))
plt.ylim((-1.2, 1.5))
plt.scatter([25, ], [0, ], s=50)
plt.plot(t, 1 - 4e-2 * t, color="#0C0B0E", linestyle="solid", linewidth=.5)
plt.annotate("Vous avez vu là !!", color="#0C0B0E",
xy=(25, 0), xycoords='data',
xytext=(-40, +60), textcoords='offset points', fontsize=16,
arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.8"))
plt.show()

Conclusion
En conclusion : à vous de jouer. Les exemples ci-dessous devrait vous permettre
de démarrer mais ils sont bien pauvres devant les possibilités de
matplotlib. Rappelez-vous ce principe simple : il existe certainement dans la
galerie un exemple proche de ce que vous cherchez à faire.