matplotlib
Matplotlib (http://matplotlib.sourceforge.net/) est une bibliothèque d'extension de Python destinée aux représentations graphiques en 2D uniquement. Les "plots" ainsi réalisés peuvent être très élégants.
Matplotlib s'appuie sur numpy ( http://www.projet-plume.org/fr/fiche/numpy ) pour la représentation des tableaux et propose dans certains cas une syntaxe proche de Matlab ou d'IDL.
L'intérêt du travail dans l'environnement python/numpy est de réaliser un post-traitement évolué sur les données directement dans le code de visualisation, ce qui peut représenter un plus par rapport à Gnuplot dans lequel les capacités de calcul sur les données sont relativement limitées.
Exemple
En quelques lignes, voyons comment tracer l'histogramme d'un ensemble de valeurs contenues dans un tableau :
from pylab import *
# Definition de la serie de donnees en x : de 0 a 2 par pas de 0.1
t = arange(0.0, 2.0, 0.01)
# Une sinusoide au courant
s = 230 * sin(2*pi*t)
# 1er morceau du graphique, 1ere ligne, 1ere colonne
subplot(2,1,1)
plot(t,s)
title(r'$\Pi =3.14 \ sin(2 \times \omega t)$')
# 2ème morceau de graphique, 1ere colonne, 2ème ligne
subplot(2,1,2)
n,h,p=hist(s)
plot(t)
title(r'Histogramme')
# Export en PDF
savefig('sinus.pdf')
# Affichage
show()
Le code suivant produit un plot 3D (Z=f(x,y)) :
import numpy
import math
import matplotlib
# Choix du back-end graphique
matplotlib.use('TkAgg')
# Création de données synthétiques
def init_data(myarray):
print "Init_data : shape",myarray.shape
for i in range( myarray.shape[0]):
for j in range (myarray.shape[1]):
myarray[i,j]=i+100*math.sin(i/(2*3.14))+100*math.sin(j/(2*3.14))
return myarray
dset_data=init_data(numpy.empty((100,100),dtype=int))
# Create a 3D plot
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
fig = plt.figure()
ax = axes3d.Axes3D(fig)
# Create regular mesh from coordinates
X,Y=numpy.meshgrid(numpy.arange(0,dset_data.shape[0]),numpy.arange(dset_data.shape[1]))
ax.plot_wireframe(X,Y,dset_data)
plt.show()
Interaction avec ipython : interpréteur python amélioré spécialement pensé pour le couplage avec matplotlib (historique des commandes, ...).
Ipython est disponible à l'adresse http://ipython.scipy.org/.
Matplotlib est également intégrée dans Enthought Python Distribution (http://www.enthought.com/products/epd.php)
et à Sage http://www.sagemath.org/()
Matplotlib est conçu pour s'interfacer avec numpy, standard de représentation efficace des tableaux en python.
Dans l'environnement du rédacteur, matplotlib est utilisé par l'Institut de Recherche Mathématique Avancée ( http://www-irma.u-strasbg.fr ) et l'Observatoire Astronomique de Strasbourg ( http://astro.u-strasbg.fr/ ). Matplotlib est également utilisé dans le projet européen Euforia ( http://www.euforia-project.eu/EUFORIA/ ).
L'interface graphique de matplotlib s'appuie sur différentes bibliothèques graphiques (Tk, Wx, Gtk). La bibiliothèque graphique utilisée par défaut ne fonctionne pas toujours parfaitement sur les différents OS, il faut donc parfois choisir la bonne API à l'utilisation.
Peut être difficile à compiler, j'encourage à choisir une version intégrée à une distribution plus large, en raison des nombreuses dépendances.