升级到新的IPython笔记本已经给matplotlib带来了问题

时间:2015-03-23 16:55:41

标签: python matplotlib ipython

我不确定出了什么问题,但是自从今天升级我的IPython笔记本v3.0.0后,我在调用plt.show()时遇到了一个相当令人担忧的错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/Users/iMacHome/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/artist.pyc in draw_wrapper(artist, renderer, *args, **kwargs)
     57     def draw_wrapper(artist, renderer, *args, **kwargs):
     58         before(artist, renderer)
---> 59         draw(artist, renderer, *args, **kwargs)
     60         after(artist, renderer)
     61 

/Users/iMacHome/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/figure.pyc in draw(self, renderer)
   1077         dsu.sort(key=itemgetter(0))
   1078         for zorder, a, func, args in dsu:
-> 1079             func(*args)
   1080 
   1081         renderer.close_group('figure')

/Users/iMacHome/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/artist.pyc in draw_wrapper(artist, renderer, *args, **kwargs)
     57     def draw_wrapper(artist, renderer, *args, **kwargs):
     58         before(artist, renderer)
---> 59         draw(artist, renderer, *args, **kwargs)
     60         after(artist, renderer)
     61 

/Users/iMacHome/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/axes/_base.pyc in draw(self, renderer, inframe)
   2090 
   2091         for zorder, a in dsu:
-> 2092             a.draw(renderer)
   2093 
   2094         renderer.close_group('axes')

/Users/iMacHome/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/artist.pyc in draw_wrapper(artist, renderer, *args, **kwargs)
     57     def draw_wrapper(artist, renderer, *args, **kwargs):
     58         before(artist, renderer)
---> 59         draw(artist, renderer, *args, **kwargs)
     60         after(artist, renderer)
     61 

/Users/iMacHome/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/legend.pyc in draw(self, renderer)
    448         # update the location and size of the legend. This needs to
    449         # be done in any case to clip the figure right.
--> 450         bbox = self._legend_box.get_window_extent(renderer)
    451         self.legendPatch.set_bounds(bbox.x0, bbox.y0,
    452                                     bbox.width, bbox.height)

/Users/iMacHome/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/offsetbox.pyc in get_window_extent(self, renderer)
    254         get the bounding box in display space.
    255         '''
--> 256         w, h, xd, yd, offsets = self.get_extent_offsets(renderer)
    257         px, py = self.get_offset(w, h, xd, yd, renderer)
    258         return mtransforms.Bbox.from_bounds(px - xd, py - yd, w, h)

/Users/iMacHome/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/offsetbox.pyc in get_extent_offsets(self, renderer)
    375 
    376         whd_list = [c.get_extent(renderer)
--> 377                     for c in self.get_visible_children()]
    378         whd_list = [(w, h, xd, (h - yd)) for w, h, xd, yd in whd_list]
    379 

/Users/iMacHome/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/offsetbox.pyc in get_extent(self, renderer)
    247         Return with, height, xdescent, ydescent of box
    248         """
--> 249         w, h, xd, yd, offsets = self.get_extent_offsets(renderer)
    250         return w, h, xd, yd
    251 

/Users/iMacHome/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/offsetbox.pyc in get_extent_offsets(self, renderer)
    446 
    447         whd_list = [c.get_extent(renderer)
--> 448                     for c in self.get_visible_children()]
    449 
    450         if not whd_list:

/Users/iMacHome/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/offsetbox.pyc in get_extent(self, renderer)
    247         Return with, height, xdescent, ydescent of box
    248         """
--> 249         w, h, xd, yd, offsets = self.get_extent_offsets(renderer)
    250         return w, h, xd, yd
    251 

/Users/iMacHome/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/offsetbox.pyc in get_extent_offsets(self, renderer)
    375 
    376         whd_list = [c.get_extent(renderer)
--> 377                     for c in self.get_visible_children()]
    378         whd_list = [(w, h, xd, (h - yd)) for w, h, xd, yd in whd_list]
    379 

/Users/iMacHome/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/offsetbox.pyc in get_extent(self, renderer)
    247         Return with, height, xdescent, ydescent of box
    248         """
--> 249         w, h, xd, yd, offsets = self.get_extent_offsets(renderer)
    250         return w, h, xd, yd
    251 

/Users/iMacHome/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/offsetbox.pyc in get_extent_offsets(self, renderer)
    446 
    447         whd_list = [c.get_extent(renderer)
--> 448                     for c in self.get_visible_children()]
    449 
    450         if not whd_list:

/Users/iMacHome/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/offsetbox.pyc in get_extent(self, renderer)
    778         clean_line, ismath = self._text.is_math_text(self._text._text)
    779         _, h_, d_ = renderer.get_text_width_height_descent(
--> 780             "lp", self._text._fontproperties, ismath=False)
    781 
    782         bbox, info, d = self._text._get_layout(renderer)

/Users/iMacHome/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.py in get_text_width_height_descent(self, s, prop, ismath)
    164         size = self.points_to_pixels(points)
    165         width, height, descent = self.gc.get_text_width_height_descent(
--> 166             six.text_type(s), family, size, weight, style)
    167         return  width, height, 0.0*descent
    168 

ValueError: failed to convert font family name to ASCII

这会弄乱动态编辑器,它无法正确显示完整的绘图。然后在保存文件时,它看起来很好。它只是没有正确显示在动态plt.show()视图中?

请帮忙!

1 个答案:

答案 0 :(得分:0)

似乎这个问题源于在图例属性参数中更改字体系列。

所以,而不是:

axHistX.legend(loc='upper left',  prop={'family':'serif', 'size':'x-small'})

您需要使用:

axHistX.legend(loc='upper left', prop={'size':8})

结合全球财产变化:

mpl.rc('font',family='serif')
相关问题