使用mayavi绘制从文件中读取的3d数据

时间:2015-11-21 21:08:43

标签: python sorting numpy grid mayavi

我有一个以下格式的数据文件:

x y z f(x) f(y) f(z)

我想用mayavi的contour3d绘制它:

def fill_array(output_array,source_array,nx,ny,nz,position):
    for i in range(nx):
        for j in range(ny):
            for k in range(nz):
                output_array[i][j][k] = source_array[i][j][k][position]

nx = 8
ny = 8
nz = 8

ndim = 6

x = np.zeros((nx,ny,nz))
y = np.zeros((nx,ny,nz))
z = np.zeros((nx,ny,nz))
fx = np.zeros((nx,ny,nz))
fy = np.zeros((nx,ny,nz))
fz = np.zeros((nx,ny,nz))

data_file = np.loadtxt('datafile')
f = np.reshape(data_file, (nx,ny,nz,ndim))
fill_array(x,f,nx,ny,nz,0))
fill_array(y,f,nx,ny,nz,1)
fill_array(z,f,nx,ny,nz,2)
fill_array(fx,f,nx,ny,nz,3)
fill_array(fy,f,nx,ny,nz,4)
fill_array(fz,f,nx,ny,nz,5)

f2 = fx**2 + fy**2 + fz**2
plot_data = mlab.contour3d(f2)
mlab.colorbar(plot_data,title='f2',orientation='vertical')
mlab.savefig('f.png',magnification=5)

当数据按顺序(x,y,z)网格数据排列时,这工作正常。但是,如果文件不按顺序写入,则会创建与有序数据(我知道是正确的)不匹配的图。可能是什么原因/解决方案?

当然我只想安排x,y,z,然后将功能值f(x),f(y),f(z)与其右侧位置(x,y,z)相关联。

0 个答案:

没有答案