2014-01-10 8 views
5

私はいくつかの実験データをプロットしようとしていますが、もっと長く説明されているように三角測量の問題に直面していますhere。私は解決策は、グリッドをxyからxzに変更し、yを標高として使用することであると考えています。Mayavi Delaunay三角法の使い方xyデータの代わりにxzデータを使用

私はそのような可能性に関する情報はありません。ですから、三角形分割のために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() 

答えて

1

あなたのデータの順序に依存しないようにscipyのダウンロードのドロネーのアルゴリズムを使用することができます。 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() 
関連する問題