如何在Python中的3D三角曲面上绘制插值的标量场

时间:2019-05-16 11:51:52

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

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

如果为每个三角形分配单一颜色(请参阅here),我已经找到了解决此问题的方法。如果我想内插每个单个三角形表面上的字段值,以便对网格进行连续(甚至更平滑)着色,

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

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

1 个答案:

答案 0 :(得分:0)

用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,
    )