绘制轮廓或轮廓中的预网格数据 - Python Matplotlib

时间:2015-02-20 16:34:46

标签: python numpy matplotlib

我认为这应该非常简单,但我似乎无法找到适用于我想做的文档或示例。我想绘制一个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()

有没有人有任何想法?我可以不进行网格化和插值,因为数据已经均匀分布了吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

我尝试在scipy中使用griddata而不是在matplotlib中使用griddata, 即代替: from matplotlib.mlab import griddata 采用: from scipy.interpolate import griddata) 这对我有用。