Tracés de courbes sous Python

Vite fait bien fait

Le tracés de courbes sous Python est très simple grâce à la bibliothèque mathplotlib. Si un vecteur y seul est spécifié, l'ordonnée y est tracée en fonction du numéro de point. Si deux vecteurs x et y sont spécifiés, l'ordonnée y est tracée en fonction de l'abscisse x.

Le tracé est effectué dans la fenêtre courante et chaque instruction plot ajoute une courbe d'une couleur différente. L'instruction clf() permet d'effacer la figure.

x=linspace(0,10,100)
y=sin(x)
clf()
plot(x,y)
plot(x,sin(2*x))
    

Pour imposer à la courbe une couleur ou un style particulier, il est possible d'ajouter un argument de format entre guillemets. Par exemple "r--o" conduit à une courbe rouge, en tirets, où les points sont localisés par des cercles.

La couleur est spécifiée par une lettre : b pour bleu, r pour rouge, g pour vert, y pour jaune, k pour noir, m pour magenta, c pour cyan et w pour blanc (moins utile lorsque le fond est blanc...).

Le style de ligne est spécifié par un sigle : - pour un trait plein, -- pour des tirets, : pour des pointillets et -. pour un trait mixte.

Le style des marqueurs des points peut aussi être modifié par un caractères. Vous pourrez tester les caractères suivants : +o*.xsd^vp.

x=linspace(0,10,100)
clf()
plot(x,sin(x),"o-r")
plot(x,sin(x-0.4),"x--g")
plot(x,sin(x-0.8),"d:k")
plot(x,sin(x-1.2),"-.m")
    

Par défaut, les échelles sont ajustées pour occuper la totalité de la figure. Lorsque la courbe nécessite une même échelle en x et y, utiliser la fonction square. L'exemple ci-dessous trace un cercle de rayon unitaire.

t=linspace(0,2*pi,100)
clf()
plot(sin(t),cos(t))  # Le tracé n'est pas circulaire
clf()
axes().set_aspect(1)
plot(sin(t),cos(t))  # Le tracé est circulaire
     

Fonctions avancées

Ajouter des titres et légendes

Une légende permet de connaitre la signification de chaque courbe. L'appel à la fonction legend permet de l'intégrer au graphique.

Un titre permet de donner du sens à un graphique. L'appel à la fonction xtitle permet d'insérer un titre au dessus du graphique.

Les fonctions xlabel et ylabel permettent d'ajouter du texte pour chaque axe.

x=linspace(0,10,100)
clf()
plot(x, cos(x), "r", label="cosinus")
plot(x, sin(x), "b", label="sinus")
legend()
title("Fonctions sinusoïdales")
xlabel("Angle")
ylabel("Valeur")
 

Tracer un réseau de courbes (ou de segments)

Lorsque x et y sont des tableaux, la fonction plot trace chaque colonne de y en fonction de chaque colonne de x. L'exemple suivant trace 100 segments allant de l'axe des abscisses à l'ordonnée en sinus (x est une ligne de 100 éléments).

x=linspace(0,10,100)
clf()
xx=array([x,x])
yy=array([x*0,sin(x)])
plot(xx,yy,"b")     

Aller plus loin...

Le plus simple est de s'appuyer sur les exemples très complets de la bibliothèque matplotlib, pour lesquels le code est assez explicite. Rendez-vous sur la gallerie, ainsi que la page des exemples.