我认为这应该非常简单,但我似乎无法找到适用于我想做的文档或示例。我想绘制一个matplotlib contourf plot,它表示网格上每个点的属性值。数据已经均匀间隔(例如,间隔为1米) 数据保存在一个numpy数组中:
data = numpy.array([[x1,y1,z1],
[x2,y2,y3],
[x3.........etc
其中xn和yn值是坐标,zn表示我想要显示的值。有很多数据(高达1百万点)
我可以找到的所有示例都使用griddata,所以这就是我尝试使用的内容,但这对我来说似乎是一个不必要的开销,因为我的数据在此阶段之前已经很好地网格化了。无论如何 - 我试过了:
maxX = max(data[:,0])
minX = min(data[:,0])
maxY = max(data[:,1])
minY = min(data[:,1])
fig = plt.figure()
ax = fig.add_subplot(111)
xi = np.linspace(minX, maxX, maxX-minX+1)
yi = np.linspace(minY, maxY, maxY-minY+1)
zi = griddata(data[:,0],data[:,1], data[:,2], xi, yi, interp ='linear')
cont = ax.contourf(xi,yi,zi,15,cmap=plt.cm.jet)
plt.show()
但我收到运行时错误,"三角测量无效"
File "C:\Python27\lib\site-packages\matplotlib\tri\trifinder.py", line 81, in _initialize
self._cpp_trifinder.initialize()
有没有人有任何想法?我可以不进行网格化和插值,因为数据已经均匀分布了吗?
非常感谢
答案 0 :(得分:0)
我尝试在scipy中使用griddata而不是在matplotlib中使用griddata,
即代替:
from matplotlib.mlab import griddata
采用:
from scipy.interpolate import griddata
)
这对我有用。