如何在MayaVi中绘制适当的3D坐标轴,就像Matplotlib中的那些一样。

14
我想知道如何在MayaVi中创建适当的3D表面图轴。我能够创建的最佳轴看起来像this...

enter image description here

然而,如果我要做演示或者把它们放在海报上,这些看起来并不是很专业。

我希望坐标轴看起来像this...

enter image description here

这些坐标轴看起来比默认的MayaVi坐标轴更专业,更易读。


你使用的是哪个MayaVi版本? - Schorsch
1
你的问题基本上是“我不喜欢默认的mayavi轴,我该如何获得更好的轴?”在我看来,这并不是一个好问题,尽管它可能是一个重要的功能请求。你问题的答案是这就是VTK中轴的外观。如果你对它们不满意,你有几个选择。你可以寻找做你想要的不同库,你可以试着礼貌地问mayavi/vtk开发人员是否会实现你的功能,或者你可以自己编写它。 - aestrivex
2
刚遇到了同样的问题。虽然我同意“这就是VTK的外观”,但这并不是一个令人满意的答案。在我看来,这个问题使得Mayavi在科学应用中几乎无用,因为你永远不能发布这样奇怪的图表。我要寻找替代方案... R似乎很有前途。 - HansSnah
1个回答

9
我也遇到了这个问题。我通过不显示Mayavi的轴,并使用plot3d()绘制自己所需的轴来实现了一个糟糕的解决方法。
from mayavi import mlab
import numpy as np
xx = yy = zz = np.arange(-0.6,0.7,0.1)
xy = xz = yx = yz = zx = zy = np.zeros_like(xx)    
mlab.plot3d(yx,yy+lensoffset,yz,line_width=0.01,tube_radius=0.01)
mlab.plot3d(zx,zy+lensoffset,zz,line_width=0.01,tube_radius=0.01)
mlab.plot3d(xx,xy+lensoffset,xz,line_width=0.01,tube_radius=0.01)

现在,您可以使用text3d()添加标签和注释。这种方法可能不太优雅且有些粗暴,但在紧急情况下可以使用。


1
我认为那很好。只需将其存储为可调用的函数即可,不需要太多的暴力... ;) - K.-Michael Aye
这个答案救了我的一天,哈哈。 - WaterFox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接