Premiers pas avec matplotlib

Syntaxe impérative vs orientée objet

Matplotlib prend en charge la syntaxe orientée objet et impérative pour le traçage. La syntaxe impérative est intentionnellement conçue pour être très proche de la syntaxe Matlab.

La syntaxe impérative (parfois appelée syntaxe “state-machine”) émet une chaîne de commandes qui agissent toutes sur la figure ou l’axe le plus récent (comme Matlab). La syntaxe orientée objet, quant à elle, agit explicitement sur les objets (figure, axe, etc.) d’intérêt. Un point clé dans le [zen of Python] [2] stipule qu’explicite vaut mieux qu’implicite, de sorte que la syntaxe orientée objet est plus pythonique. Cependant, la syntaxe impérative est pratique pour les nouveaux convertis de Matlab et pour écrire de petits scripts de tracé “jetables”. Vous trouverez ci-dessous un exemple des deux styles différents.

import matplotlib.pyplot as plt
import numpy as np

t = np.arange(0, 2, 0.01)
y = np.sin(4 * np.pi * t)

# Imperative syntax
plt.figure(1)
plt.clf()
plt.plot(t, y)
plt.xlabel('Time (s)')
plt.ylabel('Amplitude (V)')
plt.title('Sine Wave')
plt.grid(True)

# Object oriented syntax
fig = plt.figure(2)
fig.clf()
ax = fig.add_subplot(1,1,1)
ax.plot(t, y)
ax.set_xlabel('Time (s)')
ax.set_ylabel('Amplitude (V)')
ax.set_title('Sine Wave')
ax.grid(True)

Les deux exemples produisent le même tracé qui est illustré ci-dessous.

[![entrez la description de l’image ici][1]][1]

[1] : http://i.stack.imgur.com/F2TPB.png [2] : https://www.python.org/dev/peps/pep-0020/

Installation et configuration

Il existe plusieurs façons d’installer matplotlib, dont certaines dépendent du système que vous utilisez. Si vous avez de la chance, vous pourrez utiliser un gestionnaire de packages pour installer facilement le module matplotlib et ses dépendances.

Les fenêtres

Sur les machines Windows, vous pouvez essayer d’utiliser le gestionnaire de packages pip pour installer matplotlib. Voir [here][pip on windows] pour plus d’informations sur la configuration de pip dans un environnement Windows.

[pip sur Windows] : http://stackoverflow.com/q/4750806/2077270

# OS X

Il est recommandé d’utiliser le gestionnaire de packages pip pour installer matplotlib. Si vous devez installer certaines des bibliothèques non Python sur votre système (par exemple, libfreetype), envisagez d’utiliser [homebrew] (http://brew.sh/).

Si vous ne pouvez pas utiliser pip pour une raison quelconque, essayez d’installer à partir de source.

#Linux

Idéalement, le gestionnaire de packages système ou pip doit être utilisé pour installer matplotlib, soit en installant le package python-matplotlib, soit en exécutant pip install matplotlib.

Si ce n’est pas possible (par exemple, vous n’avez pas les privilèges sudo sur la machine que vous utilisez), vous pouvez installer à partir de source en utilisant l’option --user : python setup.py install --user. Typiquement, cela installera matplotlib dans ~/.local.

Debian/Gratuit

sudo apt-get install python-matplotlib

Fedora/chapeau rouge

sudo yum install python-matplotlib

Dépannage

Consultez le [site Web de matplotlib] [dépannage] pour obtenir des conseils sur la façon de réparer un matplotlib cassé.

[dépannage] : http://matplotlib.org/faq/installing_faq.html#matplotlib-compiled-fine-but-nothing-shows-up-when-i-use-it

Tableaux à deux dimensions (2D)

Afficher un tableau à deux dimensions (2D) sur les axes.

import numpy as np
from matplotlib.pyplot import imshow, show, colorbar

image = np.random.rand(4,4)
imshow(image)
colorbar()
show()

[![Afficher un tableau bidimensionnel (2D) avec matplotlib][1]][1]

[1] : https://i.stack.imgur.com/nTz0k.png

Personnalisation d’un tracé matplotlib

import pylab as plt
import numpy as np

plt.style.use('ggplot')

fig = plt.figure(1)
ax = plt.gca()

# make some testing data
x = np.linspace( 0, np.pi, 1000 )
test_f = lambda x: np.sin(x)*3 + np.cos(2*x)

# plot the test data
ax.plot( x, test_f(x) , lw = 2)

# set the axis labels
ax.set_xlabel(r'$x$', fontsize=14, labelpad=10)
ax.set_ylabel(r'$f(x)$', fontsize=14, labelpad=25, rotation=0)

# set axis limits
ax.set_xlim(0,np.pi)

plt.draw()

[![entrez la description de l’image ici][1]][1]

# Customize the plot
ax.grid(1, ls='--', color='#777777', alpha=0.5, lw=1)
ax.tick_params(labelsize=12, length=0)
ax.set_axis_bgcolor('w')
# add a legend
leg = plt.legend( ['text'], loc=1 )
fr = leg.get_frame()
fr.set_facecolor('w')
fr.set_alpha(.7)
plt.draw()

[![entrez la description de l’image ici][2]][2]

[1] : http://i.stack.imgur.com/8zsc9.png [2] : http://i.stack.imgur.com/6H2xK.png