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.

Naviguer entre les figures et les repères

Même si cela n'est pas forcément très courant, il se peut que vous ayez créé plusieurs figures (Figure) et plusieurs repères (Axes) à l'intérieur de ces figures. Il es bon de savoir passer de l'un.e à l'autre.

Repères (Axes)

Dans cet exemple de navigation parmi les repères, nous utilisons les listes automatiques créées par pyplot. Une autre méthode consisterait à conserver des références explicites lors de la création de ces repères.

Cet exemple utilise les fonctions suivantes :


navigation-01

>>> import matplotlib.pyplot as plt
>>> plt.ion() # pour voir ce qu'il se passe
>>> plt.plot([1,3,2,5]) # ici, il y a création implicite d'une figure et d'un repère dans le figure
[<matplotlib.lines.Line2D object at 0x7fb345cb7ac8>]

navigation-02

>>> plt.axes([0.3,0.3,0.3,0.3],axisbg='#dddddd') # création explicite d'un repère qui devient le repère courant
<matplotlib.axes._axes.Axes object at 0x7fb345cb06d8>
>>> plt.plot([4,3,2,1],'r--') # on dessine dans le nouveau repère
[<matplotlib.lines.Line2D object at 0x7fb345b20080>]

navigation-03

>>> fig=plt.gcf() # un moyen commode de récupérer une référence à la figure courante
>>> axs=fig.get_axes() # on récupère un tableau de références aux repères de la figure
>>> plt.sca(axs[0]) # on peut alors revenir sur le premier repère 
>>> plt.plot([3,3,3,2,0],'r') # on dessine dans ce premier repère
[<matplotlib.lines.Line2D object at 0x7fb345f120f0>]

navigation-04

>>> plt.sca(axs[1]) # on revient sur le deuxième repère 
>>> plt.plot([1,2,3],'rs') # on y dessine
[<matplotlib.lines.Line2D object at 0x7fb345b34ac8>]
>>> 

Figures

Ce qu'il faut savoir c'est que chaque fois que vous créez une nouvelle figure, elle devient la figure courante (active) et toutes les commandes de tracé qui suivent s'adresse à cette figure. À la création ces figures reçoivent un numéro d'ordre.

Ce principe s'appuie sur le fait que vous avez mémorisé ces numéros d'ordre. Si vous ne voulez pas, il vous faut garder des références explicites lors de leur création.

Les fonctions utilisées dans cet exemple de navigation entre les figures sont :

  • matplotlib.pyplot.figure() crée une nouvelle figure si aucun paramètre n'est passé ou rend la figure dont le numéro est passé en paramètre active (courante). Dans les deux cas retourne une référence à la figure.
  • matplotlib.pyplot.get_fignums() obtient un tableau des numéros des figures crées

navigation-05

>>> import matplotlib.pyplot as plt
>>> plt.ion()
>>> plt.plot([3,4,2,5]) # crée implicitement une figure et un repère dans cette figure. Dessine dans le repère.

[ <matplotlib.lines.Line2D object at 0x7f1e2425d080>]


navigation-06

>>> plt.figure() # crée une nouvelle figure, lui assigne un numéro d'ordre
<matplotlib.figure.Figure object at 0x7f1e24208ef0>
>>> plt.plot([0,2,0,3,0,4,0,5],'b--') # dessine sur la nouvelle figure
[<matplotlib.lines.Line2D object at 0x7f1e240bf550>]
>>> print(plt.get_fignums()) # n'est pas vraiment utile ici mais montre les numéros des figures existantes
[1, 2]

navigation-07

>>> plt.figure(1) # on rend la première figure active (courante)
<matplotlib.figure.Figure object at 0x7f1e322cbfd0>
>>> plt.plot([4,3,2,1],'rs') # on ajoute un nouveau tracé à la figure 1
[<matplotlib.lines.Line2D object at 0x7f1e241ec3c8>]
>>>