.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "tutorial/02_mesh/a_lesson_mesh.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code or to run this example in your browser via Binder .. rst-class:: sphx-glr-example-title .. _sphx_glr_tutorial_02_mesh_a_lesson_mesh.py: Lesson Overview ~~~~~~~~~~~~~~~ This exercise provides an overview of the example in the initial lesson for you to try out! .. GENERATED FROM PYTHON SOURCE LINES 9-14 .. code-block:: Python import numpy as np import pyvista as pv from pyvista import examples .. GENERATED FROM PYTHON SOURCE LINES 16-21 What is a Point? ^^^^^^^^^^^^^^^^ Let’s start with a point cloud – this is a mesh type that only has vertices. You can create one by defining a 2D array of Cartesian coordinates like so: .. GENERATED FROM PYTHON SOURCE LINES 21-25 .. code-block:: Python points = np.random.rand(100, 3) points[:5, :] # output first 5 rows .. rst-class:: sphx-glr-script-out .. code-block:: none array([[0.29317083, 0.78732679, 0.15095965], [0.50576457, 0.16839412, 0.0695445 ], [0.00471359, 0.92851619, 0.11911979], [0.37926714, 0.74415264, 0.91484657], [0.56020373, 0.88690684, 0.04575484]]) .. GENERATED FROM PYTHON SOURCE LINES 26-27 Pass numpy array of points (n by 3) to PolyData .. GENERATED FROM PYTHON SOURCE LINES 27-30 .. code-block:: Python mesh = pv.PolyData(points) mesh .. raw:: html
PolyDataInformation
N Cells100
N Points100
N Strips0
X Bounds4.714e-03, 9.977e-01
Y Bounds2.567e-03, 9.955e-01
Z Bounds1.893e-02, 9.980e-01
N Arrays0


