在同一个Mayavi图中绘制多个曲面的轴?

时间:2016-12-14 19:17:01

标签: mayavi

我想在同一个图中绘制多个曲面,并让轴在所有曲面上延伸。

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()

上面的代码是我试图将我的轴包含在所有表面上,但它没有这样做。

enter image description here

上面的图是我的代码的结果,它只扩展了最后一个表面上的轴。我想我可以解决这个问题,强制所有mlab函数指定要绘制的图形,但是无法在所有曲面上扩展轴。

1 个答案:

答案 0 :(得分:0)

你可以计算对象的范围(这里只有z是未知的,你说x和y在(-2,2)中),并将它作为ranges参数传递给mlab.axes()

mlab.axes(figure=myfig, ranges=[-2, 2, -2, 2, z.min(), z.max()])