PyVista:使用附加点更新 PolyData
PyVista: Update PolyData with additional points
我想向绘图仪中的 pyvista.PolyData
添加点(和单元格)。我尝试使用 Plotter.update_coordinates
函数,但这仅对大小相等的点数据有用:
import numpy as np
import pyvista as pv
import pyvistaqt
points = np.array([[1, 0, 0],
[2, 0, 0],
[3, 0, 0]])
point_cloud = pv.PolyData(points)
plotter = pyvistaqt.BackgroundPlotter()
a = plotter.add_points(point_cloud)
plotter.show()
new_points = np.array([[1, 0, 0],
[2, 0, 0],
[5, 0, 0],
[7, 0, 0]]) # Not updated in the plotter
plotter.update_coordinates(new_points, point_cloud, render=True)
似乎更新了点,但没有更新单元格。因此,绘图仪中仅修改了相应的单元格。
更新包含新(附加)点的 PolyData 的最佳做法是什么?
你说
I would like to add points (and cells) to the pyvista.PolyData
in the plotter
但这对我来说不是很清楚。您有两种选择:向 PolyData
添加更多点,然后绘制该网格,或者您可以向同一绘图仪添加两个不同的 PolyData
对象。
这里有两个选项:
import pyvista as pv
sphere_a = pv.Sphere()
sphere_b = sphere_a.translate((1, 0, 0), inplace=False)
# option 1: merge the PolyData
spheres = sphere_a + sphere_b
# alternatively: sphere_a += sphere_b for an in-place operation
spheres.plot() # plot the two spheres in one PolyData
# we could also use a Plotter for this
# option 2: add both PolyData to the same plotter
plotter = pv.Plotter()
plotter.add_mesh(sphere_a) # or add_points() for a point cloud
plotter.add_mesh(sphere_b)
plotter.show() # show the two spheres from two PolyData
附带说明一下,如果您只有点云(即没有单元格),则应考虑使用 the new PointSet
class。这需要 PyVista 0.34.0 和 VTK 9.1.0 或更高版本。
我想向绘图仪中的 pyvista.PolyData
添加点(和单元格)。我尝试使用 Plotter.update_coordinates
函数,但这仅对大小相等的点数据有用:
import numpy as np
import pyvista as pv
import pyvistaqt
points = np.array([[1, 0, 0],
[2, 0, 0],
[3, 0, 0]])
point_cloud = pv.PolyData(points)
plotter = pyvistaqt.BackgroundPlotter()
a = plotter.add_points(point_cloud)
plotter.show()
new_points = np.array([[1, 0, 0],
[2, 0, 0],
[5, 0, 0],
[7, 0, 0]]) # Not updated in the plotter
plotter.update_coordinates(new_points, point_cloud, render=True)
似乎更新了点,但没有更新单元格。因此,绘图仪中仅修改了相应的单元格。
更新包含新(附加)点的 PolyData 的最佳做法是什么?
你说
I would like to add points (and cells) to the
pyvista.PolyData
in the plotter
但这对我来说不是很清楚。您有两种选择:向 PolyData
添加更多点,然后绘制该网格,或者您可以向同一绘图仪添加两个不同的 PolyData
对象。
这里有两个选项:
import pyvista as pv
sphere_a = pv.Sphere()
sphere_b = sphere_a.translate((1, 0, 0), inplace=False)
# option 1: merge the PolyData
spheres = sphere_a + sphere_b
# alternatively: sphere_a += sphere_b for an in-place operation
spheres.plot() # plot the two spheres in one PolyData
# we could also use a Plotter for this
# option 2: add both PolyData to the same plotter
plotter = pv.Plotter()
plotter.add_mesh(sphere_a) # or add_points() for a point cloud
plotter.add_mesh(sphere_b)
plotter.show() # show the two spheres from two PolyData
附带说明一下,如果您只有点云(即没有单元格),则应考虑使用 the new PointSet
class。这需要 PyVista 0.34.0 和 VTK 9.1.0 或更高版本。