Pyvista plot_over_line 提取数据的替代方法
我有一组来自CFD模拟的3D数据,格式是.vtk。为了绘制一组点数据的值,我想使用pyvista中的plot_over_line功能。一般来说,这个功能运行得很好,跟着类似的例子来做没有问题(参考这个链接:https://docs.pyvista.org/version/stable/examples/02-plot/plot-over-line#sphx-glr-examples-02-plot-plot-over-line-py)。
#Load mesh
mesh = examples.download_kitchen()
#Make points
a = [mesh.bounds[0], mesh.bounds[2], mesh.bounds[4]]
b = [mesh.bounds[1], mesh.bounds[3], mesh.bounds[5]]
#Make line
line = pv.Line(a, b)
#Plot
test = mesh.plot_over_line(a, b, resolution=100)
不过,我更希望能提取出plot_over_line函数绘制的数据(x和y值),因为提取出数据后,我可以在后续绘图时有更多的灵活性(比如颜色、与其他解决方案进行比较等等)。我该怎么做呢?
1 个回答
你想要使用 sample_over_line
来进行简单的线性取样。plot_over_line
在内部其实是调用了 sample_over_line
。你可以查看这个链接了解更多信息:https://github.com/pyvista/pyvista/blob/3d6e327a7c43d9035ad54de936228f3ac7c5a88a/pyvista/core/filters/data_set.py#L4440-L4442。需要注意的是,数据中会添加一个 'Distance'
字段,以便你在后续处理时使用。
如果你需要更灵活的功能,比如在一条线上以任意间隔进行取样,你可以使用 sample
。实际上,sample_over_line
也是在内部调用了 sample
。更多信息可以查看这个链接:https://github.com/pyvista/pyvista/blob/3d6e327a7c43d9035ad54de936228f3ac7c5a88a/pyvista/core/filters/data_set.py#L4369。