我有一个包含一百万行的三列(x像素,y像素,z值)数据。数据来自图像,并且存在重复的z值。现在我需要制作表面图。 This image就是一个很好的例子。但现在输出图像为空。有人可以检查代码吗?
import numpy as np
from enthought.mayavi import mlab
from scipy.interpolate import griddata
x,y,z = np.loadtxt('test.csv',delimiter=',',usecols=(0,1,2),unpack=True)
xi,yi = np.mgrid[0:3000:3000j, 0:3000:3000j]
zi = griddata((x, y), z, (xi, yi),method='linear')
mlab.surf(xi,yi,zi)
mlab.show()
答案 0 :(得分:4)
我没有数据就无法检查代码,但我怀疑问题是你使用默认的fill_value=nan
作为griddata
参数,所以如果你有网格点扩展超出(x,y)点的空间,网格中有NaN,mlab可能无法处理(matplotlib不容易)。尝试设置fill_value=0
或其他合适的实数。