EPD / CANOPY环境中的不同IPYTHON版本

时间:2013-08-05 21:23:17

标签: ipython enthought ipython-notebook canopy

我遇到了在ipython笔记本中绘图的问题。基本上,当我在Canopy编辑器命令窗口中执行它时,相同的代码会生成我想要的图表,但是只需

在笔记本中打包
  

KeyError:位于0x53e2f310的matplotlib.axes.AxesSubplot对象

我无法理解这些环境之间的差异。直到我在两个环境中运行print(IPython.sys_info())命令。

在Canopy IPython.sys_info()返回:

  

{' commit_hash':' c433019',' commit_source':' installation',   ' default_encoding':' UTF-8',' ipython_path':   ' /usr/local/Canopy/appdata/canopy-1.0.3.1262.rh5-x86_64/lib/python2.7/site-packages/IPython' ;,   ' ipython_version':' 1.0.dev',' os_name':' posix',' platform':   ' Linux的3.8.0-26泛型-x86_64的与 - Debian的喘鸣SID&#39 ;,   ' sys_executable&#39 ;:   ' / home / kambiz / Enthought / Canopy_64bit / User / bin / python',' sys_platform':   ' linux2',' sys_version':' 2.7.3 | 64位| (默认,2013年6月14日,   18:32:48)\ n [GCC 4.1.2 20080704(Red Hat 4.1.2-52)]'}

在Notebook IPython.sys_info()中返回:

  

{' commit_hash':' 177894e',' commit_source':' installation',   ' default_encoding':' UTF-8',' ipython_path':   ' /home/kambiz/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/IPython' ;,   ' ipython_version':' 0.13.1',' os_name':' posix',' platform':   ' Linux的3.8.0-26泛型-x86_64的与 - Debian的喘鸣SID&#39 ;,   ' sys_executable&#39 ;:   ' / home / kambiz / Enthought / Canopy_64bit / User / bin / python',' sys_platform':   ' linux2',' sys_version':' 2.7.3 | 64位| (默认,2013年6月14日,   18:32:48)\ n [GCC 4.1.2 20080704(Red Hat 4.1.2-52)]'}

我注意到Ipython_path指向EPD文件所在的不同路径,这反过来指向不同版本的ipython!我不确定这是怎么发生的,也不确定如何修复它。这样两个环境都运行相同的版本,以相同的方式执行代码。

使用IPython版本0.13.1导致matplotlib失败的代码片段是:

import pylab as pl
...
fig, axes = pl.subplots(len(evokeds), sharex=True, sharey=True, tight_layout=True,                     figsize=(8, 11), dpi=100)
figname = (data_path + subj_queue[r] + '/' + subj_queue[r] + '_evokeds.pdf')
for evoked, ax, cond in zip(evokeds, axes.flatten(), ['Known', 'Known-ctrl', 'Unknown', 'Unkown-ctrl']):
    evoked.plot(picks=mag_picks, axes=ax)
    ax.set_title('%s' % cond)
fig.savefig(figname, format='pdf')

evokeds是由第三方类函数Evoked生成的mne.Epochs.average()list个对象的类evoked.plot(picks=mag_picks, axes=ax)。在IPython 0.13.1中崩溃matplotlib的绘图命令也是来自mne模块的类函数mne.fiff.evoked.plot()。可以使用Ipython 0.13.1在外部笔记本中生成相同绘图问题的公开示例here。错误{{1}}生成的是KeyError:。以下是子图的屏幕截图:

enter image description here

这是完整的追溯:

  

KeyError Traceback(最近一次调用   最后)in()        25 figname =(data_path + subj_queue [r] +' /' + subj_queue [r] +' _evokeds.pdf')        26为诱发,ax in zip(evokeds,axes.flatten()):   ---> 27 evoked.plot(picks = mag_picks,axes = ax)        28 ax.set_title('%s'%cond)        29 fig.savefig(figname,format =' pdf')

     情节中的/usr/local/mne-python/mne/fiff/evoked.pyc(自我,选择,   排除,单位,显示,ylim,proj,xlim,hline,单位,scalings,标题,   轴)       396 plot_evoked(self,picks = picks,exclude = exclude,unit = unit,show = show,       397 ylim = ylim,proj = proj,xlim = xlim,hline = hline,units = units,    - > 398 scalings = scalings,titles = titles,axes = axes)       399       400 def plot_topomap(self,times = None,ch_type =' mag&#39 ;, layout = None,vmax = None,

     plot_evoked中的 /usr/local/mne-python/mne/viz.pyc(evoked,picks,   排除,单位,显示,ylim,proj,xlim,hline,单位,scalings,标题,   轴)1213 1214 D = this_scaling * evoked.data [idx,   :]    - > 1215 pl.axes(ax)1216 ax.plot(times,D.T)1217 if xlim not not:

     

/home/kambiz/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/pyplot.pyc   在轴(* args,** kwargs)       650       651 if isinstance(arg,Axes):    - > 652 a = gcf()。sca(arg)       653其他:       654 rect = arg

     

/home/kambiz/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/figure.pyc   在sca(self,a)1196 def sca(self,a):1197'设置   当前轴为a并返回'    - > 1198 self._axstack.bubble(a)1199 for self中的func._axobservers:func(self)1200 return a

     

/home/kambiz/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/figure.pyc   在泡沫中(自我,a)        97堆栈,到顶部。        98"""   ---> 99返回Stack.bubble(self,self._entry_from_axes(a))       100       101 def add(self,key,a):

     

/home/kambiz/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/figure.pyc   在_entry_from_axes(self,e)        85        86 def _entry_from_axes(self,e):   ---> 87 ind,k = dict([(a,(ind,k))for(k,(ind,a))in self._elements])[e]        88返回(k,(ind,e))        89

     

KeyError:matplotlib.axes.AxesSubplot对象位于0x56e401d0

0 个答案:

没有答案