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