Pythonic Matplotlib #

Certaines personnes préfèrent écrire plus de code "Pythonic", explicite et orienté objet, plutôt que d'utiliser l'interface pyplot implicite avec Matplotlib. Cet exemple vous montre comment tirer parti de l'interface explicite de Matplotlib.

Sauf si vous êtes un développeur d'applications, je vous recommande d'utiliser une partie de l'interface pyplot, en particulier les commandes figure, close, subplot, axes et show. Celles-ci vous cachent beaucoup de complexité que vous n'avez pas besoin de voir dans la création normale de figures, comme l'instanciation d'instances DPI, la gestion des cadres de délimitation des éléments de la figure, la création et la réalisation de fenêtres GUI et l'intégration de figures dans celles-ci.

Si vous êtes un développeur d'applications et que vous souhaitez intégrer Matplotlib dans votre application, suivez les exemples/embedding_in_wx.py, examples/embedding_in_gtk.py ou examples/embedding_in_tk.py. Dans ce cas, vous voudrez contrôler la création de toutes vos figures, les intégrer dans des fenêtres d'application, etc.

Si vous êtes un développeur d'applications Web, vous pouvez utiliser l'exemple dans webapp_demo.py, qui montre comment utiliser directement le canevas de la figure agg backend, sans aucun des globals (figure actuelle, axes actuels) qui sont présents dans le pyplot interface. Notez qu'il n'y a aucune raison pour que l'interface pyplot ne fonctionne pas pour les développeurs d'applications Web.

Si vous voyez un exemple dans le répertoire d'exemples écrit dans l'interface pyplot et que vous souhaitez émuler cela en utilisant les véritables appels de méthode Python, il existe un mappage facile. Beaucoup de ces exemples utilisent 'set' pour contrôler les propriétés de la figure. Voici comment mapper ces commandes sur des méthodes d'instance

La syntaxe de set est :

plt.setp(object or sequence, somestring, attribute)

s'il est appelé avec un objet, set appelle :

object.set_somestring(attribute)

s'il est appelé avec une séquence, set fait :

for object in sequence:
   object.set_somestring(attribute)

Donc, pour votre exemple, si a est votre objet axes, vous pouvez faire :

a.set_xticklabels([])
a.set_yticklabels([])
a.set_xticks([])
a.set_yticks([])
Une onde sinusoïdale ou deux
import matplotlib.pyplot as plt
import numpy as np

t = np.arange(0.0, 1.0, 0.01)

fig, (ax1, ax2) = plt.subplots(2)

ax1.plot(t, np.sin(2*np.pi * t))
ax1.grid(True)
ax1.set_ylim((-2, 2))
ax1.set_ylabel('1 Hz')
ax1.set_title('A sine wave or two')

ax1.xaxis.set_tick_params(labelcolor='r')

ax2.plot(t, np.sin(2 * 2*np.pi * t))
ax2.grid(True)
ax2.set_ylim((-2, 2))
l = ax2.set_xlabel('Hi mom')
l.set_color('g')
l.set_fontsize('large')

plt.show()

Galerie générée par Sphinx-Gallery