Mayavi: mlab.axes() 在 Mayavi 4.5.0 中导致异常

创建于 2017-01-06  ·  9评论  ·  资料来源: enthought/mayavi

嗨,最近,我将 Mayavi 从 4.4.4 更新到 4.5.0。 更新后,我在使用mlab函数axes()时观察到异常。 这是一个测试代码(导致错误的行由注释指示):

from mayavi import mlab
from numpy import pi, sin, cos, mgrid
dphi, dtheta = pi/250.0, pi/250.0
[phi,theta] = mgrid[0:pi+dphi*1.5:dphi,0:2*pi+dtheta*1.5:dtheta]
m0 = 4; m1 = 3; m2 = 2; m3 = 3; m4 = 6; m5 = 2; m6 = 6; m7 = 4;
r = sin(m0*phi)**m1 + cos(m2*phi)**m3 + sin(m4*theta)**m5 + cos(m6*theta)**m7
x = r*sin(phi)*cos(theta)
y = r*cos(phi)
z = r*sin(phi)*sin(theta)
s = mlab.mesh(x, y, z)
mlab.axes(color=(0.9,0.9,0.9))       # LINE CAUSING ERROR
mlab.show()

在 Windows 和 anaconda 环境中运行上述代码时,我看到以下错误消息:

弹出消息(框):

Exception
In c:\anaconda\lib\site-packages\mayavi-4.5.0-py2.7-win-amd64.egg\tvtk\tvtk_base.py:569
TypeError: SetInputData argument 1:method requires a vtkDataSet, a vtkPolyDataNormals was provided. (in _wrap_call)

控制台窗口中的消息:

No handlers could be found for logger "mayavi.core.common"
Exception occurred in traits notification handler.
Please check the log file for details.
Exception occurred in traits notification handler for object: <mayavi.tools.decorations.Axes object at 0x0000000011AC00A0>, trait: extent, old value: [0 0 0 0 0 0], new value: [-1.53801118  1.53801118 -2.          2.27326963 -1.53801118  1.53801118]
Traceback (most recent call last):
  File "C:\Anaconda\lib\site-packages\traits\trait_notifiers.py", line 340, in __call__
    self.handler( *args )
  File "C:\Anaconda\lib\site-packages\mayavi-4.5.0-py2.7-win-amd64.egg\mayavi\tools\decorations.py", line 373, in _extent_changed
    axes.module_manager.source.outputs[0].bounds
AttributeError: 'PolyDataNormals' object has no attribute 'bounds'

额外的信息

上述异常发生的环境
操作系统:Windows 10
Python安装:使用Anaconda安装Python 2.7
Mayavi 软件包:mayavi 4.5.0 py27_0 menpo
VTK 包:vtk 7.0.0 py27_0 menpo
PyQt 包:pyqt 5.6.0 py27_1

以上代码运行环境OK
操作系统:Windows 7
Python 安装:使用 Anaconda 安装 Python 2.7
Mayavi 软件包:mayavi 4.4.4 py27_0 menpo
VTK 包:vtk 7.0.0 py27_0 menpo
PyQt 包:pyqt 4.11.4 py27_5

最有用的评论

如果仍然有任何兴趣,使用与 Jeitan 类似的配置,我只是遇到了同样的错误,并通过在 update_pipeline 中编辑 mayavi\modules\axes.py 来消除它,更改:
self.configure_input_data(self.axes, src.outputs[0])
到:
self.configure_input_data(self.axes, src.outputs[0].output)

(前者是 PolyDataNormals 类型,后者是 PolyData,它派生自 DataSet。)

所有9条评论

对于它的价值,我只是在以下条件下复制了这个错误:

操作系统:Windows 10
Python 安装:使用 Anaconda 安装 Python 2.7
Mayavi 软件包:mayavi 4.5.0 py27_0
VTK 包:vtk 6.3.0 py27_1
PyQt 包:pyqt 4.11.4 py27_4

如果我使用conda install mayavi=4.4降级 * 代码有效
Mayavi -> 4.4.0
VTK -> 5.10.1

*不相关的说明 - 这将 numpy 从 1.10 降级到 1.9.3,这会破坏 Spyder,因此您必须手动重新升级它

我在这里也有同样的问题。 没有人有线索吗?

如果仍然有任何兴趣,使用与 Jeitan 类似的配置,我只是遇到了同样的错误,并通过在 update_pipeline 中编辑 mayavi\modules\axes.py 来消除它,更改:
self.configure_input_data(self.axes, src.outputs[0])
到:
self.configure_input_data(self.axes, src.outputs[0].output)

(前者是 PolyDataNormals 类型,后者是 PolyData,它派生自 DataSet。)

我也遇到了这个问题。

@jdonegan您的建议解决了我的问题:+1

我也遇到了这个问题, @jdonegan的修复效果很好。 本来打算提交 PR,但看起来@prabhuramachandran已经推送了一个修复此问题的提交,而是将有问题的行替换为:
self.configure_input(self.axes, src.outputs[0])

也许这个问题应该关闭以防止混淆?

同样,同样的问题和类似的修复应该应用到decorations.py 中的第 373 行:
轴.轴.范围= \
axis.module_manager.source.outputs[0].output.bounds

解决错误
“AttributeError: 'PolyDataNormals' 对象没有属性 'bounds'”

所以我相信 commit 996fb25 只解决了部分问题。

正如@TinghuiWang 所指出的,这需要在多个地方修复。 但是,根据您的绘图调用(对我而言,它是 plot3d 与 points3d),您可能需要将其改回。 我将其修复如下:

mayavi\modules\axes.py 173 行的

self.configure_input_data(self.axes, src.outputs[0])

data = src.outputs[0] if not hasattr(src.outputs[0], 'output') else src.outputs[0].output
self.configure_input_data(self.axes, data)

同样在\mayavi\tools\decorations.py 372 行的

axes.axes.ranges = axes.module_manager.source.outputs[0].bounds

src = axes.module_manager.source
data = src.outputs[0] if not hasattr(src.outputs[0], 'output') else src.outputs[0].output
axes.axes.ranges = data.bounds

请修复它伙计们。 真正需要轴。

按照上面的方法,我只解决了一部分问题,我仍然有异常:
Exception occurred in traits notification handler for object: <mayavi.tools.decorations.Axes object at 0x11a41ce60>, trait: extent, old value: [0 0 0 0 0 0], new value: [ -2. 17. -2. 17. -4.85316642 6.54683358] NoneType: None

并且图像上没有轴标签。

任何人都可以帮忙吗? 谢谢!

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

rambalachandran picture rambalachandran  ·  9评论

yassersouri picture yassersouri  ·  5评论

GaelVaroquaux picture GaelVaroquaux  ·  13评论

relyativist picture relyativist  ·  16评论

Kekushke picture Kekushke  ·  9评论