Mayavi 如何使用 xz 数据而不是 xy 数据进行 Delaunay三角测量



我正在尝试绘制一些实验数据,我面临着三角测量的问题,正如这里解释的那样。我发现解决方案可能是将网格从 xy 更改为 xz 网格,并使用 y 作为高程。

无论如何,我都没有关于这种可能性的信息。那么有没有办法做到这一点,也许通过使用一些掩码或一些过滤器来反转三角测量的 y 和 z 列?

这是一个基本代码:

import numpy
from mayavi import mlab
X2 = numpy.array([0, 0, 1, 1])
Y2 = numpy.array([0.5, 0.45, 1, 0.5])
Z2 = numpy.array([0, 1, 0.5,0])
fig = mlab.figure(1, bgcolor=(1, 1, 1), fgcolor=(0.5, 0.5, 0.5))
# Define the points in 3D space
# including color code based on Z coordinate.
pts = mlab.points3d(X2, Y2, Z2, Y2, colormap='jet')
# Triangulate based on X, Y with Delaunay 2D algorithm.
# Save resulting triangulation.
mesh = mlab.pipeline.delaunay2d(pts)
# Remove the point representation from the plot
pts.remove()
# Draw a surface based on the triangulation
surf = mlab.pipeline.surface(mesh, colormap='jet')
# Simple plot.
mlab.outline(extent=(0,1,0,1,0,1))
mlab.axes(extent=(0,1,0,1,0,1))
mlab.show()
您可以使用

SciPy 的 Delaunay 算法来独立于数据的顺序。 triangular_mesh()允许您为颜色图指定标量:

import numpy as np
from scipy.spatial import Delaunay
from mayavi import mlab
X2 = np.array([0, 0, 1, 1])
Y2 = np.array([0.5, 0.45, 1, 0.5])
Z2 = np.array([0, 1, 0.5,0])
# use scipy for delaunay:
p2d = np.vstack([X2,Y2]).T
d2d = Delaunay(p2d)
fig = mlab.figure(1, bgcolor=(1, 0.7, 1), fgcolor=(0.5, 0.5, 0.5))
# Generate triangular Mesh:
tmesh = mlab.triangular_mesh(X2, Y2, Z2, d2d.vertices,
                             scalars=Y2, colormap='jet')
# Simple plot.
mlab.outline(extent=(0,1,0,1,0,1))
mlab.axes(extent=(0,1,0,1,0,1))
mlab.show()

相关内容

  • 没有找到相关文章

最新更新