La passion du libre

Graphiques avec pyplot (toujours en cours d'élaboration)

Cliquez sur le bouton pour afficher les conseils de lecture.Cliquez à nouveau pour les masquer

Fenêtres surgissantes explicatives

Certains mots dans le texte, affichés en vert et en gras, sont précédés d'une étoile verte sur fond orange. Par exemple, ce mot : lien.

Si vous placez le pointeur de la souris sur un tel mot, une fenêtre surgissante – popup – s'ouvre alors que l'affichage du reste du documment s'atténue. Cette fenêtre contient une explication détaillée du mot en question

Une fois que vous avez pris connaissance de ce que vous affiche cette fenêtre surgissante, vous pouvez retourner à l'état normal en cliquant ailleurs dans le document.

Navigation

Pour naviguer, utilisez le menu vertical à gauche du texte. Les entrées de menu marquées d'une petite flèche vers le bas ouvrent un sous-menu lorsqu'on clique dessus.

Vous pouvez également choisir une lecture continue en cliquant sur un des liens proposés en bas de page.

Structuration d'une figure

On pourrait être pressé de se lancer dans la réalisation de son premier tracé avec pyplot mais auparavant il est très utile de connaître les principes élémentaires de structuration d'une figure.

Le cas élémentaire

Pour créer un repère unique dans une figure, cela est aussi simple que de saisir les instructions suivantes à l'invite de commandes de python :

>>> import matplotlib.pyplot as mpl
>>> mpl.plot([1,3,2,7])
[<matplotlib.lines.Line2D object at 0x7efced3b7160>]
>>> mpl.show()

la dernière commande pouvant être remplacée par :

>>> mpl.savefig('/home/jaaf/pythontuto/structure-01.png')

On aurait alors la figure suivante :

structure-001

Une remarque s'impose d'emblée ici. Si vous utilisez savefig vous ne verrez pas la zone grisée autour du repère (Axes). Cela tient au fait que le paramètre utilisé pour le fond de figure est dans ce cas savefig.facecolor et non pas figure.facecolor. Pour que les deux images (avec show() et avec savefig() ) soit similaires, vous devez éventuellement modifier une de ces valeurs dans le fichier matplotlibrc (voir page précédente de ce tutoriel)

Nous sommes ici dans le cas élémentaire pour lequel il y a un seul repère (Axes) dans la figure. On verra que grâce à la fonction plt.subplot() on peut créer d'autres repères avec les paramètres suivants, qui sont également valables dans ce cas  :

Les valeurs sont données en fraction de la hauteur et de la largeur de la figure

  • figure.subplot.left la marge laissée par le repère sur la gauche
  • figure.subplot.right la marge laissée par le repère sur la droite
  • figure.subplot.bottom la marge laissée par le repère en bas
  • figure.subplot.top la marge laissée par le repère en haut

Pour connaître ces valeurs il suffit de faire :

>>> import matplotlib as mpl
>>> print (mpl.rcParams)
agg.path.chunksize: 0
animation.avconv_args: []
...
figure.subplot.bottom: 0.1
figure.subplot.hspace: 0.2
figure.subplot.left: 0.125
figure.subplot.right: 0.9
figure.subplot.top: 0.9
...
>>>

Concernant la taille de la figure, celle-ci est exprimée par le paramètre figure.figsize qui est donné en pouces (soit 8.0 x 6.0 dans notre installation).

Mais attention, selon que vous utilisez plt.show() ou plt.savefig() les dimensions en pixels sont différentes. Elles sont données respectivement par :

  • figure.figsize * figure.dpi et
  • figure.figsize * savefig.dpi

Cas de la grille

Nous l'avons dit, il est possible de placer plusieurs repères (Axes) sur une même figure. Pour cela on utilise la fonction plt.subplot() avec 3 paramètres :

  • le nombre de ligne de la grille
  • le nombre de colonnes de la grille
  • la position du repère dans la grille (les cases de la grilles sont numérotées depuis 1 en commençant en haut à gauche et en procédant par lignes)

Ainsi, les commandes suivantes :

>>> import matplotlib.pyplot as plt
>>> plt.subplot(2,2,1,axisbg='g') # ce repère occupera la position 4 dans une grille 2 lignes 2 colonnes
<matplotlib.axes._subplots.AxesSubplot object at 0x7fdb9b33d1d0>
>>> plt.subplot(2,2,4,axisbg='r') # ce repère occupera la position 4 dans une grille 2 lignes par 2 colonnes
<matplotlib.axes._subplots.AxesSubplot object at 0x7fdb9b2b7cf8>
>>> plt.savefig('/home/jaaf/pythontuto/structure-02.png')

donne le résultat suivant :

structure-002

On remarquera que les marges du cas précédent sont préservées et que cela s'évalue sans tenir compte des marques (ticks) sur les axes. Ici interviennent les paramètres figure.subplot.hspace et figure.subplot.vspace qui représentent respectivement l'espacement horizontal et vertical entre les repères.

Si une commande subplot est donnée avec une grille ne correspondant pas à la grille de la précédente commande subplot, la figure est d'abord effacée puis le dernier repère est tracé avec la dernière grille spécifiée.

Plusieurs repères positionnés en absolu

Pour positionner un repère (Axes) dans une figure, on peut utiliser la méthode add_axes() de l'objet Figure. Cela oblige à disposer d'une référence à cette figure, c'est pourquoi nous procéderons comme suit :

>>> fig1 =plt.figure() #on crée un objet figure et on conserve une référence ici *fig1*
>>> axes1 =fig1.add_axes([0.3,0.3,0.5,0.5],axisbg='g') #on appelle la méthode **add_axes** sur l'objet *fig1*
>>> plt.savefig('/home/jaaf/pythontuto/structure-03.png')

Les paramètres de la méthode add_axes sont :

  • la position en x du coin inférieur gauche du repère
  • la position en y du coin inférieur gauche du repère
  • la largeur du repère
  • la hauteur du repère Toutes ces dimensions sont des fractions de la hauteur et de la largeur de la figure.

Le résultat obtenu est le suivant :

structure-003

Si maintenant on appelle les fonctions suivantes :

>>> fig1.add_axes([0.4,0.4,0.2,0.2],axisbg='r')
<matplotlib.axes._axes.Axes object at 0x7f1401d9c208>
>>> plt.savefig('/home/jaaf/pythontuto/structure-04.png')

on obtient la figure suivante : structure-004

Nous avons ici créé explicitement l'objet Figure pour pouvoir accéder à sa méthode add_axes. Notez que l'on peut aussi utiliser la méthode pyplot plt.axes() qui utilise l'objet Figure courant et qui fonctionne de la même manière.

Notez également que tous les tracés effectués sur le premier repère – même après la création du deuxième repère – seront en partie cachés par ce deuxième repère.