我需要绘制3D标量场的切片。例如,我有一个格式为
的文件x1, y1, z1, f1 x2, y2, z2, f2 ...
其中fs是标量,x,y,z是坐标(z是最快的坐标)。我想得到这个3D数据和某个平面之间的交点,然后将它们提供给matplotlib。但首先我需要插入数据......你能告诉我怎么做吗?可能在这个问题上有一些链接。
任何建议都将不胜感激!
由于
答案 0 :(得分:0)
对于插值,请使用scipy.interpolate中的griddata:
此页面提供了一个非常好的示例,该功能的签名非常接近您的数据。
您仍然需要以某种方式定义要为其插入数据的平面上的点。如果你有一个x,y-> z形式的函数描述你的飞机,你可以使用np.mgrid:
x_values,y_values = np.mgrid [xmin:xmax:100j,ymin:ymax:100j] z_values = plane_function(x_values,y_values)
并将它们用作griddata的输入。
然而,对于像这样的情况,VTK(或Python,TVTK和MayaVi2)可能是更好的选择。具有针对3d数据的优化算法,并且可以提供可以拖动体积数据的交互式切割平面。我在我的程序PyLocator中使用VTK,其中(除其他外)确实如此。