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
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to