Python Matplotlib错误TypeError:draw_text_image的输入参数无效

时间:2015-06-30 15:57:34

标签: python matplotlib plot

我对python有点新意,所以请耐心等待。我有一个绘图问题。所以我有一个纬度,经度,海拔和浓度随时间变化的数据集。我试图在每个独特的纬度和经度上绘制每个高程的浓度与时间的关系。下面是为了尝试实现这一点而编写的代码(我在此之前已经在代码中导入了所有必需的模块,以下只是给我提问的代码片段)

lat=df['Lat']
lat=lat.unique()
from matplotlib import axes
for a in range(0,len(lat)): #for unique latitude
current_lat=lat[a]
mask=df[['Lat']].isin([current_lat]).all(axis=1)
df1=df.ix[mask]
lon=df1['Lon']
lon=lon.unique()
for b in range(0,len(lon)):
    current_lon=lon[b]
    mask=df1[['Lon']].isin([current_lon]).all(axis=1)
    df2=df1.ix[mask]
    df2=df2.sort('El',axis=0)
    elev=df2.El
    elev=elev.unique()
    plt.clf()
    #d['lat,lon']=(current_lat,current_lon)
    for c in range(0,len(elev)):
        current_elev=elev[c]
        mask=df2[['El']].isin([current_elev]).all(axis=1)
        df3=df2.ix[mask]
        df3=df3.sort()
        if len(df3)>1:
            x=df3.index
            x=list(x)
            y=list(df3.C)
            fig=plt.figure(a+b+1)
            ax=plt.subplot(111)
            fig.set_size_inches(22,12,forward=True)
            plt.plot(x,y,hold=True,label=current_elev)
            plt.legend() 
    del_x=float(x_coord_release)-float(current_lat)
    del_y=float(y_coord_release)-float(current_lon)
    dist=round(math.sqrt(del_x**2+del_y**2),3)
    textstr='Distance from release=\n%.2f\n'%(dist)
    props=dict(boxstyle='round',facecolor='wheat',alpha=0.5)
    #ax=plt.subplot(1,1,1)

    xlim=ax.get_xbound()
    ylim=ax.get_ybound()
    ax.text(xlim[1],ylim[1],textstr,bbox=props)
    ax.text(10,10,"Relative to Release Location",fontsize=9,color="black",bbox=dict(facecolor='wheat', alpha=0.5))   
    ax.set_title('Concentration vs Time based on Elevation at x={}, y={}'.format(int(round(float(current_lat),0)),int(round(float(current_lon),0))))
    figure_name='Concentration vs Time based on Elevation at x={}, y={}'.format(int(round(float(current_lat),0)),int(round(float(current_lon),0)))
    ax.set_xlabel('Time (min)')
    ax.set_ylabel('Concentration (mg/m$^3$)')
    fig.savefig(rdir+'\\'+figure_name+'.png',dpi=100) 
    #plt.show() 
    #plt.draw()
    #raw_input('enter')    
    plt.close()

我收到的错误消息/回溯如下:

 TypeError                                 Traceback (most recent call last)
 C:\Users\bhall\Documents\Scripts\MESO_plot_v2.py in <module>()
 874         ax.set_xlabel('Time (min)')
 875         ax.set_ylabel('Concentration (mg/m$^3$)')
 --> 876         fig.savefig(rdir+'\\'+figure_name+'.png',dpi=100)
 877         #plt.show()
 878         #plt.draw()

 C:\Users\bhall\AppData\Local\Enthought\Canopy\User\lib\site-   packages\matplotlib\figure.pyc in savefig(self, *args, **kwargs)
 1474             self.set_frameon(frameon)
 1475 
 -> 1476         self.canvas.print_figure(*args, **kwargs)
 1477 
 1478         if frameon:

 C:\Users\bhall\AppData\Local\Enthought\Canopy\User\lib\site-  packages\matplotlib\backends\backend_qt5agg.pyc in print_figure(self, *args,   **kwargs)
 159 
 160     def print_figure(self, *args, **kwargs):
 --> 161         FigureCanvasAgg.print_figure(self, *args, **kwargs)
 162         self.draw()
 163 

 C:\Users\bhall\AppData\Local\Enthought\Canopy\User\lib\site-packages\matplotlib\backend_bases.pyc in print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format, **kwargs)
2209                 orientation=orientation,
2210                 bbox_inches_restore=_bbox_inches_restore,
-> 2211                 **kwargs)
2212         finally:
2213             if bbox_inches and restore_bbox:

C:\Users\bhall\AppData\Local\Enthought\Canopy\User\lib\site-packages\matplotlib\backends\backend_agg.pyc in print_png(self, filename_or_obj, *args, **kwargs)
 519 
 520     def print_png(self, filename_or_obj, *args, **kwargs):
 --> 521         FigureCanvasAgg.draw(self)
 522         renderer = self.get_renderer()
 523         original_dpi = renderer.dpi

 C:\Users\bhall\AppData\Local\Enthought\Canopy\User\lib\site-packages\matplotlib\backends\backend_agg.pyc in draw(self)
 467 
 468         try:
 --> 469             self.figure.draw(self.renderer)
 470         finally:
471             RendererAgg.lock.release()

C:\Users\bhall\AppData\Local\Enthought\Canopy\User\lib\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 

 C:\Users\bhall\AppData\Local\Enthought\Canopy\User\lib\site-packages\matplotlib\figure.pyc in draw(self, renderer)
 1083         dsu.sort(key=itemgetter(0))
 1084         for zorder, a, func, args in dsu:
 -> 1085             func(*args)
 1086 
 1087         renderer.close_group('figure')

 C:\Users\bhall\AppData\Local\Enthought\Canopy\User\lib\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 

 C:\Users\bhall\AppData\Local\Enthought\Canopy\User\lib\site-packages\matplotlib\axes\_base.pyc in draw(self, renderer, inframe)
 2108 
 2109         for zorder, a in dsu:
 ->   2110             a.draw(renderer)
 2111 
 2112         renderer.close_group('axes')

 C:\Users\bhall\AppData\Local\Enthought\Canopy\User\lib\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 

 C:\Users\bhall\AppData\Local\Enthought\Canopy\User\lib\site-packages\matplotlib\text.pyc in draw(self, renderer)
 640                 renderer.draw_text(gc, x, y, clean_line,
 641                                    self._fontproperties, angle,
 --> 642                                    ismath=ismath, mtext=mtext)
 643 
 644         gc.restore()

 C:\Users\bhall\AppData\Local\Enthought\Canopy\User\lib\site-packages\matplotlib\backends\backend_agg.pyc in draw_text(self, gc, x, y, s, prop, angle, ismath, mtext)
 204         #print x, y, int(x), int(y), s
 205         self._renderer.draw_text_image(
 --> 206             font.get_image(), np.round(x - xd), np.round(y + yd) + 1, angle, gc)
 207 
 208     def get_text_width_height_descent(self, s, prop, ismath):

TypeError: Invalid input arguments to draw_text_image 

它成功地遍历了几个图,但是在一个图上不断崩溃并给出了该错误。我尝试过手动绘制数据并且我没有任何问题,因此我不知道问题/解决方案是什么。任何帮助将不胜感激!

0 个答案:

没有答案