[Matplotlib-users] Problem with importing LaTeX package amsmath and $\text{}$
Hello, I've been having some troubles with LaTeX in matplotlib. My example script: #!/usr/bin/env python2 #-*- coding: utf-8 -*- __author__ = 'Pawel Chojnacki' __copyright__ ='Copyleft 2013 Pawel Chojnacki' __version__ = '1.0' __date__ = '29-03-2013' __license__ = 'GPLv3' import numpy as np import matplotlib as mpl # Zmiana ustawien LaTeXa mpl.rcParams['text.latex.preamble'].append(r'\usepackage{amsmath}') #~ mpl.rcParams['text.latex.preamble'] = r'\usepackage{amsmath}' #~ mpl.rcParams['text.latex.preamble']=[r"\usepackage{amsmath}"] #~ mpl.rcParams['math.usetex'] = True print mpl.rcParams['text.latex.preamble'] import pylab as py py.axhspan(8400,8730,alpha=0.15) py.title(u'Wyniki eksperymentu pomiaru gęstości ciała stałego\n',size='large',family='serif') py.ylabel((u'Gęstość ciała stałego ' + r'$\frac{kg}{m^3}$'),size='large',family='serif') #~ py.ylabel((r'$\text{lol}$'),size='large',family='serif') py.ylabel((r'$\text{lol}$'),size='large',family='serif') py.xlabel(u'Metoda pomiaru',size='large',family='serif') py.grid(True) py.show() Gives me the following output: ['', '\\usepackage{amsmath}'] Exception in Tkinter callback Traceback (most recent call last): File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1437, in __call__ return self.func(*args) File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 236, in resize self.show() File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 239, in draw FigureCanvasAgg.draw(self) File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py", line 421, in draw self.figure.draw(self.renderer) File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in draw_wrapper draw(artist, renderer, *args, **kwargs) File "/usr/lib/pymodules/python2.7/matplotlib/figure.py", line 898, in draw func(*args) File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in draw_wrapper draw(artist, renderer, *args, **kwargs) File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 1997, in draw a.draw(renderer) File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in draw_wrapper draw(artist, renderer, *args, **kwargs) File "/usr/lib/pymodules/python2.7/matplotlib/axis.py", line 1054, in draw self.label.draw(renderer) File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in draw_wrapper draw(artist, renderer, *args, **kwargs) File "/usr/lib/pymodules/python2.7/matplotlib/text.py", line 526, in draw bbox, info = self._get_layout(renderer) File "/usr/lib/pymodules/python2.7/matplotlib/text.py", line 309, in _get_layout ismath=ismath) File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py", line 193, in get_text_width_height_descent self.mathtext_parser.parse(s, self.dpi, prop) File "/usr/lib/pymodules/python2.7/matplotlib/mathtext.py", line 2999, in parse box = self._parser.parse(s, font_output, fontsize, dpi) File "/usr/lib/pymodules/python2.7/matplotlib/mathtext.py", line 2357, in parse self._expression.parseString(s) File "/usr/lib/pymodules/python2.7/matplotlib/pyparsing.py", line 1048, in parseString loc, tokens = self._parse( instring, 0 ) File "/usr/lib/pymodules/python2.7/matplotlib/pyparsing.py", line 981, in _parseCache value = self._parseNoCache( instring, loc, doActions, callPreParse ) File "/usr/lib/pymodules/python2.7/matplotlib/pyparsing.py", line 924, in _parseNoCache loc,tokens = self.parseImpl( instring, preloc, doActions ) File "/usr/lib/pymodules/python2.7/matplotlib/pyparsing.py", line 2559, in parseImpl return self.expr._parse( instring, loc, doActions, callPreParse=False ) File "/usr/lib/pymodules/python2.7/matplotlib/pyparsing.py", line 981, in _parseCache value = self._parseNoCache( instring, loc, doActions, callPreParse ) File "/usr/lib/pymodules/python2.7/matplotlib/pyparsing.py", line 924, in _parseNoCache loc,tokens = self.parseImpl( instring, preloc, doActions ) File "/usr/lib/pymodules/python2.7/matplotlib/pyparsing.py", line 2307, in parseImpl loc, exprtokens = e._parse( instring, loc, doActions ) File "/usr/lib/pymodules/python2.7/matplotlib/pyparsing.py", line 981, in _parseCache value = self._parseNoCache( instring, loc, doActions, callPreParse ) File "/usr/lib/pymodules/python2.7/matplotlib/pyparsing.py", line 924, in _parseNoCach
Re: [Matplotlib-users] Problem with importing LaTeX package amsmath and $\text{}$
Please pardon me, but what object is math.usetex attribute of? I can't find it in the documentation. http://matplotlib.org/users/usetex.html Mentions only text.usetex. 2013/3/30 Phil Elson > Doesn't look like you're using math.usetex & therefore are not actually > using latex, but mpl's stripped down tex implementation. > > Try setting usetex to True, or alternatively I think you could use \mathrm > instead of \text to get non mathematical text. > > HTH > > > On 30 March 2013 11:43, Pawel Chojnacki wrote: > >> Hello, >> >> I've been having some troubles with LaTeX in matplotlib. My example >> script: >> >> #!/usr/bin/env python2 >> #-*- coding: utf-8 -*- >> >> __author__ = 'Pawel Chojnacki' >> __copyright__ ='Copyleft 2013 Pawel Chojnacki' >> __version__ = '1.0' >> __date__ = '29-03-2013' >> __license__ = 'GPLv3' >> >> import numpy as np >> import matplotlib as mpl # Zmiana ustawien LaTeXa >> mpl.rcParams['text.latex.preamble'].append(r'\usepackage{amsmath}') >> #~ mpl.rcParams['text.latex.preamble'] = r'\usepackage{amsmath}' >> #~ mpl.rcParams['text.latex.preamble']=[r"\usepackage{amsmath}"] >> #~ mpl.rcParams['math.usetex'] = True >> print mpl.rcParams['text.latex.preamble'] >> import pylab as py >> >> py.axhspan(8400,8730,alpha=0.15) >> py.title(u'Wyniki eksperymentu pomiaru gęstości ciała >> stałego\n',size='large',family='serif') >> py.ylabel((u'Gęstość ciała stałego ' + >> r'$\frac{kg}{m^3}$'),size='large',family='serif') >> #~ py.ylabel((r'$\text{lol}$'),size='large',family='serif') >> py.ylabel((r'$\text{lol}$'),size='large',family='serif') >> py.xlabel(u'Metoda pomiaru',size='large',family='serif') >> py.grid(True) >> py.show() >> >> Gives me the following output: >> >> ['', '\\usepackage{amsmath}'] >> Exception in Tkinter callback >> Traceback (most recent call last): >> File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1437, in __call__ >> return self.func(*args) >> File >> "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line >> 236, in resize >> self.show() >> File >> "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line >> 239, in draw >> FigureCanvasAgg.draw(self) >> File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py", >> line 421, in draw >> self.figure.draw(self.renderer) >> File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in >> draw_wrapper >> draw(artist, renderer, *args, **kwargs) >> File "/usr/lib/pymodules/python2.7/matplotlib/figure.py", line 898, in >> draw >> func(*args) >> File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in >> draw_wrapper >> draw(artist, renderer, *args, **kwargs) >> File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 1997, in >> draw >> a.draw(renderer) >> File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in >> draw_wrapper >> draw(artist, renderer, *args, **kwargs) >> File "/usr/lib/pymodules/python2.7/matplotlib/axis.py", line 1054, in >> draw >> self.label.draw(renderer) >> File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in >> draw_wrapper >> draw(artist, renderer, *args, **kwargs) >> File "/usr/lib/pymodules/python2.7/matplotlib/text.py", line 526, in >> draw >> bbox, info = self._get_layout(renderer) >> File "/usr/lib/pymodules/python2.7/matplotlib/text.py", line 309, in >> _get_layout >> ismath=ismath) >> File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py", >> line 193, in get_text_width_height_descent >> self.mathtext_parser.parse(s, self.dpi, prop) >> File "/usr/lib/pymodules/python2.7/matplotlib/mathtext.py", line 2999, >> in parse >> box = self._parser.parse(s, font_output, fontsize, dpi) >> File "/usr/lib/pymodules/python2.7/matplotlib/mathtext.py", line 2357, >> in parse >> self._expression.parseString(s) >> File "/usr/lib/pymodules/python2
Re: [Matplotlib-users] Problem with importing LaTeX package amsmath and $\text{}$
2013/3/30 Juergen Hasch > Am 30.03.2013 16:29, schrieb Pawel Chojnacki: > > Please pardon me, but what object is math.usetex attribute of? I can't > find it in the documentation. > > > > http://matplotlib.org/users/usetex.html Mentions only text.usetex. > > > > > > You need to set > mpl.rcParams['text.usetex'] = True > > For text you need unicode, for latex raw encoding. > To have text and latex in one line, use > xlabel(u'Häallo '+r'$\varphi$'+ 'r') > > Works for me, at least. > I've already tried that, and I got the response: ['', '\\usepackage{amsmath}'] Exception in Tkinter callback Traceback (most recent call last): File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1437, in __call__ return self.func(*args) File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 236, in resize self.show() File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 239, in draw FigureCanvasAgg.draw(self) File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py", line 421, in draw self.figure.draw(self.renderer) File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in draw_wrapper draw(artist, renderer, *args, **kwargs) File "/usr/lib/pymodules/python2.7/matplotlib/figure.py", line 898, in draw func(*args) File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in draw_wrapper draw(artist, renderer, *args, **kwargs) File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 1997, in draw a.draw(renderer) File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in draw_wrapper draw(artist, renderer, *args, **kwargs) File "/usr/lib/pymodules/python2.7/matplotlib/text.py", line 526, in draw bbox, info = self._get_layout(renderer) File "/usr/lib/pymodules/python2.7/matplotlib/text.py", line 309, in _get_layout ismath=ismath) File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py", line 188, in get_text_width_height_descent renderer=self) File "/usr/lib/pymodules/python2.7/matplotlib/texmanager.py", line 606, in get_text_width_height_descent dvifile = self.make_dvi(tex, fontsize) File "/usr/lib/pymodules/python2.7/matplotlib/texmanager.py", line 351, in make_dvi texfile = self.make_tex(tex, fontsize) File "/usr/lib/pymodules/python2.7/matplotlib/texmanager.py", line 259, in make_tex fh.write(s) UnicodeEncodeError: 'ascii' codec can't encode character u'\u0119' in position 349: ordinal not in range(128) And after adding: mpl.rcParams['text.latex.preamble'].append(r'\usepackage{amsmath},\usepackage[utf8]{inputenc}') I got: ['', '\\usepackage{amsmath},\\usepackage[utf8]{inputenc}'] Exception in Tkinter callback Traceback (most recent call last): File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1437, in __call__ return self.func(*args) File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 236, in resize self.show() File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 239, in draw FigureCanvasAgg.draw(self) File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py", line 421, in draw self.figure.draw(self.renderer) File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in draw_wrapper draw(artist, renderer, *args, **kwargs) File "/usr/lib/pymodules/python2.7/matplotlib/figure.py", line 898, in draw func(*args) File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in draw_wrapper draw(artist, renderer, *args, **kwargs) File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 1997, in draw a.draw(renderer) File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in draw_wrapper draw(artist, renderer, *args, **kwargs) File "/usr/lib/pymodules/python2.7/matplotlib/axis.py", line 1042, in draw ticklabelBoxes, ticklabelBoxes2 = self._get_tick_bboxes(ticks_to_draw, renderer) File "/usr/lib/pymodules/python2.7/matplotlib/axis.py", line 993, in _get_tick_bboxes extent = tick.label1.get_window_extent(renderer) File "/usr/lib/pymodules/python2.7/matplotlib/text.py", line 747, in get_window_extent bbox, info = self._get_layout(self._renderer) File "/usr/lib/pymodules/python2.7/matplotlib/text.py", line 309, in _get_layout ismath=ismath) File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py", line 188, in get_text_width_height_descent renderer=self
Re: [Matplotlib-users] Problem with importing LaTeX package amsmath and $\text{}$
.tex files > under ~./matplotlib/tex.cache > > It looks like you have a problem with the font encoding when using unicode > characters. > This works for me under Linux and Windows: > > > import numpy as np > import matplotlib as mpl > mpl.rcParams['text.latex.**preamble'] = [r'\usepackage{amsmath}' , > r'\usepackage[T1]{fontenc}'] > mpl.rcParams['text.latex.**unicode'] = True > mpl.rcParams['text.usetex'] = True > > > import pylab as py > > py.axhspan(8400,8730,alpha=0.**15) > py.title(u'Wyniki eksperymentu pomiaru gęstości ciała > stałego',size='large',family='**serif') > py.ylabel(r'$\text{lol}$',**size='large',family='serif') > py.grid(True) > py.show() > > Am 30.03.2013 22:15, schrieb Pawel Chojnacki: > >> 2013/3/30 Juergen Hasch mailto:pyt...@elbonia.de>> >> >> >> Am 30.03.2013 16:29, schrieb Pawel Chojnacki: >> > Please pardon me, but what object is math.usetex attribute of? I >> can't find it in the documentation. >> > >> > >> http://matplotlib.org/users/**usetex.html<http://matplotlib.org/users/usetex.html>Mentions >> only text.usetex. >> > >> > >> >> You need to set >> mpl.rcParams['text.usetex'] = True >> >> For text you need unicode, for latex raw encoding. >> To have text and latex in one line, use >> xlabel(u'Häallo '+r'$\varphi$'+ 'r') >> >> Works for me, at least. >> >> >> I've already tried that, and I got the response: >> >> ['', '\\usepackage{amsmath}'] >> Exception in Tkinter callback >> Traceback (most recent call last): >>File "/usr/lib/python2.7/lib-tk/**Tkinter.py", line 1437, in __call__ >> return self.func(*args) >>File >> "/usr/lib/pymodules/python2.7/**matplotlib/backends/backend_**tkagg.py", >> line 236, in resize >> self.show() >>File >> "/usr/lib/pymodules/python2.7/**matplotlib/backends/backend_**tkagg.py", >> line 239, in draw >> FigureCanvasAgg.draw(self) >>File >> "/usr/lib/pymodules/python2.7/**matplotlib/backends/backend_**agg.py", >> line 421, in draw >> self.figure.draw(self.**renderer) >>File "/usr/lib/pymodules/python2.7/**matplotlib/artist.py", line 55, >> in draw_wrapper >> draw(artist, renderer, *args, **kwargs) >>File "/usr/lib/pymodules/python2.7/**matplotlib/figure.py", line 898, >> in draw >> func(*args) >>File "/usr/lib/pymodules/python2.7/**matplotlib/artist.py", line 55, >> in draw_wrapper >> draw(artist, renderer, *args, **kwargs) >>File "/usr/lib/pymodules/python2.7/**matplotlib/axes.py", line 1997, >> in draw >> a.draw(renderer) >>File "/usr/lib/pymodules/python2.7/**matplotlib/artist.py", line 55, >> in draw_wrapper >> draw(artist, renderer, *args, **kwargs) >>File "/usr/lib/pymodules/python2.7/**matplotlib/text.py", line 526, >> in draw >> bbox, info = self._get_layout(renderer) >>File "/usr/lib/pymodules/python2.7/**matplotlib/text.py", line 309, >> in _get_layout >> ismath=ismath) >>File >> "/usr/lib/pymodules/python2.7/**matplotlib/backends/backend_**agg.py", >> line 188, in get_text_width_height_descent >> renderer=self) >>File "/usr/lib/pymodules/python2.7/**matplotlib/texmanager.py", line >> 606, in get_text_width_height_descent >> dvifile = self.make_dvi(tex, fontsize) >>File "/usr/lib/pymodules/python2.7/**matplotlib/texmanager.py", line >> 351, in make_dvi >> texfile = self.make_tex(tex, fontsize) >>File "/usr/lib/pymodules/python2.7/**matplotlib/texmanager.py", line >> 259, in make_tex >> fh.write(s) >> UnicodeEncodeError: 'ascii' codec can't encode character u'\u0119' in >> position 349: ordinal not in range(128) >> >> And after adding: >> mpl.rcParams['text.latex.**preamble'].append(r'\**usepackage{amsmath},\** >> usepackage[utf8]{inputenc}') >> I got: >> >> ['', '\\usepackage{amsmath},\\**usepackage[utf8]{inputenc}'] >> Exception in Tkinter callback >> Traceback (most recent call last): >>File "/usr/li
Re: [Matplotlib-users] Problem with importing LaTeX package amsmath and $\text{}$
Thank you, it works flawlessly now :) 2013/3/31 Juergen Hasch > Am 31.03.2013 08:50, schrieb Pawel Chojnacki: > > Thank you very much - hovewer, your solution isn't enough. Adding your >> lines generate: >> >> > The problem is this: > > > RuntimeError: LaTeX was not able to process the following string: >> u'' >> Here is the full report generated by LaTeX: >> >> > Latex doesn't like the empty string. This is caused by the '\n' in your > title. > Can you replace your original line: > py.title(u'Wyniki eksperymentu pomiaru gęstości ciała > stałego\n',size='large',**family='serif') > with the new one, as in the example I sent you: > > py.title(u'Wyniki eksperymentu pomiaru gęstości ciała > stałego',size='large',family='**serif') > > -- Minimize network downtime and maximize team effectiveness. Reduce network management and security costs.Learn how to hire the most talented Cisco Certified professionals. Visit the Employer Resources Portal http://www.cisco.com/web/learning/employer_resources/index.html___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users