4

When I try to use the LaTeX amsmath package in matplotlib, I get a slew of incomprehensible errors. Has anyone been able to make something like this work? If so, I would love to see an example.

Here is what I've tried:

import matplotlib from matplotlib import pyplot from numpy import arange x= arange(5) y= x**1.5 matplotlib.rc('text', usetex = True) matplotlib.rc('font', **{'family' : "sans-serif"}) params= {'text.latex.preamble' : [r'\usepackage{amsmath}']} pyplot.rcParams.update(params) fig= pyplot.figure(figsize=[10,7], dpi=120, facecolor=[1, 1, 1]) pyplot.plot(x, y, linewidth=2) pyplot.title(r"""$f(x)= \begin{cases} \a*x^\{1.5\}2 + c,& \text{if } -1 \leq x \leq 1\\ 0, & \text{otherwise} \end{cases}""") pyplot.show() 

This code creates the following error:

RuntimeError: LaTeX was not able to process the following string: ' \\\\begin{cases}' Here is the full report generated by LaTeX: This is pdfTeX, Version 3.14159265-2.6-1.40.18 (MiKTeX 2.9.6300 64-bit) entering extended mode (1727d2fa12a0305b2ddc30e92e4e21fa.tex LaTeX2e <2017-04-15> Babel <3.9r> and hyphenation patterns for 75 language(s) loaded. ("C:\Program Files\MiKTeX 2.9\tex\latex\base\article.cls" Document Class: article 2014/09/29 v1.4h Standard LaTeX document class ("C:\Program Files\MiKTeX 2.9\tex\latex\base\size10.clo")) (C:\Users\s117250\AppData\Roaming\MiKTeX\2.9\tex\latex\type1cm\type1cm.sty) ("C:\Program Files\MiKTeX 2.9\tex\latex\base\textcomp.sty" ("C:\Program Files\MiKTeX 2.9\tex\latex\base\ts1enc.def")) ("C:\Program Files\MiKTeX 2.9\tex\latex\amsmath\amsmath.sty" For additional information on amsmath, use the `?' option. ("C:\Program Files\MiKTeX 2.9\tex\latex\amsmath\amstext.sty" ("C:\Program Files\MiKTeX 2.9\tex\latex\amsmath\amsgen.sty")) ("C:\Program Files\MiKTeX 2.9\tex\latex\amsmath\amsbsy.sty") ("C:\Program Files\MiKTeX 2.9\tex\latex\amsmath\amsopn.sty")) ("C:\Program Files\MiKTeX 2.9\tex\latex\geometry\geometry.sty" ("C:\Program Files\MiKTeX 2.9\tex\latex\graphics\keyval.sty") ("C:\Program Files\MiKTeX 2.9\tex\generic\oberdiek\ifpdf.sty") ("C:\Program Files\MiKTeX 2.9\tex\generic\oberdiek\ifvtex.sty") ("C:\Program Files\MiKTeX 2.9\tex\generic\ifxetex\ifxetex.sty") ("C:\Program Files\MiKTeX 2.9\tex\latex\geometry\geometry.cfg") Package geometry Warning: Over-specification in `h'-direction. `width' (5058.9pt) is ignored. Package geometry Warning: Over-specification in `v'-direction. `height' (5058.9pt) is ignored. ) (1727d2fa12a0305b2ddc30e92e4e21fa.aux) ("C:\Program Files\MiKTeX 2.9\tex\latex\base\ts1cmr.fd") *geometry* driver: auto-detecting *geometry* detected driver: dvips ! Missing $ inserted. <inserted text> $ l.12 ...0000}{15.000000}{\sffamily \begin{cases} } ! LaTeX Error: \begin{cases} on input line 12 ended by \end{document}. See the LaTeX manual or LaTeX Companion for explanation. Type H <return> for immediate help. ... l.13 \end{document} (1727d2fa12a0305b2ddc30e92e4e21fa.aux) ! You can't use `\end' in internal vertical mode. \enddocument ... \endgroup \deadcycles \z@ \@@end l.13 \end{document} ! LaTeX Error: \begin{cases} on input line 12 ended by \end{document}. See the LaTeX manual or LaTeX Companion for explanation. Type H <return> for immediate help. ... l.13 \end{document} ! Missing } inserted. <inserted text> } l.13 \end{document} ! Missing \right. inserted. <inserted text> \right . l.13 \end{document} ! Missing $ inserted. <inserted text> $ l.13 \end{document} ) ! Emergency stop. <*> ./1727d2fa12a0305b2ddc30e92e4e21fa.tex No pages of output. Transcript written on 1727d2fa12a0305b2ddc30e92e4e21fa.log. 

2 Answers 2

13

Note that the accepted answer is correct but the parameter-setting method is now deprecated; this answer gives the preferred input syntax, i.e.:

 plt.rc('text', usetex=True) plt.rc('text.latex', preamble=r'\usepackage{amsmath} \usepackage{foo-name} `...') 
Sign up to request clarification or add additional context in comments.

Comments

6

You need to make sure the string is valid latex. Then the following should work:

import matplotlib from matplotlib import pyplot from numpy import arange x= arange(5) y= x**1.5 matplotlib.rc('text', usetex = True) matplotlib.rc('font', **{'family' : "sans-serif"}) params= {'text.latex.preamble' : [r'\usepackage{amsmath}']} pyplot.rcParams.update(params) fig= pyplot.figure(figsize=[10,7], dpi=120, facecolor=[1, 1, 1]) pyplot.plot(x, y, linewidth=2) pyplot.title(r"$f(x)= \begin{cases} a\times x^{1.5}2 + c,& \text{if } -1 \leq x \leq 1\\ 0, & \text{otherwise} \end{cases}$") pyplot.show() 

producing

enter image description here

1 Comment

With the corrected LaTeX, I'm now getting a different behavior. The application simply hangs. (No error messages are generated). I suspect that something is wrong with my MikTeX installation.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.