.. GENERATED FROM PYTHON SOURCE LINES 31-33 .. code-block:: Python mesh.plot(point_size=10, style="points") .. image-sg:: /tutorial/02_mesh/images/sphx_glr_a_lesson_mesh_001.png :alt: a lesson mesh :srcset: /tutorial/02_mesh/images/sphx_glr_a_lesson_mesh_001.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 34-36 But it’s important to note that most meshes have some sort of connectivity between points such as this gridded mesh: .. GENERATED FROM PYTHON SOURCE LINES 36-46 .. code-block:: Python mesh = examples.load_hexbeam() cpos = [(6.20, 3.00, 7.50), (0.16, 0.13, 2.65), (-0.28, 0.94, -0.21)] pl = pv.Plotter() pl.add_mesh(mesh, show_edges=True, color="white") pl.add_points(mesh.points, color="red", point_size=20, render_points_as_spheres=True) pl.camera_position = cpos pl.show() .. image-sg:: /tutorial/02_mesh/images/sphx_glr_a_lesson_mesh_002.png :alt: a lesson mesh :srcset: /tutorial/02_mesh/images/sphx_glr_a_lesson_mesh_002.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 47-55 .. code-block:: Python mesh = examples.download_bunny_coarse() pl = pv.Plotter() pl.add_mesh(mesh, show_edges=True, color="white") pl.add_points(mesh.points, color="red", point_size=10) pl.camera_position = [(0.02, 0.30, 0.73), (0.02, 0.03, -0.022), (-0.03, 0.94, -0.34)] pl.show() .. image-sg:: /tutorial/02_mesh/images/sphx_glr_a_lesson_mesh_003.png :alt: a lesson mesh :srcset: /tutorial/02_mesh/images/sphx_glr_a_lesson_mesh_003.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 56-64 What is a Cell? ^^^^^^^^^^^^^^^ A cell is the geometry between points that defines the connectivity or topology of a mesh. In the examples above, cells are defined by the lines (edges colored in black) connecting points (colored in red). For example, a cell in the beam example is a voxel defined by the region between eight points in that mesh: .. GENERATED FROM PYTHON SOURCE LINES 64-77 .. code-block:: Python mesh = examples.load_hexbeam() pl = pv.Plotter() pl.add_mesh(mesh, show_edges=True, color="white") pl.add_points(mesh.points, color="red", point_size=20) single_cell = mesh.extract_cells(mesh.n_cells - 1) pl.add_mesh(single_cell, color="pink", edge_color="blue", line_width=5, show_edges=True) pl.camera_position = [(6.20, 3.00, 7.50), (0.16, 0.13, 2.65), (-0.28, 0.94, -0.21)] pl.show() .. image-sg:: /tutorial/02_mesh/images/sphx_glr_a_lesson_mesh_004.png :alt: a lesson mesh :srcset: /tutorial/02_mesh/images/sphx_glr_a_lesson_mesh_004.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 78-81 Cells aren’t limited to voxels, they could be a triangle between three points, a line between two points, or even a single point could be its own cell (but that’s a special case). .. GENERATED FROM PYTHON SOURCE LINES 83-92 What are attributes? ^^^^^^^^^^^^^^^^^^^^ Attributes are data values that live on either the points or cells of a mesh. In PyVista, we work with both point data and cell data and allow easy access to data dictionaries to hold arrays for attributes that live either on all points or on all cells of a mesh. These attributes can be accessed in a dictionary-like attribute attached to any PyVista mesh accessible as one of the following: .. GENERATED FROM PYTHON SOURCE LINES 94-100 Point Data ~~~~~~~~~~ Point data refers to arrays of values (scalars, vectors, etc.) that live on each point of the mesh. Each element in an attribute array corresponds to a point in the mesh. Let’s create some point data for the beam mesh. When plotting, the values between points are interpolated across the cells. .. GENERATED FROM PYTHON SOURCE LINES 100-104 .. code-block:: Python mesh.point_data["my point values"] = np.arange(mesh.n_points) mesh.plot(scalars="my point values", cpos=cpos, show_edges=True) .. image-sg:: /tutorial/02_mesh/images/sphx_glr_a_lesson_mesh_005.png :alt: a lesson mesh :srcset: /tutorial/02_mesh/images/sphx_glr_a_lesson_mesh_005.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 105-110 Cell Data ~~~~~~~~~~ Cell data refers to arrays of values (scalars, vectors, etc.) that live throughout each cell of the mesh. That is the entire cell (2D face or 3D volume) is assigned the value of that attribute. .. GENERATED FROM PYTHON SOURCE LINES 110-114 .. code-block:: Python mesh.cell_data["my cell values"] = np.arange(mesh.n_cells) mesh.plot(scalars="my cell values", cpos=cpos, show_edges=True) .. image-sg:: /tutorial/02_mesh/images/sphx_glr_a_lesson_mesh_006.png :alt: a lesson mesh :srcset: /tutorial/02_mesh/images/sphx_glr_a_lesson_mesh_006.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 115-118 Here’s a comparison of point data versus cell data and how point data is interpolated across cells when mapping colors. This is unlike cell data which has a single value across the cell’s domain: .. GENERATED FROM PYTHON SOURCE LINES 118-131 .. code-block:: Python 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.link_views() pl.show() .. image-sg:: /tutorial/02_mesh/images/sphx_glr_a_lesson_mesh_007.png :alt: a lesson mesh :srcset: /tutorial/02_mesh/images/sphx_glr_a_lesson_mesh_007.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 132-136 Field Data ~~~~~~~~~~ Field data is not directly associated with either the points or cells but still should be attached to the mesh. This may be a string array storing notes. .. GENERATED FROM PYTHON SOURCE LINES 136-140 .. code-block:: Python mesh = pv.Cube() mesh.field_data['metadata'] = ['Foo', 'bar'] mesh.field_data .. rst-class:: sphx-glr-script-out .. code-block:: none pyvista DataSetAttributes Association : NONE Contains arrays : metadata Open In Colab .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 3.178 seconds) .. _sphx_glr_download_tutorial_02_mesh_a_lesson_mesh.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: binder-badge .. image:: images/binder_badge_logo.svg :target: https://mybinder.org/v2/gh/pyvista/pyvista-tutorial/gh-pages?urlpath=lab/tree/notebooks/tutorial/02_mesh/a_lesson_mesh.ipynb :alt: Launch binder :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: a_lesson_mesh.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: a_lesson_mesh.py ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_