matplotlib
Intégration avec TeX / LaTeX
Recherche…
Remarques
- La prise en charge de LaTeX par Matplotlib nécessite une installation LaTeX opérationnelle, dvipng (qui peut être incluse avec votre installation LaTeX) et Ghostscript (GPL Ghostscript 8.60 ou version ultérieure est recommandé).
- Le support pgf de Matplotlib nécessite une installation récente de LaTeX incluant les packages TikZ / PGF (tels que TeXLive), de préférence avec XeLaTeX ou LuaLaTeX.
Insertion de formules TeX dans les parcelles
Les formules TeX peuvent être insérées dans le tracé à l'aide de la fonction rc
import matplotlib.pyplot as plt
plt.rc(usetex = True)
ou accéder aux rcParams
:
import matplotlib.pyplot as plt
params = {'tex.usetex': True}
plt.rcParams.update(params)
TeX utilise la barre oblique inverse \
pour les commandes et les symboles, ce qui peut entrer en conflit avec des caractères spéciaux dans les chaînes Python. Pour utiliser des barres obliques inverses littérales dans une chaîne Python, elles doivent soit être échappées, soit incorporées dans une chaîne brute:
plt.xlabel('\\alpha')
plt.xlabel(r'\alpha')
La parcelle suivante peut être produit par le code
import matplotlib.pyplot as plt
plt.rc(usetex = True)
x = range(0,10)
y = [t**2 for t in x]
z = [t**2+1 for t in x]
plt.plot(x, y, label = r'$\beta=\alpha^2$')
plt.plot(x, z, label = r'$\beta=\alpha^2+1$')
plt.xlabel(r'$\alpha$')
plt.ylabel(r'$\beta$')
plt.legend(loc=0)
plt.show()
Les équations affichées (telles que $$...$$
ou \begin{equation}...\end{equation}
) ne sont pas prises en charge. Néanmoins, le style mathématique affiché est possible avec \displaystyle
.
Pour charger des paquets latex, utilisez l'argument tex.latex.preamble
:
params = {'text.latex.preamble' : [r'\usepackage{siunitx}', r'\usepackage{amsmath}']}
plt.rcParams.update(params)
Notez cependant l'avertissement dans l' exemple de fichier matplotlibrc :
#text.latex.preamble : # IMPROPER USE OF THIS FEATURE WILL LEAD TO LATEX FAILURES
# AND IS THEREFORE UNSUPPORTED. PLEASE DO NOT ASK FOR HELP
# IF THIS FEATURE DOES NOT DO WHAT YOU EXPECT IT TO.
# preamble is a comma separated list of LaTeX statements
# that are included in the LaTeX document preamble.
# An example:
# text.latex.preamble : \usepackage{bm},\usepackage{euler}
# The following packages are always loaded with usetex, so
# beware of package collisions: color, geometry, graphicx,
# type1cm, textcomp. Adobe Postscript (PSSNFS) font packages
# may also be loaded, depending on your font settings
Enregistrement et exportation de tracés utilisant TeX
Afin d'inclure les tracés créés avec matplotlib dans les documents TeX, ils doivent être enregistrés sous pdf
fichiers pdf
ou eps
. De cette manière, tout texte du tracé (y compris les formules TeX) est rendu sous forme de texte dans le document final.
import matplotlib.pyplot as plt
plt.rc(usetex=True)
x = range(0, 10)
y = [t**2 for t in x]
z = [t**2+1 for t in x]
plt.plot(x, y, label=r'$\beta=\alpha^2$')
plt.plot(x, z, label=r'$\beta=\alpha^2+1$')
plt.xlabel(r'$\alpha$')
plt.ylabel(r'$\beta$')
plt.legend(loc=0)
plt.savefig('my_pdf_plot.pdf') # Saving plot to pdf file
plt.savefig('my_eps_plot.eps') # Saving plot to eps file
Les diagrammes dans matplotlib peuvent être exportés vers le code TeX en utilisant le pgf
macro pgf
pour afficher les graphiques.
import matplotlib.pyplot as plt
plt.rc(usetex=True)
x = range(0, 10)
y = [t**2 for t in x]
z = [t**2+1 for t in x]
plt.plot(x, y, label=r'$\beta=\alpha^2$')
plt.plot(x, z, label=r'$\beta=\alpha^2+1$')
plt.xlabel(r'$\alpha$')
plt.ylabel(r'$\beta$')
plt.legend(loc=0)
plt.savefig('my_pgf_plot.pgf')
Utilisez la commande rc
pour changer le moteur TeX utilisé
plt.rc('pgf', texsystem='pdflatex') # or luatex, xelatex...
Pour inclure la figure .pgf
, écrivez dans votre document LaTeX
\usepackage{pgf}
\input{my_pgf_plot.pgf}