Python Matplotlib TypeError:用于绘制“文本”imag的输入参数无效

2024-06-16 08:47:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我对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()

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

^{pr2}$

它成功地循环了几个图,但在一个图上不断崩溃并给出了错误。我试着手动绘制这些数据,但是没有问题,所以我不知道问题/解决方案是什么。任何帮助将不胜感激!在


Tags: forlenpltmaskcurrentaxfloatunique