我正在将VTK统一网格读入python。当我在Paraview中可视化数据的切片时,我得到了以下(正确的)图像:
![VTK屏幕截图](https://i.sstatic.net/Og2St.png)
然后,我使用以下脚本通过numpy和pylab可视化切片:
导入vtk从vtk.util.numpy_support导入vtk_to_numpy进口塔架imr=vtk.vtkXML图像数据读取器()imr公司。设置文件名('flow.vti')imr公司。更新()im=最小值。获取输出()nx,ny,nz=最小值。获取维度()原始=im。获取原始()范围=im。获取范围()间距=im。获取间距()流量Vtk=im。获取点数据()。GetArray(“|flow|”)流量=vtk_to_numpy(flowVtk).重塑(nx,ny,nz)#底部z切片flowZ0=流量[:,:,0]#设置范围,使轴单位为物理单位img=pylab.imshow(flowZ0,范围=[orig[0],orig[0]+范围[1]*间距[0],orig[1],orig[1]+范围[3]*间距[1],cmap=pylab.gray())img.set_clim(vmin=0,vmax=1000)pylab.show()
![pylab输出](https://i.sstatic.net/iDUGR.png)
这似乎是不同步的。我尝试在中重新排序维度重塑(…)
,它做了一些事情,但从未显示实际应该显示的数据。
有什么明显的问题吗?
编辑:我也试过了重塑((nx,ny,nz),顺序=“F”)
(fortran排序),现在我得到了一个更好的图像(使用喷射彩色地图以获得更好的清晰度)
这几乎是正确的,但数据被可疑地旋转了90°,另外我想得到一些权威性的解释,说明使用哪个命令以及为什么(VTK内部使用哪个命令?)。
EDIT2(编辑2):要获得与Paraview中相同的视图,我必须这样做皮拉布·伊姆秀(np.rot90(流程Z0))
; 不知道为什么,所以问题仍然存在:
![fortran并旋转90度](https://i.sstatic.net/BV7Ob.png)