属性是存在于网格的点或单元上的数据值。在 PyVista 中,我们处理点数据和单元数据,并允许轻松访问数据字典,以保存在网格的所有点或所有单元上的属性数组。这些属性可以在附加到任何 PyVista 网格的类似字典的属性中访问,可访问为以下之一:
点数据
点数据是指存在于网格每个点上的值数组(标量、向量等)。属性数组中的每个元素对应于网格中的一个点。让我们为梁网格创建一些点数据。绘制时,点之间的值在单元上插值。
code.matlab
mesh.point_data['my point values'] = np.arange(mesh.n_points)
mesh.plot(scalars='my point values', cpos=cpos, show_edges=True)
\[\]
单元数据
单元数据是指存在于网格每个单元上的值数组(标量、向量等)。即整个单元(2D 面或 3D 体积)被赋予该属性的值。
code.matlab
mesh.cell_data['my cell values'] = np.arange(mesh.n_cells)
mesh.plot(scalars='my cell values', cpos=cpos, show_edges=True)
\[\]
这里是点数据与单元数据的比较,以及点数据如何在映射颜色时在单元上插值。这与单元数据不同,单元数据在单元域上具有单一值:
code.matlab
import pyvista as pv
from pyvista import examples
uni = examples.load_uniform()
pl = pv.Plotter(shape=(1, 2), border=False)
pl.add_mesh(uni, scalars='Spatial Point Data', show_edges=True)
pl.subplot(0, 1)
pl.add_mesh(uni, scalars='Spatial Cell Data', show_edges=True)
pl.show()
\[\]
字段数据
字段数据不直接与点或单元关联,但仍应附加到网格。这可能是存储注释的字符串数组,甚至是碰撞的索引。
将标量分配给网格
以下是我们如何将值分配给单元属性并绘制它。这里,我们生成一个包含 6 个面的立方体,并为每个面分配一个从 range(6) 的整数,然后将其绘制。
注意这与为每个点分配标量有何不同
code.matlab
cube = pv.Cube()
cube.cell_data['myscalars'] = range(6)
other_cube = cube.copy()
other_cube.point_data['myscalars'] = range(8)
pl = pv.Plotter(shape=(1, 2), border_width=1)
pl.add_mesh(cube, cmap='coolwarm')
pl.subplot(0, 1)
pl.add_mesh(other_cube, cmap='coolwarm')
pl.show()
\[\]