Matplotlib
Matplotlib
Matplotlib est probablement l'un des packages Python les plus utilisés pour la représentation
de graphiques en 2D. Il fournit aussi bien un moyen rapide de visualiser des données grâce
au langage Python, que des illustrations de grande qualité dans divers formats.
I - Présentation............................................................................................................................................................ 3
I-A - IPython et le mode pylab...............................................................................................................................3
I-B - Pylab...............................................................................................................................................................3
II - Graphique simple................................................................................................................................................... 3
II-A - Paramètres par défaut.................................................................................................................................. 4
II-B - Modifier les réglages par défaut................................................................................................................... 5
II-C - Modifier les couleurs et épaisseurs de trait..................................................................................................7
II-D - Délimiter les axes du repère........................................................................................................................ 8
II-E - Définir les graduations.................................................................................................................................. 9
II-F - Définir le texte des graduations.................................................................................................................. 10
II-G - Déplacer les axes du repère...................................................................................................................... 11
II-H - Ajouter une légende au graphique............................................................................................................. 12
II-I - Annoter certains points remarquables......................................................................................................... 14
II-J - Le diable se cache toujours dans les détails.............................................................................................. 15
III - Graphiques, vues en grille, vues libres et graduations...................................................................................... 17
III-A - Graphiques ([Link]).................................................................................................................. 17
III-B - Vues en grille ([Link])..............................................................................................................18
III-C - Vues libres ([Link])......................................................................................................................21
III-D - Graduations de repère...............................................................................................................................23
III-D-1 - Localisateurs de graduations (tick locators)......................................................................................23
IV - Autres types de tracés....................................................................................................................................... 25
IV-A - Tracés simples...........................................................................................................................................27
IV-B - Tracés en points........................................................................................................................................ 28
IV-C - Histogrammes............................................................................................................................................29
IV-D - Tracés contour...........................................................................................................................................30
IV-E - Image pixelisée..........................................................................................................................................31
IV-F - Tracés fléchés............................................................................................................................................32
IV-G - Graphiques en camembert........................................................................................................................33
IV-H - Grilles.........................................................................................................................................................34
IV-I - Tracés multiples.......................................................................................................................................... 35
IV-J - Axes polaires..............................................................................................................................................36
IV-K - Graphiques en 3D..................................................................................................................................... 37
IV-L - Textes......................................................................................................................................................... 37
V - Aller plus loin....................................................................................................................................................... 38
V-A - Tutoriels.......................................................................................................................................................38
V-B - Documentation Matplotlib........................................................................................................................... 39
V-C - Documentation du code............................................................................................................................. 39
V-D - Galeries.......................................................................................................................................................40
V-E - Mailing lists................................................................................................................................................. 40
VI - Références..........................................................................................................................................................40
VI-A - Propriétés de trait...................................................................................................................................... 40
VI-B - Styles de trait.............................................................................................................................................42
VI-C - Marques..................................................................................................................................................... 43
VI-D - Bandes colorées........................................................................................................................................44
VI-D-1 - De base.............................................................................................................................................44
VI-D-2 - GIST.................................................................................................................................................. 44
VI-D-3 - Séquences........................................................................................................................................ 45
VI-D-4 - Dégradés...........................................................................................................................................45
VI-D-5 - Qualifiés............................................................................................................................................ 46
VI-D-6 - Divers................................................................................................................................................ 46
VII - Notes et remerciements de l'auteur.................................................................................................................. 46
VIII - Remerciements Developpez.............................................................................................................................47
-2-
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
I - Présentation
Matplotlib est probablement l'un des packages Python les plus utilisés pour la représentation de graphiques en 2D.
Il fournit aussi bien un moyen rapide de visualiser des données grâce au langage Python, que des illustrations de
grande qualité dans divers formats.
Nous explorerons matplotlib en console interactive et nous tenterons d'aborder les cas les plus courants.
IPython est une console interactive Python améliorée qui supporte un grand nombre de fonctionnalités très
intéressantes parmi lesquelles les entrées/sorties nommées, l'utilisation directe de commandes shell, un système de
débogage amélioré et bien plus encore.
En lançant cette console avec l'argument -pylab (--pylab depuis IPython version 0.12), l'on dispose immédiatement
d'une session matplotlib interactive avec de nombreuses fonctionnalités du type Matlab™ / Mathematica™.
I-B - Pylab
Pylab fournit une interface procédurale à la librairie graphique matplotlib orientée objet. Elle est basée sur un modèle
très proche de Matlab™. De la sorte, la grande majorité des commandes pylab ont leur équivalent Matlab™ avec
des arguments similaires. Les commandes les plus importantes sont expliquées avec des exemples en console
interactive.
II - Graphique simple
Dans cette rubrique, nous voudrions tracer les fonctions sinus et cosinus sur un seul et même graphique. En partant
des paramètres par défaut, nous allons améliorer la représentation étape par étape jusqu'à obtenir quelque chose
de correct.
X est désormais un tableau numpy comprenant 256 valeurs allant de -π à +π (inclus). C et S représentent
respectivement le cosinus et le sinus de ces valeurs.
Pour tester cet exemple, vous pouvez lancer une console interactive IPython :
$ ipython --pylab
-3-
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
Vous pouvez aussi copier/coller le code source de chaque exemple dans un fichier et le lancer comme un script
Python ordinaire, exemple :
$ python exercice_1.py
Le code source des exercices (exercice_xx.py, …) est dissimulé par défaut. Cliquez sur l'image
pour le faire apparaître à chaque étape.
Documentation
exercice_1.py
from pylab import *
n = 256
X = [Link](-[Link], [Link], 256,endpoint=True)
C,S = [Link](X), [Link](X)
plot(X,C),plot(X,S)
#savefig("../figures/exercice_1.png",dpi=72)
show()
Matplotlib est fournie avec un jeu de paramètres par défaut qui permet de personnaliser toute sorte de propriétés.
Vous pouvez contrôler les réglages par défaut de (presque) toutes les propriétés : taille du graphique, résolution en
points par pouce (dpi), épaisseur du trait, couleurs, styles, vues, repères, grilles, textes, polices de caractères, etc.
-4-
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
Bien que les réglages par défaut répondent à la plupart des cas courants, vous pourriez être amenés à en modifier
quelques-uns pour des cas plus spécifiques.
plot(X,C)
plot(X,S)
show()
Documentation
• Personnaliser matplotlib
exercice_2.py
# Import everything from matplotlib (numpy is accessible via 'np' alias)
from pylab import *
# Create a new figure of size 8x6 inches, using 80 dots per inch
figure(figsize=(8,6), dpi=80)
# Plot cosine using blue color with a continuous line of width 1 (pixels)
-5-
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
exercice_2.py
plot(X, C, color="blue", linewidth=1.0, linestyle="-")
# Plot sine using green color with a continuous line of width 1 (pixels)
plot(X, S, color="green", linewidth=1.0, linestyle="-")
# Set x limits
xlim(-4.0,4.0)
# Set x ticks
xticks([Link](-4,4,9,endpoint=True))
# Set y limits
ylim(-1.0,1.0)
# Set y ticks
yticks([Link](-1,1,5,endpoint=True))
Dans le script suivant, nous modifions (et commentons) les réglages qui impactent directement l'apparence du
graphique.
Ces réglages ont été volontairement redéfinis à leurs valeurs par défaut, mais vous pouvez les faire varier pour voir
ce que cela donne (voir les rubriques Propriétés de ligne et Styles de trait plus bas, rubrique Références).
-6-
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
Documentation
[Link]
from pylab import *
figure(figsize=(8,5), dpi=80)
subplot(111)
xlim(-4.0,4.0)
xticks([Link](-4,4,9,endpoint=True))
ylim(-1.0,1.0)
yticks([Link](-1,1,5,endpoint=True))
#savefig("../figures/exercice_3.png",dpi=72)
show()
Pour commencer, nous voudrions mettre la courbe cosinus en bleu, la courbe sinus en rouge et épaissir un peu le
trait des deux courbes. Nous modifierons aussi, très légèrement, la taille du graphique afin que ce dernier paraisse
plus horizontal, plus panoramique.
...
figure(figsize=(10,6), dpi=80)
plot(X, C, color="blue", linewidth=2.5, linestyle="-")
plot(X, S, color="red", linewidth=2.5, linestyle="-")
...
-7-
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
Documentation
• Commande xlim()
• Commande ylim()
exercice_4.py
from pylab import *
figure(figsize=(8,5), dpi=80)
subplot(111)
xlim([Link]()*1.1, [Link]()*1.1)
ylim([Link]()*1.1,[Link]()*1.1)
# savefig("../figures/exercice_4.png",dpi=72)
show()
Les limites actuelles sur les axes du repère sont un peu trop serrées, nous voudrions les agrandir afin d'aérer le
graphique.
...
xlim([Link]()*1.1, [Link]()*1.1)
ylim([Link]()*1.1, [Link]()*1.1)
...
Notez que pour une version plus robuste, nous devrions plutôt écrire :
-8-
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
Documentation
• Commande xticks()
• Commande yticks()
• Conteneur de graduations
• Positionner et formater les graduations
exercice_5.py
from pylab import *
figure(figsize=(8,5), dpi=80)
subplot(111)
xlim([Link]()*1.1, [Link]()*1.1)
xticks([-[Link], -[Link]/2, 0, [Link]/2, [Link]])
ylim([Link]()*1.1,[Link]()*1.1)
yticks([-1, 0, +1])
# savefig("../figures/exercice_5.png",dpi=72)
show()
-9-
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
Les graduations actuelles ne sont pas idéales : elles n'affichent pas les valeurs (+/-π, +/-π/2) qui nous intéressent
pour sinus et cosinus. Modifions-les pour qu'elles correspondent à ces valeurs.
...
xticks( [-[Link], -[Link]/2, 0, [Link]/2, [Link]])
yticks([-1, 0, +1])
...
Documentation
exercice_6.py
from pylab import *
figure(figsize=(8,5), dpi=80)
subplot(111)
xlim([Link]()*1.1, [Link]()*1.1)
xticks([-[Link], -[Link]/2, 0, [Link]/2, [Link]],
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
ylim([Link]()*1.1,[Link]()*1.1)
yticks([-1, 0, +1],
[r'$-1$', r'$0$', r'$+1$'])
- 10 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
exercice_6.py
# savefig("../figures/exercice_6.png",dpi=72)
show()
Les graduations sont bien placées, mais le contenu de leur texte n'est pas très explicite. Nous pourrions deviner que
3.142 correspond à π, mais ce serait beaucoup mieux de l'indiquer clairement. Lorsqu'on définit des valeurs pour les
graduations, il est aussi possible de définir des étiquettes de texte correspondant à ces valeurs dans une liste fournie
en second argument d'appel de fonction. Nous utiliserons une notation LaTeX pour obtenir un meilleur rendu final.
...
xticks([-[Link], -[Link]/2, 0, [Link]/2, [Link]],
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
yticks([-1, 0, +1],
[r'$-1$', r'$0$', r'$+1$'])
...
Documentation
• Axes de repère
• Conteneur d'axes de repère
• Tutoriel sur les transformations
exercice_7.py
from pylab import *
figure(figsize=(8,5), dpi=80)
subplot(111)
- 11 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
exercice_7.py
ax = gca()
[Link]['right'].set_color('none')
[Link]['top'].set_color('none')
[Link].set_ticks_position('bottom')
[Link]['bottom'].set_position(('data',0))
[Link].set_ticks_position('left')
[Link]['left'].set_position(('data',0))
xlim([Link]()*1.1, [Link]()*1.1)
xticks([-[Link], -[Link]/2, 0, [Link]/2, [Link]],
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
ylim([Link]()*1.1,[Link]()*1.1)
yticks([-1, 0, +1],
[r'$-1$', r'$0$', r'$+1$'])
# savefig("../figures/exercice_7.png",dpi=72)
show()
Les axes du repère sont les droites qui portent les marques de graduation et qui délimitent la zone de représentation
du graphique. Ces axes peuvent être placés arbitrairement. Jusqu'à présent, ils étaient sur les bords extérieurs du
graphique. Déplaçons-les de telle sorte qu'ils se croisent au centre du graphique. Comme nous avons quatre droites
pour le moment, nous en masquerons deux en définissant leur couleur à None et nous déplacerons les deux autres
vers le point d'origine de coordonnées (0, 0) dans l'espace de coordonnées nommé 'data'.
...
ax = gca()
[Link]['right'].set_color('none')
[Link]['top'].set_color('none')
[Link].set_ticks_position('bottom')
[Link]['bottom'].set_position(('data',0))
[Link].set_ticks_position('left')
[Link]['left'].set_position(('data',0))
...
Documentation
- 12 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
exercice_8.py
from pylab import *
figure(figsize=(8,5), dpi=80)
subplot(111)
ax = gca()
[Link]['right'].set_color('none')
[Link]['top'].set_color('none')
[Link].set_ticks_position('bottom')
[Link]['bottom'].set_position(('data',0))
[Link].set_ticks_position('left')
[Link]['left'].set_position(('data',0))
xlim([Link]()*1.1, [Link]()*1.1)
xticks([-[Link], -[Link]/2, 0, [Link]/2, [Link]],
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
ylim([Link]()*1.1,[Link]()*1.1)
yticks([-1, +1],
[r'$-1$', r'$+1$'])
legend(loc='upper left')
# savefig("../figures/exercice_8.png",dpi=72)
show()
À présent, ajoutons au graphique une légende dans le coin supérieur gauche. Pour ce faire, il suffit d'ajouter
l'argument nommé 'label="texte"' à la commande plot(), puis de spécifier l'emplacement de cette légende.
...
plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="cosine")
plot(X, S, color="red", linewidth=2.5, linestyle="-", label="sine")
legend(loc='upper left')
- 13 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
...
Documentation
exercice_9.py
from pylab import *
figure(figsize=(8,5), dpi=80)
subplot(111)
ax = gca()
[Link]['right'].set_color('none')
[Link]['top'].set_color('none')
[Link].set_ticks_position('bottom')
[Link]['bottom'].set_position(('data',0))
[Link].set_ticks_position('left')
[Link]['left'].set_position(('data',0))
xlim([Link]()*1.1, [Link]()*1.1)
xticks([-[Link], -[Link]/2, 0, [Link]/2, [Link]],
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
ylim([Link]()*1.1,[Link]()*1.1)
yticks([-1, +1],
[r'$-1$', r'$+1$'])
t = 2*[Link]/3
plot([t,t],[0,[Link](t)],
- 14 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
exercice_9.py
color ='blue', linewidth=1.5, linestyle="--")
scatter([t,],[[Link](t),], 50, color ='blue')
annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$', xy=(t, [Link](t)), xycoords='data',
xytext=(+10, +30), textcoords='offset points', fontsize=16,
arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
plot([t,t],[0,[Link](t)],
color ='red', linewidth=1.5, linestyle="--")
scatter([t,],[[Link](t),], 50, color ='red')
annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$', xy=(t, [Link](t)), xycoords='data',
xytext=(-90, -50), textcoords='offset points', fontsize=16,
arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
legend(loc='upper left')
# savefig("../figures/exercice_9.png",dpi=72)
show()
Annotons quelques points remarquables avec la commande annotate(). Nous choisirons la valeur x=2π/3 aussi bien
pour la courbe sinus que pour la courbe cosinus. Nous placerons tout d'abord une marque sur la courbe (gros point
rond), puis nous tracerons une ligne en pointillé pour relier cette marque à l'axe (O,x) des abscisses. Pour finir, nous
utiliserons la commande annotate() pour afficher du texte et une flèche d'indication.
...
t = 2*[Link]/3
plot([t,t],[0,[Link](t)], color ='blue', linewidth=2.5, linestyle="--")
scatter([t,],[[Link](t),], 50, color ='blue')
annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
xy=(t, [Link](t)), xycoords='data',
xytext=(+10, +30), textcoords='offset points', fontsize=16,
arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$',
xy=(t, [Link](t)), xycoords='data',
xytext=(-90, -50), textcoords='offset points', fontsize=16,
arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
...
Documentation
• Artistes
• BBox
- 15 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
exercice_10.py
from pylab import *
figure(figsize=(8,5), dpi=80)
subplot(111)
ax = gca()
[Link]['right'].set_color('none')
[Link]['top'].set_color('none')
[Link].set_ticks_position('bottom')
[Link]['bottom'].set_position(('data',0))
[Link].set_ticks_position('left')
[Link]['left'].set_position(('data',0))
xlim([Link]()*1.1, [Link]()*1.1)
xticks([-[Link], -[Link]/2, 0, [Link]/2, [Link]],
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
ylim([Link]()*1.1,[Link]()*1.1)
yticks([-1, +1],
[r'$-1$', r'$+1$'])
legend(loc='upper left')
t = 2*[Link]/3
plot([t,t],[0,[Link](t)],
color ='blue', linewidth=1.5, linestyle="--")
scatter([t,],[[Link](t),], 50, color ='blue')
annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$', xy=(t, [Link](t)), xycoords='data',
xytext=(+10, +30), textcoords='offset points', fontsize=16,
arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
plot([t,t],[0,[Link](t)],
color ='red', linewidth=1.5, linestyle="--")
scatter([t,],[[Link](t),], 50, color ='red')
annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$', xy=(t, [Link](t)), xycoords='data',
- 16 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
exercice_10.py
xytext=(-90, -50), textcoords='offset points', fontsize=16,
arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
# savefig("../figures/exercice_10.png",dpi=72)
show()
Comme vous pouvez le remarquer, les étiquettes des graduations sont un peu difficiles à lire. Nous pourrions les
agrandir, puis ajuster leurs propriétés de telle sorte qu'elles s'affichent sur un ruban blanc semi-transparent, cela nous
permettrait de mieux visualiser aussi bien la courbe que les étiquettes.
...
for label in ax.get_xticklabels() + ax.get_yticklabels():
label.set_fontsize(16)
label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.65 ))
...
Jusqu'à présent, nous avons surtout utilisé la création de graphiques et de vues par défaut. Tout cela est bien
pratique lorsque l'on souhaite obtenir un résultat rapide, mais nous pourrions avoir un contrôle plus fin sur le résultat
en utilisant explicitement les graphiques ([Link]), les vues en grille ([Link]) et les vues libres
([Link]). Dans matplotlib, un objet figure représente la fenêtre GUI dans son ensemble. À l'intérieur de
cette fenêtre, plusieurs types d'affichage peuvent figurer. Alors qu'une vue en grille (subplot) positionne les tracés
à l'intérieur d'une grille d'affichage, les vues libres (axes) autorisent un placement plus arbitraire au sein de l'objet
figure. Les deux peuvent être très utiles selon l'usage que l'on veut en faire. Nous avons d'ores et déjà travaillé avec
des graphiques (figures) et des vues en grille (subplots) sans les mentionner explicitement. Lorsque nous utilisons
la commande plot(), matplotlib appelle gca() pour obtenir les vues libres actuelles et gca() appelle à son tour gcf()
pour obtenir l'objet figure (graphique) actuel. S'il n'y a pas d'objet figure à ce moment-là, gcf() appelle figure() pour en
créer un nouveau ou plus précisément, pour créer un objet figure contenant une vue en grille subplot(1,1,1). Voyons
tout cela en détail.
Un objet figure (graphique) représente la fenêtre GUI intitulée « Figure #nnn » avec nnn le numéro de la figure. Les
fenêtres « figure » sont numérotées à partir de 1 et non pas à partir de zéro (0) comme pour le comptage en Python.
Cela est clairement conforme au style Matlab™. Plusieurs arguments nommés déterminent l'apparence d'un objet
figure :
- 17 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
Les valeurs par défaut peuvent être spécifiées dans un fichier de ressources. Elles sont utilisées la plupart du temps.
Seul le numéro de figure est fréquemment changé.
Lorsque vous travaillez avec la fenêtre GUI, vous pouvez la fermer soit avec le bouton « x » dédié, soit par le code
avec la commande close().
Selon le cas :
Comme pour tous les autres objets, vous pouvez définir les propriétés d'un objet figure avec les méthodes set_<nom
propriété>(value).
Les vues en grille (subplot) permettent d'organiser les différents tracés à l'intérieur d'une grille d'affichage. Il faut
spécifier le nombre de lignes, le nombre de colonnes ainsi que le numéro du tracé. Notez toutefois que la commande
gridspec() est une alternative beaucoup plus puissante.
[Link]
from pylab import *
subplot(2,1,1)
xticks([]), yticks([])
text(0.5,0.5, 'subplot(2,1,1)',ha='center',va='center',size=24,alpha=.5)
subplot(2,1,2)
xticks([]), yticks([])
text(0.5,0.5, 'subplot(2,1,2)',ha='center',va='center',size=24,alpha=.5)
- 18 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
[Link]
# [Link]('../figures/[Link]', dpi=64)
show()
[Link]
from pylab import *
subplot(1,2,1)
xticks([]), yticks([])
text(0.5,0.5, 'subplot(1,2,1)',ha='center',va='center',size=24,alpha=.5)
subplot(1,2,2)
xticks([]), yticks([])
text(0.5,0.5, 'subplot(1,2,2)',ha='center',va='center',size=24,alpha=.5)
# [Link]('../figures/[Link]', dpi=64)
show()
- 19 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
[Link]
from pylab import *
subplot(2,2,1)
xticks([]), yticks([])
text(0.5,0.5, 'subplot(2,2,1)',ha='center',va='center',size=20,alpha=.5)
subplot(2,2,2)
xticks([]), yticks([])
text(0.5,0.5, 'subplot(2,2,2)',ha='center',va='center',size=20,alpha=.5)
subplot(2,2,3)
xticks([]), yticks([])
text(0.5,0.5, 'subplot(2,2,3)',ha='center',va='center',size=20,alpha=.5)
subplot(2,2,4)
xticks([]), yticks([])
text(0.5,0.5, 'subplot(2,2,4)',ha='center',va='center',size=20,alpha=.5)
# savefig('../figures/[Link]', dpi=64)
show()
- 20 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
[Link]
from pylab import *
import [Link] as gridspec
G = [Link](3, 3)
axes_2 = subplot(G[1,:-1])
xticks([]), yticks([])
text(0.5,0.5, 'Axes 2',ha='center',va='center',size=24,alpha=.5)
axes_4 = subplot(G[-1,0])
xticks([]), yticks([])
text(0.5,0.5, 'Axes 4',ha='center',va='center',size=24,alpha=.5)
axes_5 = subplot(G[-1,-2])
xticks([]), yticks([])
text(0.5,0.5, 'Axes 5',ha='center',va='center',size=24,alpha=.5)
#[Link]('../figures/[Link]', dpi=64)
show()
Les vues libres (axes) sont très similaires aux vues en grille (subplot) sauf qu'elles permettent un placement libre
des tracés partout dans l'objet figure (la fenêtre GUI). Par exemple, pour placer un petit tracé dans un grand tracé,
rien de plus simple avec les vues libres.
- 21 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
[Link]
from pylab import *
axes([0.1,0.1,.8,.8])
xticks([]), yticks([])
text(0.6,0.6, 'axes([0.1,0.1,.8,.8])',ha='center',va='center',size=20,alpha=.5)
axes([0.2,0.2,.3,.3])
xticks([]), yticks([])
text(0.5,0.5, 'axes([0.2,0.2,.3,.3])',ha='center',va='center',size=16,alpha=.5)
[Link]("../figures/[Link]",dpi=64)
show()
- 22 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
[Link]
from pylab import *
axes([0.1,0.1,.5,.5])
xticks([]), yticks([])
text(0.1,0.1, 'axes([0.1,0.1,.8,.8])',ha='left',va='center',size=16,alpha=.5)
axes([0.2,0.2,.5,.5])
xticks([]), yticks([])
text(0.1,0.1, 'axes([0.2,0.2,.5,.5])',ha='left',va='center',size=16,alpha=.5)
axes([0.3,0.3,.5,.5])
xticks([]), yticks([])
text(0.1,0.1, 'axes([0.3,0.3,.5,.5])',ha='left',va='center',size=16,alpha=.5)
axes([0.4,0.4,.5,.5])
xticks([]), yticks([])
text(0.1,0.1, 'axes([0.4,0.4,.5,.5])',ha='left',va='center',size=16,alpha=.5)
# [Link]("../figures/[Link]",dpi=64)
show()
Une présentation soignée des graduations de repère est une part importante du rendu final d'un graphique prêt
à l'impression. Matplotlib fournit un système de graduations entièrement personnalisable. Les localisateurs (tick
locators) permettent de préciser l'emplacement des graduations dans le tracé, alors que les formateurs (tick
formatters) permettent une mise en forme des graduations selon vos exigences. Les graduations principales et
secondaires peuvent être placées ou mises en forme indépendamment les unes des autres. Par défaut, les
graduations secondaires ne sont pas affichées, elles correspondent en fait à une liste vide et un NullLocator (voir
plus bas).
- 23 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
Classe Description
NullLocator Aucune graduation.
Tous ces localisateurs dérivent de la classe ancêtre [Link]. Vous pouvez créer votre propre
localisateur en dérivant cette même classe ancêtre.
La gestion des dates comme graduations peut s'avérer particulièrement épineuse. Toutefois, matplotlib fournit
quelques localisateurs spéciaux dans le module [Link].
- 24 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
- 25 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
- 26 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
Graphiques en 3D Textes
Indice
- 27 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
n = 256
X =
[Link](-[Link],[Link],n,endpoint=True)
Y = [Link](2*X)
plot_ex.py
from pylab import *
n = 256
X = [Link](-[Link],[Link],n,endpoint=True)
Y = [Link](2*X)
axes([0.025,0.025,0.95,0.95])
xlim(-[Link],[Link]), xticks([])
ylim(-2.5,2.5), yticks([])
# savefig('../figures/plot_ex.png',dpi=48)
show()
Indice
- 28 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
n = 1024
X = [Link](0,1,n)
Y = [Link](0,1,n)
scatter(X,Y)
show()
scatter_ex.py
from pylab import *
n = 1024
X = [Link](0,1,n)
Y = [Link](0,1,n)
T = np.arctan2(Y,X)
axes([0.025,0.025,0.95,0.95])
scatter(X,Y, s=75, c=T, alpha=.5)
xlim(-1.5,1.5), xticks([])
ylim(-1.5,1.5), yticks([])
# savefig('../figures/scatter_ex.png',dpi=48)
show()
IV-C - Histogrammes
Indice
- 29 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
n = 12
X = [Link](n)
Y1 = (1-X/float(n)) *
[Link](0.5,1.0,n)
Y2 = (1-X/float(n)) *
[Link](0.5,1.0,n)
ylim(-1.25,+1.25)
show()
bar_ex.py
from pylab import *
n = 12
X = [Link](n)
Y1 = (1-X/float(n)) * [Link](0.5,1.0,n)
Y2 = (1-X/float(n)) * [Link](0.5,1.0,n)
axes([0.025,0.025,0.95,0.95])
bar(X, +Y1, facecolor='#9999ff', edgecolor='white')
bar(X, -Y2, facecolor='#ff9999', edgecolor='white')
xlim(-.5,n), xticks([])
ylim(-1.25,+1.25), yticks([])
# savefig('../figures/bar_ex.png', dpi=48)
show()
Indice
- 30 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
n = 256
x = [Link](-3,3,n)
y = [Link](-3,3,n)
X,Y = [Link](x,y)
contour_ex.py
from pylab import *
n = 256
x = [Link](-3,3,n)
y = [Link](-3,3,n)
X,Y = [Link](x,y)
axes([0.025,0.025,0.95,0.95])
xticks([]), yticks([])
# savefig('../figures/contour_ex.png',dpi=48)
show()
Indice
Vous devrez faire attention au point d'origine de l'image dans la commande imshow() et utiliser
une barre colorée (colorbar).
- 31 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
n = 10
x = [Link](-3,3,4*n)
y = [Link](-3,3,3*n)
X,Y = [Link](x,y)
imshow(f(X,Y)), show()
imshow_ex.py
from pylab import *
n = 10
x = [Link](-3,3,3.5*n)
y = [Link](-3,3,3.0*n)
X,Y = [Link](x,y)
Z = f(X,Y)
axes([0.025,0.025,0.95,0.95])
imshow(Z,interpolation='nearest', cmap='bone', origin='lower')
colorbar(shrink=.92)
xticks([]), yticks([])
# savefig('../figures/imshow_ex.png', dpi=48)
show()
Indice
- 32 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
n = 8
X,Y = [Link][0:n,0:n]
quiver(X,Y), show()
quiver_ex.py
from pylab import *
n = 8
X,Y = [Link][0:n,0:n]
T = np.arctan2(Y-n/2.0, X-n/2.0)
R = 10+[Link]((Y-n/2.0)**2+(X-n/2.0)**2)
U,V = R*[Link](T), R*[Link](T)
axes([0.025,0.025,0.95,0.95])
quiver(X,Y,U,V,R, alpha=.5)
quiver(X,Y,U,V, edgecolor='k', facecolor='None', linewidth=.5)
xlim(-1,n), xticks([])
ylim(-1,n), yticks([])
# savefig('../figures/quiver_ex.png',dpi=48)
show()
Indice
- 33 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
n = 20
Z = [Link](0,1,n)
pie(Z), show()
pie_ex.py
from pylab import *
n = 20
Z = [Link](n)
Z[-1] *= 2
axes([0.025,0.025,0.95,0.95])
# savefig('../figures/pie_ex.png',dpi=48)
show()
IV-H - Grilles
axes = gca()
axes.set_xlim(0,4)
axes.set_ylim(0,3)
axes.set_xticklabels([])
axes.set_yticklabels([])
show()
- 34 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
grid_ex.py
from pylab import *
ax = axes([0.025,0.025,0.95,0.95])
ax.set_xlim(0,4)
ax.set_ylim(0,3)
[Link].set_major_locator(MultipleLocator(1.0))
[Link].set_minor_locator(MultipleLocator(0.1))
[Link].set_major_locator(MultipleLocator(1.0))
[Link].set_minor_locator(MultipleLocator(0.1))
[Link](which='major', axis='x', linewidth=0.75, linestyle='-', color='0.75')
[Link](which='minor', axis='x', linewidth=0.25, linestyle='-', color='0.75')
[Link](which='major', axis='y', linewidth=0.75, linestyle='-', color='0.75')
[Link](which='minor', axis='y', linewidth=0.25, linestyle='-', color='0.75')
ax.set_xticklabels([])
ax.set_yticklabels([])
# savefig('../figures/grid_ex.png',dpi=48)
show()
Indice
subplot(2,2,1)
subplot(2,2,3)
subplot(2,2,4)
show()
multiplot_ex.py
from pylab import *
fig =figure()
fig.subplots_adjust(bottom=0.025, left=0.025, top = 0.975, right=0.975)
subplot(2,1,1)
xticks([]), yticks([])
subplot(2,3,4)
- 35 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
multiplot_ex.py
xticks([]), yticks([])
subplot(2,3,5)
xticks([]), yticks([])
subplot(2,3,6)
xticks([]), yticks([])
savefig('../figures/multiplot_ex.png',dpi=48)
show()
Indice
axes([0,0,1,1])
N = 20
theta =
[Link](0.0, 2*[Link], 2*[Link]/N)
radii = 10*[Link](N)
width = [Link]/4*[Link](N)
bars = bar(theta, radii, width=width,
bottom=0.0)
show()
polar_ex.py
from pylab import *
ax = axes([0.025,0.025,0.95,0.95], polar=True)
N = 20
theta = [Link](0.0, 2*[Link], 2*[Link]/N)
radii = 10*[Link](N)
width = [Link]/4*[Link](N)
bars = bar(theta, radii, width=width, bottom=0.0)
ax.set_xticklabels([])
ax.set_yticklabels([])
# savefig('../figures/polar_ex.png',dpi=48)
show()
- 36 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
IV-K - Graphiques en 3D
Indice
fig = figure()
ax = Axes3D(fig)
X = [Link](-4, 4, 0.25)
Y = [Link](-4, 4, 0.25)
X, Y = [Link](X, Y)
R = [Link](X**2 + Y**2)
Z = [Link](R)
ax.plot_surface(X, Y, Z, rstride=1,
cstride=1, cmap='hot')
show()
plot3d_ex.py
from pylab import *
from mpl_toolkits.mplot3d import Axes3D
fig = figure()
ax = Axes3D(fig)
X = [Link](-4, 4, 0.25)
Y = [Link](-4, 4, 0.25)
X, Y = [Link](X, Y)
R = [Link](X**2 + Y**2)
Z = [Link](R)
# savefig('../figures/plot3d_ex.png',dpi=48)
show()
IV-L - Textes
Indice
- 37 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
text_ex.py
from pylab import *
eqs = []
[Link]((r"$W^{3\beta}_{\delta_1 \rho_1 \sigma_2} = U^{3\beta}_{\delta_1 \rho_1} + \frac{1}{8 \pi 2} \int^{\alp
[Link]((r"$\frac{d\rho}{d t} + \rho \vec{v}\cdot\nabla\vec{v} = -\nabla p + \mu
\nabla^2 \vec{v} + \rho \vec{g}$"))
[Link]((r"$\int_{-\infty}^\infty e^{-x^2}dx=\sqrt{\pi}$"))
[Link]((r"$E = mc^2 = \sqrt{{m_0}^2c^4 + p^2c^2}$"))
[Link]((r"$F_G = G\frac{m_1m_2}{r^2}$"))
axes([0.025,0.025,0.95,0.95])
for i in range(24):
index = [Link](0,len(eqs))
eq = eqs[index]
size = [Link](12,32)
x,y = [Link](0,1,2)
alpha = [Link](0.25,.75)
text(x, y, eq, ha='center', va='center', color="#11557c", alpha=alpha,
transform=gca().transAxes, fontsize=size, clip_on=True)
xticks([]), yticks([])
# savefig('../figures/text_ex.png',dpi=48)
show()
Matplotlib bénéficie d'une documentation riche et variée, de même que d'une vaste communauté d'utilisateurs et de
développeurs. Ci-dessous, quelques liens dignes d'intérêt.
V-A - Tutoriels
• Tutoriel pyplot
• Présentation
• Gérer les propriétés de trait
• Travailler avec plusieurs objets figure et plusieurs vues
- 38 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
• Commandes de départ
• Importer des données image dans des tableaux numpy
• Représenter des tableaux numpy comme des images
• Tutoriel texte
• Présentation
• Commandes de texte élémentaires
• Propriétés de textes et modes d'affichage
• Ecrire des formules mathématiques
• Rendu de texte avec LaTeX
• Annoter du texte
• Tutoriel pour artistes
• Présentation
• Personnaliser vos objets
• Conteneurs d'objets
• Conteneur graphique ([Link])
• Conteneur de vues libres ([Link])
• Conteneurs d'axes de repère
• Conteneurs de graduations
• Tutoriels chemins
• Présentation
• Exemple de courbe de Bézier
• Chemins mélangés
• Tutoriel transformations
• Présentation
• Coordonnées 'data'
• Coordonnées de vues libres ([Link])
• Transformations de dégradés (gradients)
• Utiliser les transformations offset pour créer un effet d'ombre projetée
• Le mécanisme de transformation(pipeline)
• Guide utilisateur
• FAQ - Foire Aux Questions
• Installation de matplotlib
• Utilisation
• Recettes de cuisine (How-To)
• Problèmes et solutions
• Variables d'environnement
• Captures d'écran
Le code source de matplotlib est particulièrement bien documenté ; vous pouvez même obtenir une aide rapide sur
telle ou telle commande directement dans une console Python :
- 39 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
plot(*args, **kwargs)
Plot lines and/or markers to the
:class:`~[Link]`. *args* is a variable length
argument, allowing for multiple *x*, *y* pairs with an
optional format string. For example, each of the following is
legal::
V-D - Galeries
La galerie matplotlib est incroyablement utile lorsque l'on cherche un exemple pour un type de graphique en
particulier. Chaque exemple est accompagné de son code source.
Pour finir, vous disposez d'une mailing list utilisateurs où vous pourrez demander de l'aide et une mailing list
développeurs pour les questions plus techniques.
VI - Références
- 40 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
- 41 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
-- Pointillé long
-. Pointillé mixte
: Pointillé court
. Gros points
, Pixels
o Cercles
s Carrés
d Losanges
h Hexagones verticaux
H Hexagones horizontaux
p Pentagones
| Traits verticaux
_ Traits horizontaux
- 42 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
VI-C - Marques
1 Graduation à droite
2 Graduation en haut
3 Graduation en bas
4 Lambda à gauche
5 Lambda à droite
6 Lambda en haut
7 Lambda en bas
o Cercles
h Hexagones verticaux
H Hexagones horizontaux
_ Traits horizontaux
8 Octogones
p Pentagones
d Losanges
, Pixels
. Gros points
s Carrés
- 43 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
| Traits verticaux
Toutes les bandes colorées peuvent être inversées en ajoutant _r en fin de nom. Par exemple, gray_r sera l'inverse
de gray.
Veuillez consulter documenter les bandes colorées matplotlib pour plus d'information.
VI-D-1 - De base
Nom Apparence
autumn
bone
cool
copper
flag
gray
hot
hsv
jet
pink
prism
spectral
spring
summer
winter
VI-D-2 - GIST
Nom Apparence
gist_earth
gist_gray
gist_heat
gist_ncar
gist_rainbow
gist_stern
gist_yarg
- 44 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
VI-D-3 - Séquences
Nom Apparence
BrBG
PiYG
PRGn
PuOr
RdBu
RdGy
RdYlBu
RdYlGn
Spectral
VI-D-4 - Dégradés
Nom Apparence
Blues
BuGn
BuPu
GnBu
Greens
Greys
Oranges
OrRd
PuBu
PuBuGn
PuRd
Purples
RdPu
Reds
YlGn
YlGnBu
YlOrBr
YlOrRd
- 45 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
VI-D-5 - Qualifiés
Nom Apparence
Accent
Dark2
Paired
Pastel1
Pastel2
Set1
Set2
Set3
VI-D-6 - Divers
Nom Apparence
afmhot
binary
brg
bwr
coolwarm
CMRmap
cubehelix
gnuplot
gnuplot2
ocean
rainbow
seismic
terrain
Le présent document est basé sur le tutoriel de Mike Müller disponible sur le site scipy lectures.
Les textes originaux sont disponibles ici. Les illustrations se trouvent dans ce répertoire et les scripts dans celui-
ci. Le répertoire Github est ici.
Les codes sources et les ressources sont publiés sous licence Creative Commons Paternité 3.0 - licence USA (CC-
by) [Link]
Un grand merci à Bill Wing, Christoph Deil et Wojciech Mamrak pour la relecture et les corrections.
Des illustrations de présentation de diverses techniques de représentation graphique scientifique se trouvent à cet
endroit.
- 46 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]
Tutoriel Matplotlib par Nicolas P. Rougier
Nous remercions Nicolas Rougier qui nous a aimablement autorisé à traduire son article Matlab Tutorial.
Nos remerciements à Raphaël SEBAN (tarball69) pour la traduction et à Fabien (f-leb) pour la mise au gabarit.
- 47 -
Le contenu de cet article est rédigé par Nicolas P. Rougier et est mis à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les
logos [Link], en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 [Link].
[Link]