【问题标题】:How to plot an interpolated scalar field on a 3D triangulated surface in Python如何在 Python 中绘制 3D 三角曲面上的插值标量场
【发布时间】:2019-10-18 17:09:08
【问题描述】:

我的问题如下:我有一个三角形表面,其数组X,Y,Z 包含网格顶点的坐标,数组Triangles 包含三角形每个角的顶点索引(即数组包含一个以顶点定义三角形的三元组)。此外,我有一个数组Field,其中包含网格每个顶点上的标量字段值。我希望在 Python 中绘制三角形网格,其中每个三角形根据其顶点的字段值进行着色。

我已经找到了解决此问题的方法,如果为每个三角形指定一种颜色(请参阅here)。如果我想在每个三角形的表面上插值字段值,以使网格具有连续(甚至更平滑)的着色,该怎么办?

我想使用 Matplotlib 的 tri_api,因为它也可以在三角网格上进行插值,但是我还没有找到适合我需要的解决方案。 This demo 很接近,但它仅限于平面并在矩形网格上进行插值。

当然,解决方案不一定需要 Matplotlib,它可以是任何其他 Python 库/工具箱。如有任何建议,我将不胜感激!

【问题讨论】:

    标签: python python-3.x matplotlib interpolation mesh


    【解决方案1】:

    3D 绘图很难,您可以使用其他软件工具,特别是 ParaView。不过,您首先必须将网格转换为 ParaView 可以使用的文件。为此,您可以例如使用meshio(我写的):

    import numpy
    import meshio
    
    points = numpy.array([
        [0.0, 0.0, 0.0],
        [0.0, 1.0, 0.0],
        [0.0, 0.0, 1.0],
        ])
    cells = {
        "triangle": numpy.array([
            [0, 1, 2]
            ])
        }
    meshio.write_points_cells(
        "foo.vtk",
        points,
        cells,
        point_data=point_data,
        )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-15
      • 2011-11-29
      • 1970-01-01
      • 1970-01-01
      • 2016-07-17
      • 1970-01-01
      • 2020-10-30
      • 1970-01-01
      相关资源
      最近更新 更多