Python Contour Plot不规则间隔数据 - 内存错误

时间:2015-06-23 08:41:35

标签: python matplotlib

我试图绘制非矩形数据的等高线图而不进行任何插值(我不想在这里使用meshgrid模块)。因此我尝试了以下代码:

x_co=data_U[:,0] #-> 22450 rows
y_co=data_U[:,1] #-> 22450 rows
U_co=data_U[:,3] #-> 22450 rows
u_im=np.zeros((len(u_co),len(u_co))) #24450,22450 array
u_im[zip(y_co,x_co)]=U_co #22450,22450 array

fig1.plt.figure()
plate=pltcontourf(x_co,y_co,u_im,vmin=-10, vmax=10,extent=[x_co[0],x_co[-1],y_co[0],y_co[-1]],origin='upper',levels=level,cmap=plt.cm.jet,aspect='auto')   
plt.show

我的内存总是耗尽,因此想法是通过np.meshgrid(xi,yi)以1000,1000点降低分辨率。 下一步是在新的meshgrid上插入数据U_co,但这里的三角测量连接不应该的顶点。所以我的非规则网格是插值给出的不现实。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您可以使用scipy.interpolate.griddata使用method=nearestsee here)插入数据。没有数据就很难提供更多帮助,但代码看起来像是,

import numpy as np
from scipy.interpolate import griddata

x_co=data_U[:,0] #-> 22450 rows
y_co=data_U[:,1] #-> 22450 rows
U_co=data_U[:,3] #-> 22450 rows
interp_grid = np.meshgrid(1000,1000)
newgrid = griddata((x_co, y_co), U_co, interp_grid, method='linear')

plt.imshow(newgrid.T, origin='lower')
plt.show()

如果你有一个统一的网格,我建议使用imshow代替contourf,因为它应该更快。