我需要绘制 3D 标量场的切片。例如,我有一个格式为:
x1, y1, z1, f1 x2, y2, z2, f2 ...
其中 fs 是标量,x, y, z 是坐标(z 是最快的坐标)。我想得到这个 3D 数据和某个平面之间的交点,然后将它们提供给 matplotlib。但首先我需要插入数据......你能告诉我怎么做吗?可能有一些关于这个主题的链接。
任何建议将不胜感激!
谢谢
我需要绘制 3D 标量场的切片。例如,我有一个格式为:
x1, y1, z1, f1 x2, y2, z2, f2 ...
其中 fs 是标量,x, y, z 是坐标(z 是最快的坐标)。我想得到这个 3D 数据和某个平面之间的交点,然后将它们提供给 matplotlib。但首先我需要插入数据......你能告诉我怎么做吗?可能有一些关于这个主题的链接。
任何建议将不胜感激!
谢谢
对于插值,使用来自 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,它(除其他外)正是这样做的。