SourceForge logo
SourceForge logo
Menu

matplotlib-users

From: Felix P. <fe...@ne...> - 2012年05月28日 12:02:17
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-1699268~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
From: Jouni K. S. <jk...@ik...> - 2012年05月28日 14:10:33
Felix Patzelt <fe...@ne...> writes:
> I just ran into the following Bug: When choosing Qt4Agg as my backend
> in the matplotlibrc, using TeX will break matplotlib. 
Could you run your test script with --verbose-debug, redirect the output
to a file and send it to me (off-list; it will be a large file)?
-- 
Jouni K. Seppänen
http://www.iki.fi/jks
From: Jouni K. S. <jk...@ik...> - 2012年05月28日 18:24:54
Jouni K. Seppänen <jk...@ik...> writes:
> Felix Patzelt <fe...@ne...> writes:
>
>> I just ran into the following Bug: When choosing Qt4Agg as my backend
>> in the matplotlibrc, using TeX will break matplotlib. 
>
> Could you run your test script with --verbose-debug, redirect the output
> to a file and send it to me (off-list; it will be a large file)?
Got it, thanks. This looks really odd: with both MacOSX and QT4Agg
backends, kpsewhich finds some TeX-related files, but with QT4Agg some
files are not found. It doesn't look like a simple matter of wrong paths
or anything like that, because then it would not find any files.
We have had multiple problems related to Qt and subprocesses. Some
Googling suggests that such problems are quite prevalent and might not
be easy to solve.
-- 
Jouni K. Seppänen
http://www.iki.fi/jks
From: Jouni K. S. <jk...@ik...> - 2012年05月28日 18:30:19
Attachments: 09293bf.patch
Felix Patzelt <fe...@ne...> writes:
> Matplotlib-Version: 1.1.0
If that's the released version and not something from git, it does not
have one possibly related fix. Could you try cherry-picking commit
09293bf from github, or applying the following patch.
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.
Thanks for helping keep SourceForge clean.
X





Briefly describe the problem (required):
Upload screenshot of ad (required):
Select a file, or drag & drop file here.
Screenshot instructions:

Click URL instructions:
Right-click on the ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Ad destination/click URL:

AltStyle によって変換されたページ (->オリジナル) /