我想在同一个图中绘制多个曲面,并让轴在所有曲面上延伸。
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函数指定要绘制的图形,但是无法在所有曲面上扩展轴。
答案 0 :(得分:0)
你可以计算对象的范围(这里只有z是未知的,你说x和y在(-2,2)中),并将它作为ranges
参数传递给mlab.axes()
:
mlab.axes(figure=myfig, ranges=[-2, 2, -2, 2, z.min(), z.max()])