【问题标题】:Plot Axes for Multiple Surfaces in the same Mayavi figure?在同一个 Mayavi 图中绘制多个曲面的轴?
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    • 2023-02-15
    • 1970-01-01
    • 1970-01-01
    • 2022-12-21
    • 1970-01-01
    • 2021-07-18
    相关资源
    最近更新 更多