【发布时间】:2016-12-14 19:17:01
【问题描述】:
我想在同一个绘图中绘制多个表面,并让轴延伸到所有表面。
import numpy as np
# Create data with x and y random in the [-2, 2] segment, and z a
# Gaussian function of x and y.
np.random.seed(12345)
x = 4 * (np.random.random(500) - 0.5)
y = 4 * (np.random.random(500) - 0.5)
def f(x, y):
return np.exp(-(x ** 2 + y ** 2))
z = f(x, y)
from mayavi import mlab
myfig = mlab.figure(1, fgcolor=(0, 0, 0), bgcolor=(1, 1, 1))
for i in range(3):
z = z + 1
# Visualize the points
pts = mlab.points3d(x, y, z, z,figure=myfig, scale_mode='none', scale_factor=0.2)
# Create and visualize the mesh
mesh = mlab.pipeline.delaunay2d(pts,figure=myfig)
surf = mlab.pipeline.surface(mesh,figure=myfig)
pts.remove()
mlab.axes(figure=myfig)
mlab.show()
上面的代码是我尝试在所有表面上包含我的轴,但它没有这样做。
上面的图是我的代码的结果,它只将轴延伸到最后一个表面。我想我可以通过强制所有 mlab 函数指定要绘制到的图形来解决这个问题,但这无法在所有表面上扩展轴。
【问题讨论】:
-
通过使用 mayavi 的“管道”,您可以定义没有边界的对象(这里是网格),并且您不能使用“花哨”功能,例如自动轴。我建议您单独为您的网格生成数据,并改用 mayavi
mlab.surf函数。
标签: mayavi