Hi,
I just ran into the following Bug: When choosing Qt4Agg as my backend in the
matplotlibrc, using TeX will break matplotlib. When choosing backend: MacOSX,
everything works fine. The QT4Agg backend also works fine as long as I'm not
using TeX. Here is a fairly minimal example:
######### file: killqtmpl.py #########
import pylab as plt
import time
print "This works"
plt.rcdefaults()
plt.plot([1,2,3])
plt.show()
time.sleep(2)
plt.close()
print "This won't work with qt4agg"
plt.rc('font', family='sans-serif')
plt.rc('text', usetex=True)
plt.rcParams['text.latex.preamble']=r""" \usepackage[tx]{sfmath}
\usepackage{helvet}
"""
plt.plot([1,2,3])
plt.show()
time.sleep(2)
plt.close()
print "This won't either"
plt.rc('font', family='serif')
plt.rcParams['text.latex.preamble']=r"\usepackage{mathptmx}"
plt.plot([1,2,3])
plt.show()
#############################
So, when i run the above script using the MacOSX backend, it displays the same
figure (a blue line) three times and outputs:
-------
This works
This won't work with qt4agg
This won't either
-------
Now when using Qt4Agg, only the first figure will get displayed and the
following error messages appear:
-------
In [1]: run killqtmpl.py
This works
This won't work with qt4agg
ERROR: An unexpected error occurred while tokenizing input
The following traceback may be corrupted or invalid
The error message is: ('EOF in multi-line statement', (17, 0))
ERROR: An unexpected error occurred while tokenizing input
The following traceback may be corrupted or invalid
The error message is: ('EOF in multi-line statement', (15, 0))
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/backends/backend_qt4agg.pyc
in paintEvent(self, e)
80
81 if self.replot:
---> 82 FigureCanvasAgg.draw(self)
83 self.replot = False
84
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/backends/backend_agg.pyc
in draw(self)
399
400 self.renderer = self.get_renderer()
--> 401 self.figure.draw(self.renderer)
402
403 def get_renderer(self):
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/artist.pyc
in draw_wrapper(artist, renderer, *args, **kwargs)
53 def draw_wrapper(artist, renderer, *args, **kwargs):
54 before(artist, renderer)
---> 55 draw(artist, renderer, *args, **kwargs)
56 after(artist, renderer)
57
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/figure.pyc
in draw(self, renderer)
882 dsu.sort(key=itemgetter(0))
883 for zorder, func, args in dsu:
--> 884 func(*args)
885
886 renderer.close_group('figure')
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/artist.pyc
in draw_wrapper(artist, renderer, *args, **kwargs)
53 def draw_wrapper(artist, renderer, *args, **kwargs):
54 before(artist, renderer)
---> 55 draw(artist, renderer, *args, **kwargs)
56 after(artist, renderer)
57
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/axes.pyc
in draw(self, renderer, inframe)
1981
1982 for zorder, a in dsu:
-> 1983 a.draw(renderer)
1984
1985 renderer.close_group('axes')
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/artist.pyc
in draw_wrapper(artist, renderer, *args, **kwargs)
53 def draw_wrapper(artist, renderer, *args, **kwargs):
54 before(artist, renderer)
---> 55 draw(artist, renderer, *args, **kwargs)
56 after(artist, renderer)
57
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/axis.pyc
in draw(self, renderer, *args, **kwargs)
1035
1036 ticks_to_draw = self._update_ticks(renderer)
-> 1037 ticklabelBoxes, ticklabelBoxes2 =
self._get_tick_bboxes(ticks_to_draw, renderer)
1038
1039 for tick in ticks_to_draw:
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/axis.pyc
in _get_tick_bboxes(self, ticks, renderer)
986 for tick in ticks:
987 if tick.label1On and tick.label1.get_visible():
--> 988 extent = tick.label1.get_window_extent(renderer)
989 ticklabelBoxes.append(extent)
990 if tick.label2On and tick.label2.get_visible():
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/text.pyc
in get_window_extent(self, renderer, dpi)
745 raise RuntimeError('Cannot get window extent w/o renderer')
746
--> 747 bbox, info = self._get_layout(self._renderer)
748 x, y = self.get_position()
749 x, y = self.get_transform().transform_point((x, y))
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/text.pyc
in _get_layout(self, renderer)
307 w, h, d = get_text_width_height_descent(clean_line,
308
self._fontproperties,
--> 309 ismath=ismath)
310 else:
311 w, h, d = 0, 0, 0
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/backends/backend_agg.pyc
in get_text_width_height_descent(self, s, prop, ismath)
172 fontsize = prop.get_size_in_points()
173 w, h, d = texmanager.get_text_width_height_descent(s,
fontsize,
--> 174
renderer=self)
175 return w, h, d
176
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/texmanager.pyc
in get_text_width_height_descent(self, tex, fontsize, renderer)
606 dvifile = self.make_dvi(tex, fontsize)
607 dvi = dviread.Dvi(dvifile, 72*dpi_fraction)
--> 608 page = iter(dvi).next()
609 dvi.close()
610 # A total height (including the descent) needs to be
returned.
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/dviread.pyc
in __iter__(self)
63 """
64 while True:
---> 65 have_page = self._read()
66 if have_page:
67 yield self._output()
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/dviread.pyc
in _read(self)
119 while True:
120 byte = ord(self.file.read(1))
--> 121 self._dispatch(byte)
122 # if self.state == _dvistate.inpage:
123 # matplotlib.verbose.report(
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/dviread.pyc
in _dispatch(self, byte)
207 c, s, d, a, l = [ self._arg(x) for x in (4, 4, 4, 1, 1) ]
208 n = self.file.read(a+l)
--> 209 self._fnt_def(k, c, s, d, a, l, n)
210 elif byte == 247:
211 i, num, den, mag, k = [ self._arg(x) for x in (1, 4, 4, 4,
1) ]
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/dviread.pyc
in _fnt_def(self, k, c, s, d, a, l, n)
368 # (d, tfm.design_size, n)
369
--> 370 vf = _vffile(n[-l:])
371
372 self.fonts[k] = DviFont(scale=s, tfm=tfm, texname=n, vf=vf)
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/dviread.pyc
in _vffile(texname)
879
880 def _vffile(texname):
--> 881 return _fontfile(texname, Vf, '.vf', _vfcache)
882
883
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/dviread.pyc
in _fontfile(texname, class_, suffix, cache)
868 filename = find_tex_file(texname + suffix)
869 if filename:
--> 870 result = class_(filename)
871 else:
872 result = None
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/dviread.pyc
in __init__(self, filename)
477 self._chars = {}
478 self._packet_ends = None
--> 479 self._read()
480 self.close()
481
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/dviread.pyc
in _read(self)
119 while True:
120 byte = ord(self.file.read(1))
--> 121 self._dispatch(byte)
122 # if self.state == _dvistate.inpage:
123 # matplotlib.verbose.report(
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/dviread.pyc
in _dispatch(self, byte)
506 self._init_packet(pl, cc, tfm)
507 elif 243 <= byte <= 246:
--> 508 Dvi._dispatch(self, byte)
509 elif byte == 247: # preamble
510 i, k = self._arg(1), self._arg(1)
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/dviread.pyc
in _dispatch(self, byte)
207 c, s, d, a, l = [ self._arg(x) for x in (4, 4, 4, 1, 1) ]
208 n = self.file.read(a+l)
--> 209 self._fnt_def(k, c, s, d, a, l, n)
210 elif byte == 247:
211 i, num, den, mag, k = [ self._arg(x) for x in (1, 4, 4, 4,
1) ]
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/dviread.pyc
in _fnt_def(self, k, *args)
544
545 def _fnt_def(self, k, *args):
--> 546 Dvi._fnt_def(self, k, *args)
547 if self._first_font is None:
548 self._first_font = k
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/dviread.pyc
in _fnt_def(self, k, c, s, d, a, l, n)
370 vf = _vffile(n[-l:])
371
--> 372 self.fonts[k] = DviFont(scale=s, tfm=tfm, texname=n, vf=vf)
373
374 def _post(self):
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/dviread.pyc
in __init__(self, scale, tfm, texname, vf)
416 self.size = scale * (72.0 / (72.27 * 2**16))
417 try:
--> 418 nchars = max(tfm.width.iterkeys()) + 1
419 except ValueError:
420 nchars = 0
AttributeError: 'NoneType' object has no attribute 'width'
This won't either
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/backends/backend_qt4agg.pyc
in paintEvent(self, e)
80
81 if self.replot:
---> 82 FigureCanvasAgg.draw(self)
83 self.replot = False
84
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/backends/backend_agg.pyc
in draw(self)
399
400 self.renderer = self.get_renderer()
--> 401 self.figure.draw(self.renderer)
402
403 def get_renderer(self):
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/artist.pyc
in draw_wrapper(artist, renderer, *args, **kwargs)
53 def draw_wrapper(artist, renderer, *args, **kwargs):
54 before(artist, renderer)
---> 55 draw(artist, renderer, *args, **kwargs)
56 after(artist, renderer)
57
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/figure.pyc
in draw(self, renderer)
882 dsu.sort(key=itemgetter(0))
883 for zorder, func, args in dsu:
--> 884 func(*args)
885
886 renderer.close_group('figure')
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/artist.pyc
in draw_wrapper(artist, renderer, *args, **kwargs)
53 def draw_wrapper(artist, renderer, *args, **kwargs):
54 before(artist, renderer)
---> 55 draw(artist, renderer, *args, **kwargs)
56 after(artist, renderer)
57
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/axes.pyc
in draw(self, renderer, inframe)
1981
1982 for zorder, a in dsu:
-> 1983 a.draw(renderer)
1984
1985 renderer.close_group('axes')
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/artist.pyc
in draw_wrapper(artist, renderer, *args, **kwargs)
53 def draw_wrapper(artist, renderer, *args, **kwargs):
54 before(artist, renderer)
---> 55 draw(artist, renderer, *args, **kwargs)
56 after(artist, renderer)
57
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/axis.pyc
in draw(self, renderer, *args, **kwargs)
1035
1036 ticks_to_draw = self._update_ticks(renderer)
-> 1037 ticklabelBoxes, ticklabelBoxes2 =
self._get_tick_bboxes(ticks_to_draw, renderer)
1038
1039 for tick in ticks_to_draw:
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/axis.pyc
in _get_tick_bboxes(self, ticks, renderer)
986 for tick in ticks:
987 if tick.label1On and tick.label1.get_visible():
--> 988 extent = tick.label1.get_window_extent(renderer)
989 ticklabelBoxes.append(extent)
990 if tick.label2On and tick.label2.get_visible():
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/text.pyc
in get_window_extent(self, renderer, dpi)
745 raise RuntimeError('Cannot get window extent w/o renderer')
746
--> 747 bbox, info = self._get_layout(self._renderer)
748 x, y = self.get_position()
749 x, y = self.get_transform().transform_point((x, y))
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/text.pyc
in _get_layout(self, renderer)
307 w, h, d = get_text_width_height_descent(clean_line,
308
self._fontproperties,
--> 309 ismath=ismath)
310 else:
311 w, h, d = 0, 0, 0
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/backends/backend_agg.pyc
in get_text_width_height_descent(self, s, prop, ismath)
172 fontsize = prop.get_size_in_points()
173 w, h, d = texmanager.get_text_width_height_descent(s,
fontsize,
--> 174
renderer=self)
175 return w, h, d
176
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/texmanager.pyc
in get_text_width_height_descent(self, tex, fontsize, renderer)
606 dvifile = self.make_dvi(tex, fontsize)
607 dvi = dviread.Dvi(dvifile, 72*dpi_fraction)
--> 608 page = iter(dvi).next()
609 dvi.close()
610 # A total height (including the descent) needs to be
returned.
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/dviread.pyc
in __iter__(self)
63 """
64 while True:
---> 65 have_page = self._read()
66 if have_page:
67 yield self._output()
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/dviread.pyc
in _read(self)
119 while True:
120 byte = ord(self.file.read(1))
--> 121 self._dispatch(byte)
122 # if self.state == _dvistate.inpage:
123 # matplotlib.verbose.report(
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/dviread.pyc
in _dispatch(self, byte)
207 c, s, d, a, l = [ self._arg(x) for x in (4, 4, 4, 1, 1) ]
208 n = self.file.read(a+l)
--> 209 self._fnt_def(k, c, s, d, a, l, n)
210 elif byte == 247:
211 i, num, den, mag, k = [ self._arg(x) for x in (1, 4, 4, 4,
1) ]
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/dviread.pyc
in _fnt_def(self, k, c, s, d, a, l, n)
361 def _fnt_def(self, k, c, s, d, a, l, n):
362 tfm = _tfmfile(n[-l:])
--> 363 if c != 0 and tfm.checksum != 0 and c != tfm.checksum:
364 raise ValueError, 'tfm checksum mismatch: %s'%n
365 # It seems that the assumption behind the following check is
incorrect:
AttributeError: 'NoneType' object has no attribute 'checksum'
--------
My system: A Macbook Pro with OS X 10.7.4, 4GB ram. I'm using the latest
py27-ipython from macports (@12.1). I also installed the qtconsole dependencies
and therefore py27-pyqt4 last week using macports.
Darwin macbookpro2009.fritz.box 11.4.0 Darwin Kernel Version 11.4.0: Mon Apr 9
19:32:15 PDT 2012; root:xnu-1699.26.8~1/RELEASE_X86_64 x86_64
Matplotlib-Version: 1.1.0
Backend Qt4Agg version 4.9.1
At the moment I can just stick with the MacOSX backend, but hopefully this
message will help someone fix the bug.
Best regards,
Felix Patzelt
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Matplotlib-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users